spacecode 0.0.0-stage → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +24410 -0
- package/dist/index.js.map +7 -0
- package/dist/mcp/index.js +6521 -0
- package/dist/mcp/index.js.map +7 -0
- package/dist/repl.mjs +96566 -0
- package/package.json +34 -4
- package/README.md +0 -3
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/posthog.ts", "../src/sync/payload-size.ts", "../../shared/src/types/remote.ts", "../src/utils/signals.ts", "../src/api/client.ts", "../src/config.ts", "../src/utils/env.ts", "../../shared/dist/types/session.js", "../../shared/dist/types/project.js", "../../shared/dist/types/user.js", "../../shared/src/types/api.ts", "../../shared/src/types/sandbox.ts", "../../shared/src/types/agent.ts", "../../shared/src/types/index.ts", "../../shared/src/utils/region.ts", "../../shared/src/utils/validation.ts", "../../shared/src/utils/index.ts", "../../shared/src/auth/jwt.ts", "../../shared/src/auth/index.ts", "../../shared/src/index.ts", "../src/sessions.ts", "../src/utils/exec.ts", "../src/sync/config.ts", "../../sandbox-client/src/types.ts", "../../sandbox-client/src/client.ts", "../../sandbox-client/src/index.ts", "../../../node_modules/ws/lib/constants.js", "../../../node_modules/ws/lib/buffer-util.js", "../../../node_modules/ws/lib/limiter.js", "../../../node_modules/ws/lib/permessage-deflate.js", "../../../node_modules/ws/lib/validation.js", "../../../node_modules/ws/lib/receiver.js", "../../../node_modules/ws/lib/sender.js", "../../../node_modules/ws/lib/event-target.js", "../../../node_modules/ws/lib/extension.js", "../../../node_modules/ws/lib/websocket.js", "../../../node_modules/ws/lib/stream.js", "../../../node_modules/ws/lib/subprotocol.js", "../../../node_modules/ws/lib/websocket-server.js", "../../../node_modules/ws/wrapper.mjs", "../src/utils/ws-terminal.ts", "../src/commands/launch.ts", "../src/commands/list.ts", "../src/commands/status.ts", "../src/commands/stop.ts", "../src/commands/destroy.ts", "../src/commands/clean.ts", "../src/utils/validation.ts", "../src/utils/task.ts", "../src/utils/run-setup.ts", "../src/utils/remote-task.ts", "../src/commands/exec.ts", "../src/commands/run.ts", "../src/commands/exec-batch.ts", "../src/commands/tasks.ts", "../src/sync/github-sync.ts", "../src/sync/progress-parser.ts", "../src/commands/sync.ts", "../src/commands/attach.ts", "../src/agent/markdown.ts", "../src/agent/renderer.ts", "../src/agent/client.ts", "../src/agent/file-sync.ts", "../src/agent/history.ts", "../src/agent/slash-commands.ts", "../src/agent/init.ts", "../src/commands/auth.ts", "../src/commands/agent.ts", "../src/agent/interactive.ts", "../src/interactive.ts", "../src/commands/token.ts", "../../../node_modules/@inquirer/core/dist/esm/lib/key.js", "../../../node_modules/@inquirer/core/dist/esm/lib/errors.js", "../../../node_modules/@inquirer/core/dist/esm/lib/hook-engine.js", "../../../node_modules/@inquirer/core/dist/esm/lib/use-state.js", "../../../node_modules/@inquirer/core/dist/esm/lib/use-effect.js", "../../../node_modules/yoctocolors-cjs/index.js", "../../../node_modules/@inquirer/figures/dist/esm/index.js", "../../../node_modules/@inquirer/core/dist/esm/lib/theme.js", "../../../node_modules/@inquirer/core/dist/esm/lib/make-theme.js", "../../../node_modules/@inquirer/core/dist/esm/lib/use-prefix.js", "../../../node_modules/@inquirer/core/dist/esm/lib/use-memo.js", "../../../node_modules/@inquirer/core/dist/esm/lib/use-ref.js", "../../../node_modules/@inquirer/core/dist/esm/lib/use-keypress.js", "../../../node_modules/cli-width/index.js", "../../../node_modules/string-width/node_modules/ansi-regex/index.js", "../../../node_modules/string-width/node_modules/strip-ansi/index.js", "../../../node_modules/string-width/node_modules/is-fullwidth-code-point/index.js", "../../../node_modules/emoji-regex/index.js", "../../../node_modules/string-width/index.js", "../../../node_modules/@inquirer/core/node_modules/ansi-regex/index.js", "../../../node_modules/@inquirer/core/node_modules/strip-ansi/index.js", "../../../node_modules/color-name/index.js", "../../../node_modules/color-convert/conversions.js", "../../../node_modules/color-convert/route.js", "../../../node_modules/color-convert/index.js", "../../../node_modules/@inquirer/core/node_modules/ansi-styles/index.js", "../../../node_modules/@inquirer/core/node_modules/wrap-ansi/index.js", "../../../node_modules/@inquirer/core/dist/esm/lib/utils.js", "../../../node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js", "../../../node_modules/mute-stream/lib/index.js", "../../../node_modules/@inquirer/core/node_modules/signal-exit/src/signals.ts", "../../../node_modules/@inquirer/core/node_modules/signal-exit/src/index.ts", "../../../node_modules/@inquirer/ansi/dist/esm/index.js", "../../../node_modules/@inquirer/core/dist/esm/lib/screen-manager.js", "../../../node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js", "../../../node_modules/@inquirer/core/dist/esm/lib/create-prompt.js", "../../../node_modules/@inquirer/core/dist/esm/lib/Separator.js", "../../../node_modules/@inquirer/core/dist/esm/index.js", "../../../node_modules/@inquirer/checkbox/dist/esm/index.js", "../../../node_modules/chardet/src/fs/node.ts", "../../../node_modules/chardet/src/match.ts", "../../../node_modules/chardet/src/encoding/ascii.ts", "../../../node_modules/chardet/src/encoding/utf8.ts", "../../../node_modules/chardet/src/encoding/unicode.ts", "../../../node_modules/chardet/src/encoding/mbcs.ts", "../../../node_modules/chardet/src/encoding/sbcs.ts", "../../../node_modules/chardet/src/encoding/iso2022.ts", "../../../node_modules/chardet/src/utils.ts", "../../../node_modules/chardet/src/index.ts", "../../../node_modules/safer-buffer/safer.js", "../../../node_modules/iconv-lite/lib/bom-handling.js", "../../../node_modules/iconv-lite/lib/helpers/merge-exports.js", "../../../node_modules/iconv-lite/encodings/internal.js", "../../../node_modules/iconv-lite/encodings/utf32.js", "../../../node_modules/iconv-lite/encodings/utf16.js", "../../../node_modules/iconv-lite/encodings/utf7.js", "../../../node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../node_modules/iconv-lite/encodings/sbcs-data.js", "../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../node_modules/iconv-lite/encodings/tables/shiftjis.json", "../../../node_modules/iconv-lite/encodings/tables/eucjp.json", "../../../node_modules/iconv-lite/encodings/tables/cp936.json", "../../../node_modules/iconv-lite/encodings/tables/gbk-added.json", "../../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json", "../../../node_modules/iconv-lite/encodings/tables/cp949.json", "../../../node_modules/iconv-lite/encodings/tables/cp950.json", "../../../node_modules/iconv-lite/encodings/tables/big5-added.json", "../../../node_modules/iconv-lite/encodings/dbcs-data.js", "../../../node_modules/iconv-lite/encodings/index.js", "../../../node_modules/iconv-lite/lib/streams.js", "../../../node_modules/iconv-lite/lib/index.js", "../../../node_modules/@inquirer/external-editor/dist/esm/errors/CreateFileError.js", "../../../node_modules/@inquirer/external-editor/dist/esm/errors/LaunchEditorError.js", "../../../node_modules/@inquirer/external-editor/dist/esm/errors/ReadFileError.js", "../../../node_modules/@inquirer/external-editor/dist/esm/errors/RemoveFileError.js", "../../../node_modules/@inquirer/external-editor/dist/esm/index.js", "../../../node_modules/@inquirer/editor/dist/esm/index.js", "../../../node_modules/@inquirer/confirm/dist/esm/index.js", "../../../node_modules/@inquirer/input/dist/esm/index.js", "../../../node_modules/@inquirer/number/dist/esm/index.js", "../../../node_modules/@inquirer/expand/dist/esm/index.js", "../../../node_modules/@inquirer/rawlist/dist/esm/index.js", "../../../node_modules/@inquirer/password/dist/esm/index.js", "../../../node_modules/@inquirer/search/dist/esm/index.js", "../../../node_modules/@inquirer/select/dist/esm/index.js", "../../../node_modules/@inquirer/prompts/dist/esm/index.js", "../src/commands/sentry.ts", "../src/commands/config.ts", "../src/commands/analytics.ts", "../src/commands/repl.ts", "../src/commands/headless.ts", "../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * PostHog error monitoring for the spacecode CLI (replaces Sentry, 2026-10-09).\n *\n * Dependency-free: posts events to PostHog's `/capture/` endpoint with `fetch`.\n * Opt-in: no-op unless `POSTHOG_API_KEY` is set (never hardcoded). Send\n * failures are logged to stderr only when SPACECODE_DEBUG is set, since a CLI\n * must not spam users because telemetry is unreachable.\n */\n\ntype Level = 'debug' | 'info' | 'warning' | 'error';\n\nlet apiKey: string | undefined;\nlet host = 'https://us.i.posthog.com';\nconst breadcrumbs: Array<Record<string, unknown>> = [];\n\nexport function initPostHog(): void {\n apiKey = process.env.POSTHOG_API_KEY || undefined;\n host = (process.env.POSTHOG_HOST || host).replace(/\\/+$/, '');\n if (process.env.NODE_ENV === 'development' && !process.env.POSTHOG_ENABLE) {\n apiKey = undefined;\n }\n}\n\nfunction send(event: string, properties: Record<string, unknown>): void {\n if (!apiKey) return;\n // Observational telemetry: fire-and-forget, never blocks or throws.\n fetch(`${host}/capture/`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n api_key: apiKey,\n event,\n distinct_id: 'spacecode-cli',\n timestamp: new Date().toISOString(),\n properties: {\n service: 'cli',\n $lib: 'spacecode-monitoring',\n environment: process.env.NODE_ENV || 'production',\n breadcrumbs: breadcrumbs.slice(-50),\n ...properties,\n },\n }),\n }).catch((err) => {\n if (process.env.SPACECODE_DEBUG) console.error('[posthog] capture failed:', err);\n });\n}\n\nexport function logInfo(message: string, attributes?: Record<string, unknown>): void {\n send('cli_log', { level: 'info', message, ...attributes });\n}\n\nexport function logWarning(message: string, attributes?: Record<string, unknown>): void {\n send('cli_log', { level: 'warning', message, ...attributes });\n}\n\nexport function logError(message: string, attributes?: Record<string, unknown>): void {\n send('cli_log', { level: 'error', message, ...attributes });\n}\n\nexport function captureException(error: Error, context?: Record<string, unknown>): void {\n send('$exception', {\n $exception_list: [{ type: error.name, value: error.message, stacktrace: { type: 'raw', frames: [], raw: error.stack } }],\n $exception_level: 'error',\n ...context,\n });\n}\n\nexport function addBreadcrumb(message: string, category?: string, level?: Level): void {\n breadcrumbs.push({ message, category: category || 'cli', level: level || 'info', ts: new Date().toISOString() });\n if (breadcrumbs.length > 50) breadcrumbs.shift();\n}\n", "/** Pure pre-flight check for the sandbox-create request body (Cloudflare rejects oversized bodies with a bare 413). */\nexport const MAX_SYNC_PAYLOAD_BYTES = 50 * 1024 * 1024;\n\nexport interface SyncFileLike {\n path: string;\n content: string;\n}\n\nexport function checkSyncPayload(\n files: SyncFileLike[],\n maxBytes: number = MAX_SYNC_PAYLOAD_BYTES,\n): { totalBytes: number; largest: { path: string; bytes: number }[] } {\n const sized = files.map((f) => ({ path: f.path, bytes: Buffer.byteLength(f.content, 'utf-8') }));\n const totalBytes = sized.reduce((sum, f) => sum + f.bytes, 0);\n const largest = [...sized].sort((a, b) => b.bytes - a.bytes).slice(0, 5);\n if (totalBytes > maxBytes) {\n const mb = (n: number) => (n / 1024 / 1024).toFixed(1);\n throw new Error(\n `Config sync payload is ${mb(totalBytes)} MB (limit ${mb(maxBytes)} MB). Largest files:\\n` +\n largest.map((f) => ` ${mb(f.bytes)} MB ${f.path}`).join('\\n') +\n `\\nRemove or shrink these files and retry.`,\n );\n }\n return { totalBytes, largest };\n}\n", "/**\n * Types for CLI remote task execution.\n *\n * These types define the domain model for remote task dispatch, status\n * tracking, batch operations, and wait-for-completion workflows.\n */\n\nexport interface Config {\n region?: string;\n size?: string;\n idleTimeout?: number; // Minutes of inactivity before auto-shutdown (0 = disabled)\n apiUrl?: string; // Backend API URL\n}\n\nexport const DEFAULT_REGION = 'iad';\nexport const DEFAULT_SIZE = 'performance-8x'; // 8 dedicated CPUs, 16GB RAM\n\n// API proxy for round-robin token rotation (avoids rate limits)\nexport const API_PROXY_URL = 'https://api.spacecode.app';\n\n// Default backend API URL (Cloudflare Workers deployed backend)\nexport const DEFAULT_API_URL = 'https://backend.spacecode.app';\n\n// Sandbox Worker URL for headless task invocation\nexport const SANDBOX_WORKER_URL = typeof process !== 'undefined' && process.env?.SANDBOX_WORKER_URL\n ? process.env.SANDBOX_WORKER_URL\n : 'https://tty.spacecode.app';\n\n/** Proxy routing mode */\nexport type ProxyMode = 'legacy' | 'pipeline';\n\n/** Build the proxy URL based on mode. Legacy mode adds /legacy prefix. */\nexport function getProxyUrl(mode: ProxyMode = 'pipeline'): string {\n return mode === 'legacy' ? `${API_PROXY_URL}/legacy` : API_PROXY_URL;\n}\n\n/** Mode for remote VMs */\nexport type ClaudeMode = 'interactive' | 'task' | 'worker';\n\n/** Status of a remote task */\nexport type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n\n/** A remote task dispatched to a VM */\nexport interface RemoteTask {\n id: string;\n machineId: string;\n machineName: string;\n repo: string;\n prompt: string;\n mode: 'exec' | 'stream' | 'headless';\n status: TaskStatus;\n region: string;\n size: string;\n createdAt: string;\n completedAt?: string;\n exitCode?: number;\n prUrl?: string;\n branch?: string;\n error?: string;\n groupId?: string;\n committed?: boolean;\n pushed?: boolean;\n}\n\n/** Usage tracking history */\nexport interface UsageHistory {\n totalSessions: number;\n lastSessionAt?: string;\n}\n\n/** Options for the task dispatch commands */\nexport interface TaskOptions {\n repo: string;\n prompt: string;\n idleTimeout?: number;\n branch?: string;\n noCommit?: boolean;\n proxyMode?: ProxyMode;\n region?: string;\n size?: string;\n memoryMb?: number;\n}\n\n/** Specification for a single task in a batch dispatch */\nexport interface BatchTaskSpec {\n repo: string;\n prompt: string;\n branch?: string;\n region?: string;\n size?: string;\n}\n\n/** Result of dispatching a single task within a batch */\nexport interface BatchTaskResult {\n taskId: string;\n repo: string;\n branch: string;\n status: 'dispatched' | 'failed';\n machineId?: string;\n error?: string;\n}\n\n/** Result of a batch dispatch operation */\nexport interface BatchDispatchResult {\n groupId: string;\n total: number;\n dispatched: number;\n failed: number;\n tasks: BatchTaskResult[];\n}\n\n/** Result of waiting for tasks to complete */\nexport interface WaitResult {\n completed: number;\n failed: number;\n cancelled: number;\n timedOut: boolean;\n tasks: Array<{\n taskId: string;\n repo: string;\n branch?: string;\n status: TaskStatus;\n prUrl?: string;\n error?: string;\n durationSeconds?: number;\n }>;\n}\n\n/** Structured result from headless mode (--output-format json). */\nexport interface HeadlessResult {\n taskId: string;\n repo: string;\n branch?: string;\n result: string;\n exitCode: number;\n success: boolean;\n diff: string;\n durationSeconds: number;\n error?: string;\n}\n", "/**\n * Signal handling utilities for graceful shutdown\n */\n\nimport chalk from 'chalk';\n\nexport interface SignalHandlerOptions {\n /** Cleanup function to call when signal is received */\n cleanup: (signal?: string) => Promise<void>;\n /** Whether to log cleanup messages (default: true) */\n logCleanup?: boolean;\n}\n\n/**\n * Create a signal handler that calls cleanup and exits with appropriate code.\n * Includes a guard to prevent re-entrant cleanup if a second signal arrives\n * while the first cleanup is still running.\n */\nexport function createSignalHandler(\n cleanup: SignalHandlerOptions['cleanup'],\n logCleanup = true\n): (signal: string) => void {\n let isCleaningUp = false;\n\n return (signal: string) => {\n if (isCleaningUp) {\n if (logCleanup) {\n console.log(chalk.dim('\\nCleanup already in progress, please wait...'));\n }\n return;\n }\n isCleaningUp = true;\n\n if (logCleanup) {\n console.log(chalk.dim(`\\n\\nReceived ${signal}, cleaning up...`));\n }\n cleanup(signal)\n .then(() => {\n process.exit(signal === 'SIGINT' ? 130 : 143);\n })\n .catch((err) => {\n console.error(chalk.red(`Cleanup error: ${err}`));\n process.exit(1);\n });\n };\n}\n\n/** Tracks registered handlers so we can remove only ours (not all listeners). */\nconst registeredHandlers = new Map<NodeJS.Signals, (signal: string) => void>();\n\n/**\n * Register signal handlers for graceful shutdown\n *\n * @param signals - Signals to handle (default: SIGINT, SIGTERM, SIGHUP)\n * @param handler - Handler function to call on signal\n */\nexport function registerSignalHandlers(\n handler: (signal: string) => void,\n signals: NodeJS.Signals[] = ['SIGINT', 'SIGTERM', 'SIGHUP']\n): void {\n for (const signal of signals) {\n registeredHandlers.set(signal, handler);\n process.on(signal, handler);\n }\n}\n\n/**\n * Remove only the signal handlers we registered (not all listeners).\n *\n * @param signals - Signals to remove handlers for (default: SIGINT, SIGTERM, SIGHUP)\n */\nexport function removeSignalHandlers(\n signals: NodeJS.Signals[] = ['SIGINT', 'SIGTERM', 'SIGHUP']\n): void {\n for (const signal of signals) {\n const handler = registeredHandlers.get(signal);\n if (handler) {\n process.removeListener(signal, handler);\n registeredHandlers.delete(signal);\n }\n }\n}\n", "/**\n * Backend API client for Cloudflare Workers backend\n */\n\nimport type {\n User,\n Agent,\n CreateAgentResponse,\n ConfigKey,\n ConfigGetResponse,\n ConfigListResponse,\n} from './types.js';\nimport type { AuthConfig } from '../config.js';\nimport { DEFAULT_API_URL } from '@spacecode/shared/remote';\n\n/**\n * Request timeout in milliseconds\n */\nconst REQUEST_TIMEOUT_MS = 30_000;\n\n/**\n * Custom error classes for API errors\n */\nexport class AuthError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AuthError';\n }\n}\n\nexport class RateLimitError extends Error {\n retryAfter: Date;\n constructor(message: string, retryAfter: Date) {\n super(message);\n this.name = 'RateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport class ApiError extends Error {\n status: number;\n type?: string;\n constructor(message: string, status: number, type?: string) {\n super(message);\n this.name = 'ApiError';\n this.status = status;\n this.type = type;\n }\n}\n\n/**\n * Backend API client\n */\nexport class BackendApiClient {\n private baseUrl: string;\n private token?: string;\n\n constructor(baseUrl?: string, token?: string) {\n this.baseUrl = baseUrl ?? process.env.SPACECODE_API_URL ?? DEFAULT_API_URL;\n this.token = token;\n }\n\n /**\n * Set JWT token for authentication\n */\n setToken(token: string): void {\n this.token = token;\n }\n\n /**\n * Get current token\n */\n getToken(): string | undefined {\n return this.token;\n }\n\n /**\n * Clear token (logout)\n */\n clearToken(): void {\n this.token = undefined;\n }\n\n /**\n * Check if token is set and potentially valid\n * Note: This doesn't validate with the server, just checks local state\n */\n hasToken(): boolean {\n return !!this.token;\n }\n\n /**\n * Make an authenticated API request\n */\n private async request<T>(\n path: string,\n options: RequestInit = {}\n ): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n\n const headers: Record<string, string> = {\n ...(options.headers as Record<string, string> | undefined),\n };\n\n if (this.token) {\n headers['Authorization'] = `Bearer ${this.token}`;\n }\n\n // Interim shared-token gate on the backend's /api/* (RL-A0); Authorization carries the user's token.\n const sharedToken = process.env.SPACECODE_SHARED_TOKEN;\n if (sharedToken) {\n headers['X-Spacecode-Token'] = sharedToken;\n }\n\n // Set content-type if body exists\n if (options.body && !headers['Content-Type']) {\n headers['Content-Type'] = 'application/json';\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\n\n try {\n const response = await fetch(url, {\n ...options,\n headers,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n // Handle 401 Unauthorized - token expired or invalid\n if (response.status === 401) {\n this.clearToken();\n throw new AuthError('Authentication failed. Please check your API key or run a command to re-authenticate');\n }\n\n // Handle 429 Rate Limit\n if (response.status === 429) {\n const errorData = await response.json().catch(() => ({}));\n const retryAfter = errorData.retryAfter\n ? new Date(errorData.retryAfter)\n : new Date(Date.now() + 120_000); // Default 2 minutes\n\n throw new RateLimitError(\n errorData.error ?? 'Rate limit exceeded. Please try again later.',\n retryAfter\n );\n }\n\n // Handle other errors\n if (!response.ok) {\n const errorText = await response.text();\n let errorMessage = `API request failed: ${response.status}`;\n let errorType: string | undefined;\n try {\n const errorData = JSON.parse(errorText) as { error?: string; type?: string };\n errorMessage = errorData.error ?? errorMessage;\n errorType = errorData.type;\n } catch {\n errorMessage = `${errorMessage} - ${errorText}`;\n }\n throw new ApiError(errorMessage, response.status, errorType);\n }\n\n return await response.json() as T;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof AuthError || error instanceof RateLimitError || error instanceof ApiError) {\n throw error;\n }\n\n if (error instanceof Error && error.name === 'AbortError') {\n throw new ApiError('Request timeout - API took too long to respond', 408);\n }\n\n throw new ApiError(\n error instanceof Error ? error.message : 'Unknown error',\n 0\n );\n }\n }\n\n /**\n * Health check - verify backend is accessible\n */\n async healthCheck(): Promise<boolean> {\n try {\n const response = await fetch(`${this.baseUrl}/health`, {\n signal: AbortSignal.timeout(5000),\n });\n return response.ok;\n } catch {\n return false;\n }\n }\n\n /**\n * Get current user info\n */\n async getCurrentUser(): Promise<User> {\n return this.request<User>('/api/auth/me');\n }\n\n /**\n * List all configs\n */\n async getConfigs(): Promise<ConfigListResponse> {\n return this.request<ConfigListResponse>('/api/config');\n }\n\n /**\n * Get a specific config\n */\n async getConfig(key: ConfigKey): Promise<ConfigGetResponse> {\n return this.request<ConfigGetResponse>(`/api/config/${key}`);\n }\n\n /**\n * Set a config\n */\n async setConfig(key: ConfigKey, content: string): Promise<{ success: boolean; key: string; path: string }> {\n return this.request(`/api/config/${key}`, {\n method: 'PUT',\n body: JSON.stringify({ content }),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n /**\n * Delete a config\n */\n async deleteConfig(key: ConfigKey): Promise<{ success: boolean }> {\n return this.request(`/api/config/${key}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Bulk set configs\n */\n async setConfigs(configs: Record<string, string>): Promise<{ success: boolean; updated: string[] }> {\n return this.request('/api/config', {\n method: 'PUT',\n body: JSON.stringify(configs),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n /**\n * Create a personal access token\n */\n async createApiToken(name: string): Promise<{ id: string; token: string; prefix: string; createdAt: string }> {\n return this.request('/api/tokens', {\n method: 'POST',\n body: JSON.stringify({ name }),\n });\n }\n\n /**\n * List active personal access tokens\n */\n async listApiTokens(): Promise<{ tokens: Array<{ id: string; name: string; prefix: string; createdAt: string; lastUsedAt: string | null }> }> {\n return this.request('/api/tokens');\n }\n\n /**\n * Revoke a personal access token\n */\n async revokeApiToken(tokenId: string): Promise<void> {\n await this.request(`/api/tokens/${tokenId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Exchange a PAT for a short-lived JWT\n */\n async exchangeForJwt(apiToken: string): Promise<{ token: string }> {\n // Backend /api/* is gated by SPACECODE_SHARED_TOKEN (RL-A0); without it the\n // exchange can only 401, so fail fast with an actionable message.\n const sharedToken = process.env.SPACECODE_SHARED_TOKEN;\n if (!sharedToken) {\n throw new AuthError('SPACECODE_SHARED_TOKEN is not set; it is required to exchange a PAT for a JWT. Export it and retry.');\n }\n // Use the PAT directly as the Bearer token for this request\n const url = `${this.baseUrl}/api/auth/exchange`;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 10_000);\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: { Authorization: `Bearer ${apiToken}`, 'X-Spacecode-Token': sharedToken },\n signal: controller.signal,\n });\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({ error: 'Exchange failed' })) as { error?: string };\n throw new ApiError(errorData.error ?? 'Token exchange failed', response.status);\n }\n\n return await response.json() as { token: string };\n } catch (error) {\n clearTimeout(timeoutId);\n if (error instanceof ApiError) throw error;\n throw new ApiError(\n error instanceof Error ? error.message : 'Token exchange failed',\n 0,\n );\n }\n }\n\n /**\n * Create a new agent account\n */\n async createAgent(name: string, options?: { description?: string; webhookUrl?: string }): Promise<CreateAgentResponse> {\n return this.request('/api/agents', {\n method: 'POST',\n body: JSON.stringify({ name, ...options }),\n });\n }\n\n /**\n * List all agents owned by the current user\n */\n async listAgents(): Promise<{ agents: Agent[] }> {\n return this.request('/api/agents');\n }\n\n /**\n * Get a specific agent by ID\n */\n async getAgent(id: string): Promise<{ agent: Agent }> {\n return this.request(`/api/agents/${id}`);\n }\n\n /**\n * Update an agent's configuration\n */\n async updateAgent(id: string, updates: { description?: string; webhookUrl?: string; maxConcurrentSandboxes?: number }): Promise<{ agent: Agent }> {\n return this.request(`/api/agents/${id}`, {\n method: 'PATCH',\n body: JSON.stringify(updates),\n });\n }\n\n /**\n * Delete an agent\n */\n async deleteAgent(id: string): Promise<{ success: boolean }> {\n return this.request(`/api/agents/${id}`, {\n method: 'DELETE',\n });\n }\n\n // -------------------------------------------------------------------------\n // Sentry integration\n // -------------------------------------------------------------------------\n\n async setSentryCredentials(authToken: string, orgSlug: string): Promise<{ success: boolean }> {\n return this.request('/api/credentials/sentry', {\n method: 'PUT',\n body: JSON.stringify({ authToken, orgSlug }),\n });\n }\n\n async getSentryStatus(): Promise<{ hasToken: boolean; orgSlug?: string }> {\n return this.request('/api/credentials/sentry');\n }\n\n async deleteSentryCredentials(): Promise<{ success: boolean }> {\n return this.request('/api/credentials/sentry', { method: 'DELETE' });\n }\n\n async listSentryProjects(): Promise<{ projects: Array<{ id: string; slug: string; name: string; platform: string | null }> }> {\n return this.request('/api/sentry/projects');\n }\n\n async listSentryIssues(project?: string, limit?: number): Promise<{ issues: Array<Record<string, unknown>> }> {\n const params = new URLSearchParams();\n if (project) params.set('project', project);\n if (limit) params.set('limit', String(limit));\n const qs = params.toString();\n return this.request(`/api/sentry/issues${qs ? `?${qs}` : ''}`);\n }\n\n async fixSentryIssue(issueId: string, repo: string, options?: { branch?: string; model?: string }): Promise<Record<string, unknown>> {\n return this.request('/api/sentry/fix', {\n method: 'POST',\n body: JSON.stringify({ issueId, repo, ...options }),\n });\n }\n\n async fixSentryBatch(issueIds: string[], repo: string, model?: string): Promise<{ results: Array<Record<string, unknown>> }> {\n return this.request('/api/sentry/fix-batch', {\n method: 'POST',\n body: JSON.stringify({ issueIds, repo, model }),\n });\n }\n\n // Sentry webhook management\n async listSentryWebhooks(): Promise<{ webhooks: Array<Record<string, unknown>> }> {\n return this.request('/api/sentry/webhooks');\n }\n\n async createSentryWebhook(\n sentryProjectSlug: string,\n githubRepo: string,\n model?: string,\n ): Promise<{ webhook: Record<string, unknown>; webhookSecret: string }> {\n return this.request('/api/sentry/webhooks', {\n method: 'POST',\n body: JSON.stringify({ sentryProjectSlug, githubRepo, model }),\n });\n }\n\n async deleteSentryWebhook(id: string): Promise<{ success: boolean }> {\n return this.request(`/api/sentry/webhooks/${encodeURIComponent(id)}`, {\n method: 'DELETE',\n });\n }\n\n async toggleSentryWebhook(id: string, enabled: boolean): Promise<{ success: boolean }> {\n return this.request(`/api/sentry/webhooks/${encodeURIComponent(id)}`, {\n method: 'PATCH',\n body: JSON.stringify({ autoFixEnabled: enabled }),\n });\n }\n\n async getSentryWebhookDeliveries(id: string, limit = 50): Promise<{ deliveries: Array<Record<string, unknown>> }> {\n return this.request(`/api/sentry/webhooks/${encodeURIComponent(id)}/deliveries?limit=${limit}`);\n }\n\n // Sentry connect (project + webhook in one call)\n async sentryConnect(\n repo: string,\n projectSlug?: string,\n model?: string,\n ): Promise<Record<string, unknown>> {\n return this.request('/api/sentry/connect', {\n method: 'POST',\n body: JSON.stringify({ repo, projectSlug, model }),\n });\n }\n\n // Sentry OAuth\n async startSentryOAuth(): Promise<{ url: string; state: string }> {\n return this.request('/api/sentry/oauth/start', { method: 'POST' });\n }\n\n async pollSentryOAuth(state: string): Promise<{ completed: boolean; orgSlug?: string; error?: string }> {\n return this.request(`/api/sentry/oauth/status?state=${encodeURIComponent(state)}`);\n }\n}\n\n/**\n * Create an API client with token from config\n */\nexport async function createApiClient(): Promise<BackendApiClient> {\n const { loadAuth, loadConfig } = await import('../config.js');\n const auth = await loadAuth();\n const config = await loadConfig();\n const apiUrl = process.env.SPACECODE_API_URL ?? (config.apiUrl || DEFAULT_API_URL);\n\n return new BackendApiClient(apiUrl, auth.accessToken);\n}\n\n/**\n * Verify token is valid by checking if we can fetch user info\n */\nexport async function isTokenValid(client: BackendApiClient): Promise<boolean> {\n if (!client.hasToken()) {\n return false;\n }\n\n try {\n await client.getCurrentUser();\n return true;\n } catch (error) {\n if (error instanceof AuthError) {\n return false;\n }\n throw error;\n }\n}\n", "/**\n * Local configuration management\n */\n\nimport { readFile, writeFile, mkdir, rename, unlink } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport type { Config, RemoteTask, TaskStatus } from '@spacecode/shared/remote';\n\nconst CONFIG_DIR = join(homedir(), '.spacecode');\n\n// Allow overriding config dir for testing\nexport function getConfigDir(): string {\n return process.env.SPACECODE_CONFIG_DIR || CONFIG_DIR;\n}\n\n/**\n * Ensure config directory exists\n */\nasync function ensureConfigDir(): Promise<void> {\n const dir = getConfigDir();\n if (!existsSync(dir)) {\n await mkdir(dir, { recursive: true, mode: 0o700 });\n }\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Load configuration with basic schema validation.\n * Returns empty config if the file is missing, corrupt, or has an unexpected shape.\n */\nexport async function loadConfig(): Promise<Config> {\n try {\n const data = await readFile(join(getConfigDir(), 'config.json'), 'utf-8');\n const parsed = JSON.parse(data);\n if (!isPlainObject(parsed)) {\n console.warn('config.json has unexpected shape, using defaults');\n return {};\n }\n return parsed as Config;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return {};\n console.warn(`Failed to load config.json: ${err instanceof Error ? err.message : String(err)}`);\n return {};\n }\n}\n\n/**\n * Save configuration\n */\nexport async function saveConfig(config: Config): Promise<void> {\n await ensureConfigDir();\n await writeFile(join(getConfigDir(), 'config.json'), JSON.stringify(config, null, 2), { mode: 0o600 });\n}\n\nexport interface CloudflareCredentials {\n apiToken?: string;\n accountId?: string;\n}\n\n/**\n * Load Cloudflare credentials from ~/.spacecode/cloudflare.json\n */\nexport async function loadCloudflareCredentials(): Promise<CloudflareCredentials> {\n const cloudflareFile = join(getConfigDir(), 'cloudflare.json');\n try {\n const data = await readFile(cloudflareFile, 'utf-8');\n const parsed = JSON.parse(data);\n if (!isPlainObject(parsed)) {\n console.warn('cloudflare.json has unexpected shape, using defaults');\n return {};\n }\n return parsed as CloudflareCredentials;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return {};\n console.warn(`Failed to load cloudflare.json: ${err instanceof Error ? err.message : String(err)}`);\n return {};\n }\n}\n\n/**\n * Check if Cloudflare credentials are configured\n */\nexport async function hasCloudflareCredentials(): Promise<boolean> {\n const creds = await loadCloudflareCredentials();\n return !!(creds.apiToken && creds.accountId);\n}\n\nconst TASKS_FILE = 'tasks.json';\n\nexport async function loadTasks(): Promise<RemoteTask[]> {\n const configDir = getConfigDir();\n const tasksPath = join(configDir, TASKS_FILE);\n try {\n const data = await readFile(tasksPath, 'utf-8');\n const parsed = JSON.parse(data);\n if (!Array.isArray(parsed)) {\n console.warn('tasks.json has unexpected shape, using empty list');\n return [];\n }\n return parsed as RemoteTask[];\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return [];\n console.warn(`Failed to load tasks.json: ${err instanceof Error ? err.message : String(err)}`);\n return [];\n }\n}\n\nexport async function saveTasks(tasks: RemoteTask[]): Promise<void> {\n const configDir = getConfigDir();\n await mkdir(configDir, { recursive: true, mode: 0o700 });\n const tasksPath = join(configDir, TASKS_FILE);\n // Atomic write: write to temp file then rename to prevent partial reads\n // during concurrent access from multiple exec/poll processes\n const tmpPath = `${tasksPath}.${process.pid}.tmp`;\n await writeFile(tmpPath, JSON.stringify(tasks, null, 2));\n await rename(tmpPath, tasksPath);\n}\n\nconst LOCK_FILE = 'tasks.lock';\nconst LOCK_TIMEOUT_MS = 10_000;\nconst LOCK_RETRY_DELAY_MS = 50;\n\n/**\n * Check if a lock file at the given path is stale (>30s old)\n */\nasync function isLockStaleImpl(lockPath: string): Promise<boolean> {\n const { stat } = await import('fs/promises');\n try {\n const lockStat = await stat(lockPath);\n // If the lock is old enough, check if the PID that holds it is still alive\n if (Date.now() - lockStat.mtimeMs > 30_000) {\n return true;\n }\n // Check if the PID that holds the lock is still alive\n try {\n const content = await readFile(lockPath, 'utf-8');\n const pid = parseInt(content, 10);\n if (!isNaN(pid)) {\n try { process.kill(pid, 0); return false; } catch (killErr) {\n // ESRCH = process doesn't exist = stale; EPERM = process exists but not ours = not stale\n return (killErr as NodeJS.ErrnoException).code === 'ESRCH';\n }\n }\n } catch {\n // Could not read lock file content, treat as potentially stale\n }\n return false;\n } catch {\n return true; // Missing lock file is effectively \"stale\"\n }\n}\n\n/**\n * Attempt to acquire a lock, with optional stale lock removal\n */\nasync function tryAcquireLockImpl(lockPath: string, forceStaleRemoval = false): Promise<boolean> {\n const { open, unlink } = await import('fs/promises');\n try {\n const fd = await open(lockPath, 'wx');\n await fd.writeFile(String(process.pid));\n await fd.close();\n return true;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'EEXIST') {\n // Check if lock is stale\n if (forceStaleRemoval || await isLockStaleImpl(lockPath)) {\n try {\n await unlink(lockPath);\n } catch {\n // Lock already removed, retry\n }\n // Immediately retry acquiring after removing stale lock\n return await tryAcquireLockImpl(lockPath, false);\n }\n return false; // Lock is held by another process\n }\n throw err;\n }\n}\n\n/**\n * Acquire a file lock using O_CREAT|O_EXCL for atomic creation.\n * Retries with backoff until timeout. Stale locks (>30s) are forcibly removed.\n */\nasync function withTaskLock<T>(fn: () => Promise<T>): Promise<T> {\n const configDir = getConfigDir();\n await mkdir(configDir, { recursive: true, mode: 0o700 });\n const lockPath = join(configDir, LOCK_FILE);\n const startTime = Date.now();\n\n // Acquire lock with timeout\n let lockAcquired = false;\n while (Date.now() - startTime < LOCK_TIMEOUT_MS) {\n lockAcquired = await tryAcquireLockImpl(lockPath, Date.now() - startTime > LOCK_TIMEOUT_MS / 2);\n if (lockAcquired) break;\n await new Promise(resolve => setTimeout(resolve, LOCK_RETRY_DELAY_MS));\n }\n\n if (!lockAcquired) {\n throw new Error('Could not acquire task lock after timeout');\n }\n\n try {\n return await fn();\n } finally {\n await unlink(lockPath).catch((err) => {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') {\n console.warn(`Failed to release task lock: ${err instanceof Error ? err.message : String(err)}`);\n }\n });\n }\n}\n\nexport async function addTask(task: RemoteTask): Promise<void> {\n await withTaskLock(async () => {\n const tasks = await loadTasks();\n tasks.push(task);\n await saveTasks(tasks);\n });\n}\n\nexport async function addTasks(newTasks: RemoteTask[]): Promise<void> {\n if (newTasks.length === 0) return;\n await withTaskLock(async () => {\n const tasks = await loadTasks();\n tasks.push(...newTasks);\n await saveTasks(tasks);\n });\n}\n\nexport async function updateTask(id: string, updates: Partial<RemoteTask>): Promise<boolean> {\n return withTaskLock(async () => {\n const tasks = await loadTasks();\n const index = tasks.findIndex(t => t.id === id);\n if (index === -1) {\n return false;\n }\n tasks[index] = { ...tasks[index], ...updates };\n await saveTasks(tasks);\n return true;\n });\n}\n\nexport async function getTask(id: string): Promise<RemoteTask | undefined> {\n const tasks = await loadTasks();\n return tasks.find(t => t.id === id);\n}\n\nexport async function pruneTasks(olderThanDays = 7): Promise<number> {\n return withTaskLock(async () => {\n const tasks = await loadTasks();\n const cutoff = Date.now() - olderThanDays * 24 * 60 * 60 * 1000;\n const active = tasks.filter(t =>\n t.status === 'running' || t.status === 'pending' ||\n new Date(t.createdAt).getTime() > cutoff\n );\n const pruned = tasks.length - active.length;\n if (pruned > 0) {\n await saveTasks(active);\n }\n return pruned;\n });\n}\n\n/**\n * Cancel a task by ID (marks as cancelled, doesn't destroy machine)\n */\nexport async function cancelTask(id: string): Promise<boolean> {\n const task = await getTask(id);\n if (!task) {\n return false;\n }\n await updateTask(id, {\n status: 'cancelled' as TaskStatus,\n completedAt: new Date().toISOString(),\n });\n return true;\n}\n\n/**\n * Export withTaskLock for use in tests and other modules\n */\nexport { withTaskLock };\n\n/**\n * Export lock status checking for tests\n */\nexport { isLockStaleImpl as isLockStale };\n\n/**\n * JWT token and user info from OAuth authentication\n */\nexport interface AuthConfig {\n accessToken?: string;\n refreshToken?: string;\n user?: {\n id: string;\n githubId: string;\n githubLogin: string;\n };\n expiresAt?: string;\n}\n\nconst AUTH_FILE = 'auth.json';\n\n/**\n * Load auth configuration from ~/.spacecode/auth.json.\n * Returns empty auth config if the file is missing, corrupt, or has an unexpected shape.\n */\nexport async function loadAuth(): Promise<AuthConfig> {\n const authPath = join(getConfigDir(), AUTH_FILE);\n try {\n const data = await readFile(authPath, 'utf-8');\n const parsed = JSON.parse(data);\n if (!isPlainObject(parsed)) {\n console.warn('auth.json has unexpected shape, using defaults');\n return {};\n }\n return parsed as AuthConfig;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return {};\n console.warn(`Failed to load auth.json: ${err instanceof Error ? err.message : String(err)}`);\n return {};\n }\n}\n\n/**\n * Save auth configuration to ~/.spacecode/auth.json\n */\nexport async function saveAuth(auth: AuthConfig): Promise<void> {\n await ensureConfigDir();\n const authPath = join(getConfigDir(), AUTH_FILE);\n await writeFile(authPath, JSON.stringify(auth, null, 2), { mode: 0o600 });\n}\n\n/**\n * Clear auth configuration (logout)\n */\nexport async function clearAuth(): Promise<void> {\n const authPath = join(getConfigDir(), AUTH_FILE);\n try {\n await unlink(authPath);\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') {\n throw new Error(`Failed to remove auth file: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n}\n\n/**\n * Resolve the auth token for the sandbox worker.\n * Priority: env var (SPACECODE_TOKEN) -> JWT from auth.json -> refresh token.\n *\n * If SPACECODE_TOKEN is a PAT (starts with \"sct_\"), it's exchanged for a\n * short-lived JWT because the sandbox worker requires JWTs.\n */\nexport async function resolveAuthToken(): Promise<string> {\n // Env var override (CI, scripts, service-to-service)\n const envToken = process.env.SPACECODE_TOKEN;\n if (envToken) {\n if (envToken.startsWith('sct_')) {\n // Exchange PAT for short-lived JWT (sandbox worker needs JWT)\n const { BackendApiClient } = await import('./api/client.js');\n const { DEFAULT_API_URL } = await import('@spacecode/shared/remote');\n const config = await loadConfig();\n const apiUrl = process.env.SPACECODE_API_URL ?? config.apiUrl ?? DEFAULT_API_URL;\n const client = new BackendApiClient(apiUrl);\n const { token } = await client.exchangeForJwt(envToken);\n return token;\n }\n return envToken;\n }\n\n // JWT from OAuth login\n const auth = await loadAuth();\n if (auth.accessToken) {\n // Check if token looks expired by decoding the payload (base64url)\n try {\n const payloadPart = auth.accessToken.split('.')[1];\n if (payloadPart) {\n const payload = JSON.parse(Buffer.from(payloadPart, 'base64url').toString());\n const isExpired = payload.exp && payload.exp * 1000 < Date.now(); // exp is in seconds\n\n // If token is already expired and refresh failed, don't return it\n if (isExpired) {\n throw new Error(\n 'Session expired. Set a fresh SPACECODE_TOKEN; run `spacecode login` for details.',\n );\n }\n }\n } catch (e) {\n // Re-throw auth errors, only swallow decode failures\n if (e instanceof Error && e.message.includes('spacecode login')) throw e;\n // Payload decode failed \u2014 use token as-is, server will reject if expired\n }\n return auth.accessToken;\n }\n\n throw new Error(\n 'Not authenticated. Set SPACECODE_TOKEN (a `sct_` personal access token, or the sandbox shared secret) in your environment; run `spacecode login` for details.',\n );\n}\n\n/**\n * Extra options for `createSandboxClient` given the resolved token.\n *\n * The sandbox worker only honours `X-Acting-User-Id` for shared-secret callers\n * (it is ignored for JWTs), so a token that is not JWT-shaped is treated as the\n * raw shared secret and vouches for the internal identity (ADR-2: one shared\n * identity). Without this header the worker returns 401 on `POST /api/sandbox`.\n */\nexport function sandboxClientOptions(token: string): { actingUserId?: string } {\n return token.split('.').length === 3 ? {} : { actingUserId: 'internal' };\n}\n", "/**\n * Shared environment variable construction for sandbox commands\n *\n * Centralizes the env vars block that was duplicated across exec, run, launch, and exec-batch.\n */\n\nimport { getProxyUrl } from '@spacecode/shared/remote';\nimport type { ProxyMode } from '@spacecode/shared/remote';\n\nexport interface BuildEnvVarsOptions {\n /** GitHub token for repo access */\n ghToken?: string;\n /** API proxy mode */\n proxyMode?: ProxyMode;\n /** New project name (for launch command) */\n newProjectName?: string;\n /** Git user.name from local config */\n gitUserName?: string;\n /** Git user.email from local config */\n gitUserEmail?: string;\n /** Skip proxy \u2014 omit ANTHROPIC_API_KEY and ANTHROPIC_BASE_URL (BYOK mode) */\n skipProxy?: boolean;\n /** Use a custom API key directly (no proxy, no BASE_URL) */\n customApiKey?: string;\n}\n\n/**\n * Build the environment variables record to inject into a sandbox.\n *\n * Includes ANTHROPIC_API_KEY and ANTHROPIC_BASE_URL (gateway routing), and\n * optionally GH_TOKEN, NEW_PROJECT_NAME, and git identity.\n */\nexport function buildEnvVars(options: BuildEnvVarsOptions): Record<string, string> {\n const envVars: Record<string, string> = {};\n\n if (options.customApiKey) {\n // User-provided API key \u2014 route directly to Anthropic (no proxy)\n envVars.ANTHROPIC_API_KEY = options.customApiKey;\n } else if (!options.skipProxy) {\n // Default: route through SpaceCode proxy\n envVars.ANTHROPIC_API_KEY = 'proxy';\n envVars.ANTHROPIC_BASE_URL = getProxyUrl(options.proxyMode);\n }\n // skipProxy with no customApiKey: omit both vars (BYOK)\n\n if (options.ghToken) envVars.GH_TOKEN = options.ghToken;\n if (options.newProjectName) envVars.NEW_PROJECT_NAME = options.newProjectName;\n if (options.gitUserName) envVars.GIT_USER_NAME = options.gitUserName;\n if (options.gitUserEmail) envVars.GIT_USER_EMAIL = options.gitUserEmail;\n\n return envVars;\n}\n", "export {};\n//# sourceMappingURL=session.js.map", "export {};\n//# sourceMappingURL=project.js.map", "export {};\n//# sourceMappingURL=user.js.map", "export interface ApiResponse<T> {\n success: boolean;\n data?: T;\n error?: ApiError;\n}\n\nexport interface ApiError {\n code: string;\n message: string;\n details?: Record<string, unknown>;\n}\n\nexport interface PaginatedResponse<T> {\n items: T[];\n total: number;\n page: number;\n pageSize: number;\n hasMore: boolean;\n}\n\nexport interface ListParams {\n page?: number;\n pageSize?: number;\n sortBy?: string;\n sortOrder?: 'asc' | 'desc';\n}\n\nexport type ApiEndpoint =\n | 'auth/github'\n | 'auth/github/callback'\n | 'auth/me'\n | 'sessions'\n | 'projects'\n | 'devices';\n\nexport const API_ENDPOINTS = {\n AUTH_GITHUB: '/api/auth/github',\n AUTH_GITHUB_CALLBACK: '/api/auth/github/callback',\n AUTH_ME: '/api/auth/me',\n SESSIONS: '/api/sessions',\n PROJECTS: '/api/projects',\n DEVICES: '/api/devices',\n} as const;\n", "/** Roles for sandbox collaborators (does NOT include 'owner'). */\nexport type CollaboratorRole = 'editor' | 'viewer';\n\n/** All possible roles including the implicit owner role. */\nexport type SandboxRole = 'owner' | CollaboratorRole;\n\n/** Valid characters for sandbox session names. */\nexport const SANDBOX_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/;\n\n/** Validate a sandbox session name. */\nexport function isValidSandboxName(name: string): boolean {\n return SANDBOX_NAME_PATTERN.test(name);\n}\n", "/**\n * Agent protocol types \u2014 WebSocket protocol between AgentDO (server) and clients.\n *\n * All Agent \u2192 Client events carry a monotonic `seq` number for ordering.\n */\n\n// \u2500\u2500 Agent \u2192 Client Events \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface StatusEvent {\n type: 'status';\n seq: number;\n phase: 'thinking' | 'tool_execution' | 'idle' | 'retrying' | 'truncating';\n /** Optional human-readable message (e.g. retry reason). */\n message?: string;\n}\n\nexport interface ToolCallEvent {\n type: 'tool_call';\n seq: number;\n id: string;\n tool: string;\n input: Record<string, unknown>;\n}\n\nexport interface ToolResultEvent {\n type: 'tool_result';\n seq: number;\n id: string;\n output: string;\n is_error?: boolean;\n duration_ms?: number;\n}\n\nexport interface ToolOutputEvent {\n type: 'tool_output';\n seq: number;\n id: string;\n stream: 'stdout' | 'stderr';\n text: string;\n}\n\nexport interface TextEvent {\n type: 'text';\n seq: number;\n content: string;\n}\n\nexport interface TextDeltaEvent {\n type: 'text_delta';\n seq: number;\n text: string;\n}\n\nexport interface FileChangedEvent {\n type: 'file_changed';\n seq: number;\n path: string;\n content: string;\n status: 'modified' | 'created' | 'deleted';\n}\n\nexport interface DoneEvent {\n type: 'done';\n seq: number;\n success: boolean;\n exit_code?: number;\n cache_read_tokens?: number;\n cache_creation_tokens?: number;\n}\n\nexport interface ErrorEvent {\n type: 'error';\n seq: number;\n message: string;\n}\n\nexport interface ResultEvent {\n type: 'result';\n seq: number;\n success: boolean;\n text: string;\n}\n\nexport interface PresenceUser {\n userId: string | null;\n role: 'owner' | 'editor' | 'viewer';\n avatar?: string;\n}\n\nexport interface PresenceEvent {\n type: 'presence';\n seq: number;\n users: PresenceUser[];\n}\n\nexport interface PingEvent {\n type: 'ping';\n seq: number;\n}\n\nexport type AgentEvent =\n | StatusEvent\n | ToolCallEvent\n | ToolResultEvent\n | ToolOutputEvent\n | TextEvent\n | TextDeltaEvent\n | FileChangedEvent\n | DoneEvent\n | ErrorEvent\n | ResultEvent\n | PresenceEvent\n | PingEvent;\n\n// \u2500\u2500 Client \u2192 Agent Messages \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface AgentPrompt {\n type: 'prompt';\n text: string;\n}\n\nexport interface AgentCancel {\n type: 'cancel';\n}\n\nexport interface FileSyncMessage {\n type: 'file_sync';\n path: string;\n content: string;\n}\n\nexport interface ReconnectMessage {\n type: 'reconnect';\n last_seq: number;\n}\n\nexport interface PongMessage {\n type: 'pong';\n}\n\nexport type ClientMessage = AgentPrompt | AgentCancel | FileSyncMessage | ReconnectMessage | PongMessage;\n\n// \u2500\u2500 Tool Definitions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface AgentTool {\n name: string;\n description: string;\n input_schema: Record<string, unknown>;\n}\n\n// \u2500\u2500 Session \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type AgentSessionStatus = 'active' | 'idle' | 'completed' | 'error';\n\nexport interface AgentSession {\n id: string;\n userId: string;\n repoId?: string;\n branch?: string;\n status: AgentSessionStatus;\n createdAt: string;\n updatedAt: string;\n}\n\nexport type SocketRole = 'owner' | 'editor' | 'viewer';\n", "export * from './session.js';\nexport * from './project.js';\nexport * from './user.js';\nexport * from './api.js';\nexport * from './sandbox.js';\nexport * from './agent.js';\n", "export const REGIONS = {\n ams: { name: 'Amsterdam', country: 'Netherlands', lat: 52.37, lng: 4.89 },\n cdg: { name: 'Paris', country: 'France', lat: 48.86, lng: 2.35 },\n dfw: { name: 'Dallas', country: 'USA', lat: 32.78, lng: -96.8 },\n ewr: { name: 'Newark', country: 'USA', lat: 40.69, lng: -74.17 },\n fra: { name: 'Frankfurt', country: 'Germany', lat: 50.11, lng: 8.68 },\n gru: { name: 'S\u00E3o Paulo', country: 'Brazil', lat: -23.55, lng: -46.63 },\n hkg: { name: 'Hong Kong', country: 'Hong Kong', lat: 22.32, lng: 114.17 },\n iad: { name: 'Virginia', country: 'USA', lat: 38.95, lng: -77.45 },\n lax: { name: 'Los Angeles', country: 'USA', lat: 33.94, lng: -118.41 },\n lhr: { name: 'London', country: 'UK', lat: 51.47, lng: -0.45 },\n nrt: { name: 'Tokyo', country: 'Japan', lat: 35.77, lng: 140.39 },\n ord: { name: 'Chicago', country: 'USA', lat: 41.97, lng: -87.9 },\n sea: { name: 'Seattle', country: 'USA', lat: 47.45, lng: -122.31 },\n sin: { name: 'Singapore', country: 'Singapore', lat: 1.35, lng: 103.99 },\n sjc: { name: 'San Jose', country: 'USA', lat: 37.36, lng: -121.93 },\n syd: { name: 'Sydney', country: 'Australia', lat: -33.95, lng: 151.18 },\n yyz: { name: 'Toronto', country: 'Canada', lat: 43.68, lng: -79.63 },\n} as const;\n\nexport type Region = keyof typeof REGIONS;\n\nexport const DEFAULT_REGION: Region = 'iad';\n\nexport interface GeoLocation {\n lat: number;\n lng: number;\n city?: string;\n country?: string;\n}\n\nfunction haversineDistance(\n lat1: number,\n lng1: number,\n lat2: number,\n lng2: number,\n): number {\n const R = 6371;\n const dLat = ((lat2 - lat1) * Math.PI) / 180;\n const dLng = ((lng2 - lng1) * Math.PI) / 180;\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((lat1 * Math.PI) / 180) *\n Math.cos((lat2 * Math.PI) / 180) *\n Math.sin(dLng / 2) *\n Math.sin(dLng / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n}\n\nexport function findNearestRegion(location: GeoLocation): Region {\n let nearestRegion: Region = DEFAULT_REGION;\n let minDistance = Infinity;\n\n for (const [region, data] of Object.entries(REGIONS)) {\n const distance = haversineDistance(\n location.lat,\n location.lng,\n data.lat,\n data.lng,\n );\n if (distance < minDistance) {\n minDistance = distance;\n nearestRegion = region as Region;\n }\n }\n\n return nearestRegion;\n}\n\nexport function getRegionInfo(region: Region) {\n return REGIONS[region] || REGIONS[DEFAULT_REGION];\n}\n\nexport function isValidRegion(region: string): region is Region {\n return region in REGIONS;\n}\n", "export function isValidGitHubRepo(repo: string): boolean {\n const pattern = /^[a-zA-Z0-9_.-]+\\/[a-zA-Z0-9_.-]+$/;\n return pattern.test(repo);\n}\n\nexport function parseGitHubUrl(url: string): { owner: string; repo: string } | null {\n const patterns = [\n /^https?:\\/\\/github\\.com\\/([^/]+)\\/([^/]+?)(?:\\.git)?(?:\\/.*)?$/,\n /^git@github\\.com:([^/]+)\\/([^/]+?)(?:\\.git)?$/,\n /^([^/]+)\\/([^/]+)$/,\n ];\n\n for (const pattern of patterns) {\n const match = url.match(pattern);\n if (match) {\n return { owner: match[1], repo: match[2] };\n }\n }\n\n return null;\n}\n\nexport function formatGitHubRepo(owner: string, repo: string): string {\n return `${owner}/${repo}`;\n}\n\nexport function isValidUUID(str: string): boolean {\n const pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return pattern.test(str);\n}\n\nexport function generateId(): string {\n return crypto.randomUUID();\n}\n\nexport function sanitizeInput(input: string): string {\n return input.replace(/[<>'\"&]/g, (char) => {\n switch (char) {\n case '<': return '<';\n case '>': return '>';\n case \"'\": return ''';\n case '\"': return '"';\n case '&': return '&';\n default: return char;\n }\n });\n}\n", "export * from './region.js';\nexport * from './validation.js';\n", "/**\n * JWT token creation and verification using HMAC-SHA256.\n *\n * Shared between the backend (issues tokens) and the sandbox-worker\n * (verifies tokens). Uses Web Crypto API \u2014 works in Cloudflare Workers,\n * Node 20+, and Deno.\n */\n\nexport interface JwtPayload {\n userId: string;\n githubId: number | null;\n githubLogin: string;\n iat: number;\n exp: number;\n /** Standard JWT audience claim (RFC 7519) \u2014 resource the token is bound to */\n aud?: string | string[];\n /** Standard JWT issuer claim (RFC 7519) */\n iss?: string;\n /** Standard JWT subject claim (RFC 7519) */\n sub?: string;\n}\n\nconst ALGORITHM = 'HS256';\n\n/** Default token lifetime: 30 days. */\nconst DEFAULT_EXPIRY_MS = 30 * 24 * 60 * 60 * 1000;\n\n/**\n * Fail-loud guard for signing/encryption secrets (L-3). A missing, non-string,\n * or blank secret must throw rather than silently sign with an empty key or\n * make verification return null. Present secrets are unaffected.\n */\nexport function assertSecret(secret: unknown, name = 'JWT secret'): asserts secret is string {\n if (typeof secret !== 'string' || secret.trim().length === 0) {\n throw new Error(`${name} is missing or empty`);\n }\n}\n\nfunction base64UrlEncode(data: ArrayBuffer | Uint8Array): string {\n const bytes = data instanceof ArrayBuffer ? new Uint8Array(data) : data;\n let binary = '';\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64UrlDecode(str: string): Uint8Array {\n const padding = '='.repeat((4 - (str.length % 4)) % 4);\n const base64 = (str + padding).replace(/-/g, '+').replace(/_/g, '/');\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\nasync function getHmacKey(secret: string): Promise<CryptoKey> {\n return crypto.subtle.importKey(\n 'raw',\n new TextEncoder().encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify'],\n );\n}\n\n/**\n * Create a signed JWT token.\n *\n * @param payload - User identity fields (userId, githubId, githubLogin)\n * @param secret - HMAC signing secret (must match across backend and workers)\n * @param expiryMs - Token lifetime in ms (default: 30 days)\n */\nexport async function createJwt(\n payload: Omit<JwtPayload, 'iat' | 'exp'>,\n secret: string,\n expiryMs = DEFAULT_EXPIRY_MS,\n): Promise<string> {\n assertSecret(secret);\n const now = Date.now();\n const fullPayload: JwtPayload = {\n ...payload,\n iat: now,\n exp: now + expiryMs,\n };\n\n const header = { alg: ALGORITHM, typ: 'JWT' };\n const enc = new TextEncoder();\n const encodedHeader = base64UrlEncode(enc.encode(JSON.stringify(header)));\n const encodedPayload = base64UrlEncode(enc.encode(JSON.stringify(fullPayload)));\n\n const key = await getHmacKey(secret);\n const signature = await crypto.subtle.sign(\n 'HMAC',\n key,\n enc.encode(`${encodedHeader}.${encodedPayload}`),\n );\n\n return `${encodedHeader}.${encodedPayload}.${base64UrlEncode(signature)}`;\n}\n\n/**\n * Verify a JWT token and return its payload.\n *\n * Returns `null` if the token is malformed, has an invalid signature,\n * or has expired.\n *\n * @param token - The JWT string (header.payload.signature)\n * @param secret - HMAC signing secret\n */\nexport async function verifyJwt(\n token: string,\n secret: string,\n): Promise<JwtPayload | null> {\n assertSecret(secret);\n const parts = token.split('.');\n if (parts.length !== 3) return null;\n\n const [encodedHeader, encodedPayload, encodedSignature] = parts;\n\n const key = await getHmacKey(secret);\n const data = new TextEncoder().encode(`${encodedHeader}.${encodedPayload}`);\n const signature = base64UrlDecode(encodedSignature);\n\n const isValid = await crypto.subtle.verify(\n 'HMAC',\n key,\n signature.buffer as ArrayBuffer,\n data,\n );\n if (!isValid) return null;\n\n const payload: JwtPayload = JSON.parse(\n new TextDecoder().decode(base64UrlDecode(encodedPayload)),\n );\n\n if (payload.exp < Date.now()) return null;\n\n return payload;\n}\n", "export { createJwt, verifyJwt, assertSecret } from './jwt.js';\nexport type { JwtPayload } from './jwt.js';\n", "export * from './types/index.js';\nexport * from './utils/index.js';\nexport * from './auth/index.js';\n", "/**\n * Local session registry\n *\n * Tracks sessions in ~/.spacecode/sessions.json so the CLI\n * can list, attach by name, and clean up without depending on the backend.\n */\n\nimport { readFile, writeFile, mkdir, rename } from 'fs/promises';\nimport { join } from 'path';\nimport { getConfigDir } from './config.js';\n\nexport interface SessionRecord {\n /** Session ID (8-char hex from the worker). */\n id: string;\n /** User-assigned name (optional). */\n name?: string;\n /** Repository URL cloned into the sandbox. */\n repo?: string;\n /** Last known status. */\n status: 'running' | 'stopped' | 'destroyed';\n /** ISO timestamp when the session was created. */\n createdAt: string;\n /** Idle timeout that was configured (minutes). */\n idleTimeoutMinutes?: number;\n}\n\nconst SESSIONS_FILE = 'sessions.json';\n\nfunction sessionsPath(): string {\n return join(getConfigDir(), SESSIONS_FILE);\n}\n\n/**\n * Load all sessions from disk.\n */\nexport async function loadSessions(): Promise<SessionRecord[]> {\n try {\n const data = await readFile(sessionsPath(), 'utf-8');\n const parsed = JSON.parse(data);\n if (!Array.isArray(parsed)) return [];\n return parsed as SessionRecord[];\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return [];\n console.warn(`Failed to load sessions.json: ${err instanceof Error ? err.message : String(err)}`);\n return [];\n }\n}\n\n/**\n * Save sessions to disk (atomic write).\n */\nasync function saveSessions(sessions: SessionRecord[]): Promise<void> {\n const dir = getConfigDir();\n await mkdir(dir, { recursive: true, mode: 0o700 });\n const filePath = sessionsPath();\n const tmpPath = `${filePath}.${process.pid}.tmp`;\n await writeFile(tmpPath, JSON.stringify(sessions, null, 2));\n await rename(tmpPath, filePath);\n}\n\n/**\n * Add or update a session in the registry.\n */\nexport async function saveSession(session: SessionRecord): Promise<void> {\n const sessions = await loadSessions();\n const idx = sessions.findIndex(s => s.id === session.id);\n if (idx >= 0) {\n sessions[idx] = session;\n } else {\n sessions.push(session);\n }\n await saveSessions(sessions);\n}\n\n/**\n * Remove a session by ID.\n */\nexport async function removeSession(id: string): Promise<void> {\n const sessions = await loadSessions();\n const filtered = sessions.filter(s => s.id !== id);\n if (filtered.length !== sessions.length) {\n await saveSessions(filtered);\n }\n}\n\n/**\n * Mark a session as destroyed.\n */\nexport async function markSessionDestroyed(id: string): Promise<void> {\n const sessions = await loadSessions();\n const session = sessions.find(s => s.id === id);\n if (session) {\n session.status = 'destroyed';\n await saveSessions(sessions);\n }\n}\n\n/**\n * Find a session by name (case-insensitive).\n */\nexport function findSessionByName(sessions: SessionRecord[], name: string): SessionRecord | undefined {\n return sessions.find(s => s.name?.toLowerCase() === name.toLowerCase());\n}\n\n/**\n * Find a session by ID or name. Returns undefined if not found.\n */\nexport function resolveSession(sessions: SessionRecord[], idOrName: string): SessionRecord | undefined {\n // Try exact ID match first\n const byId = sessions.find(s => s.id === idOrName);\n if (byId) return byId;\n\n // Try name match\n return findSessionByName(sessions, idOrName);\n}\n\n/**\n * Check if a name is already taken by a non-destroyed session.\n */\nexport function isNameTaken(sessions: SessionRecord[], name: string): SessionRecord | undefined {\n return sessions.find(\n s => s.name?.toLowerCase() === name.toLowerCase() && s.status !== 'destroyed',\n );\n}\n\n/**\n * Prune destroyed sessions older than the given number of hours (default: 24).\n */\nexport async function pruneSessions(olderThanHours = 24): Promise<number> {\n const sessions = await loadSessions();\n const cutoff = Date.now() - olderThanHours * 60 * 60 * 1000;\n const kept = sessions.filter(\n s => s.status !== 'destroyed' || new Date(s.createdAt).getTime() > cutoff,\n );\n const pruned = sessions.length - kept.length;\n if (pruned > 0) {\n await saveSessions(kept);\n }\n return pruned;\n}\n\n/**\n * Get only active (non-destroyed) sessions.\n */\nexport function activeSessions(sessions: SessionRecord[]): SessionRecord[] {\n return sessions.filter(s => s.status !== 'destroyed');\n}\n", "/**\n * Shell execution utilities\n */\n\nimport { exec, spawn } from 'child_process';\nimport { promisify } from 'util';\n\nexport interface ExecResult {\n stdout: string;\n stderr: string;\n}\n\n/**\n * Execute a shell command and return the result\n *\n * @param timeoutMs - Optional timeout in milliseconds\n */\nexport async function run(command: string, timeoutMs?: number): Promise<ExecResult> {\n try {\n const execAsync = promisify(exec);\n const options: { timeout?: number } = {};\n if (timeoutMs && timeoutMs > 0) {\n options.timeout = timeoutMs;\n }\n const { stdout, stderr } = await execAsync(command, options);\n return { stdout: stdout.trim(), stderr: stderr.trim() };\n } catch (error) {\n const execError = error as { stdout?: string; stderr?: string; message?: string; killed?: boolean };\n if (execError.killed) {\n throw new Error(`Command timed out after ${timeoutMs}ms: ${command}`);\n }\n throw new Error(execError.stderr || execError.message || 'Unknown error');\n }\n}\n\n/**\n * Execute a command and return just stdout, throwing on error\n *\n * @param timeoutMs - Optional timeout in milliseconds\n */\nexport async function runOutput(command: string, timeoutMs?: number): Promise<string> {\n const { stdout } = await run(command, timeoutMs);\n return stdout;\n}\n\n/**\n * Check if a command exists\n */\nexport async function commandExists(command: string): Promise<boolean> {\n try {\n await run(`which ${command}`);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Spawn an interactive process (for SSH sessions)\n *\n * Uses shell: false to avoid DEP0190 deprecation warning.\n * Arguments are passed directly to the process without shell interpretation.\n *\n * @param timeoutMs - Optional timeout in milliseconds. If provided, the process\n * will be killed if it doesn't complete within the timeout.\n */\nexport function spawnInteractive(\n command: string,\n args: string[],\n timeoutMs?: number,\n): Promise<number> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n stdio: 'inherit',\n shell: false,\n });\n\n let timeoutHandle: NodeJS.Timeout | undefined;\n\n child.on('error', (err) => {\n if (timeoutHandle) clearTimeout(timeoutHandle);\n reject(err);\n });\n\n child.on('close', (code) => {\n if (timeoutHandle) clearTimeout(timeoutHandle);\n resolve(code ?? 0);\n });\n\n // Set up timeout if specified\n if (timeoutMs && timeoutMs > 0) {\n timeoutHandle = setTimeout(() => {\n child.kill('SIGTERM');\n // Give it 2 seconds to gracefully exit, then force kill\n setTimeout(() => child.kill('SIGKILL'), 2000);\n }, timeoutMs);\n }\n });\n}\n", "/**\n * GitHub auth helpers for sandbox commands.\n *\n * Config-file syncing into sandboxes was removed (ADR-13). GitHub auth is\n * passed to sandboxes as the GH_TOKEN env var, read from the local gh CLI.\n */\n\n/**\n * Get GitHub token from local gh CLI\n */\nexport async function getGitHubToken(): Promise<string | undefined> {\n const { runOutput } = await import('../utils/exec.js');\n try {\n const token = await runOutput('gh auth token');\n return token || undefined;\n } catch {\n return undefined;\n }\n}\n", "/**\n * Types for the Cloudflare Sandbox Worker API.\n *\n * These are the canonical type definitions for the sandbox client/server\n * contract. Both the CLI client and the sandbox-worker server should\n * align to these types.\n */\n\n// ---------------------------------------------------------------------------\n// Shared primitives\n// ---------------------------------------------------------------------------\n\n/** File to sync into the sandbox before task run. */\nexport interface SyncFile {\n /** Absolute path inside the sandbox (e.g. \"/home/user/.config/example.conf\"). */\n path: string;\n /** File content (UTF-8 text). */\n content: string;\n}\n\n// ---------------------------------------------------------------------------\n// Errors\n// ---------------------------------------------------------------------------\n\n/** Error thrown by SandboxClient methods on a non-ok HTTP response. Carries the actual response status code so callers can branch on it (e.g. distinguishing 404 \"not found\" from other failures) without parsing the error message string. */\nexport class SandboxApiError extends Error {\n /** The HTTP status code from the failed response. */\n readonly status: number;\n\n constructor(message: string, status: number) {\n super(message);\n this.name = 'SandboxApiError';\n this.status = status;\n }\n}\n\n// ---------------------------------------------------------------------------\n// /api/task -- headless task invocation\n// ---------------------------------------------------------------------------\n\n/** Request body for POST /api/task (headless). */\nexport interface ExecRequest {\n /** GitHub repo identifier (\"owner/repo\") or full HTTPS clone URL. */\n repo: string;\n /** Natural-language prompt passed to coding agent CLI (-p flag). */\n prompt: string;\n /** Optional environment variables to inject into the sandbox. */\n envVars?: Record<string, string>;\n /** Optional files to sync into the sandbox before invocation. */\n files?: SyncFile[];\n /** Git branch to check out (default: repo default branch). */\n branch?: string;\n /** AI model override (e.g. \"claude-sonnet-4-20250514\"). */\n model?: string;\n /** If true, skip the automatic git-safety commit after invocation. */\n noCommit?: boolean;\n /** Idle timeout in minutes before the sandbox auto-sleeps (default: 30). */\n idleTimeoutMinutes?: number;\n}\n\n/** Response body for POST /api/task (headless). */\nexport interface ExecResponse {\n /** Whether the coding agent CLI finished successfully (code 0). */\n success: boolean;\n /** Combined stdout/stderr logs from the coding agent CLI run. */\n logs: string;\n /** Output of `git diff` after invocation (empty string if no changes). */\n diff: string;\n /** Process return code from the coding agent CLI. */\n exitCode: number;\n}\n\n// ---------------------------------------------------------------------------\n// /api/sandbox -- lifecycle endpoints\n// ---------------------------------------------------------------------------\n\n/** Request body for POST /api/sandbox (create a new sandbox). */\nexport interface SandboxCreateRequest {\n /** Optional repo to clone on creation. */\n repo?: string;\n /** Optional environment variables. */\n envVars?: Record<string, string>;\n /** Optional files to sync. */\n files?: SyncFile[];\n /** Idle timeout in minutes before the sandbox auto-sleeps (default: 15). */\n idleTimeoutMinutes?: number;\n /** Optional human-friendly session name (unique per user). */\n name?: string;\n}\n\n/** Sandbox metadata returned by lifecycle endpoints. */\nexport interface SandboxInfo {\n /** Unique sandbox identifier. */\n id: string;\n /** Current sandbox status. */\n status: 'creating' | 'running' | 'stopped' | 'error';\n /** Terminal access URL (when running). */\n terminalUrl?: string;\n /** WebSocket URL for live streaming (when running). */\n wsUrl?: string;\n /** Access token for terminal/WebSocket authentication. Send as first message after WS connection. */\n token?: string;\n /** Non-fatal warnings from sandbox setup (e.g. partial config sync failures). */\n warnings?: string[];\n}\n\n// ---------------------------------------------------------------------------\n// /api/run -- SSE streaming\n// ---------------------------------------------------------------------------\n\n/** Server-sent event types emitted by POST /api/run. */\nexport type SSEEvent =\n | { type: 'status'; data: { phase: string } }\n | { type: 'output'; data: { text: string; stream?: string } }\n | { type: 'done'; data: { success: boolean; exitCode: number; diff: string } }\n | { type: 'error'; data: { message: string } };\n\n// ---------------------------------------------------------------------------\n// Client interface\n// ---------------------------------------------------------------------------\n\n/** High-level client for the Cloudflare Sandbox Worker API. */\nexport interface SandboxClient {\n // Lifecycle\n createSandbox(options: SandboxCreateRequest): Promise<SandboxInfo>;\n getSandboxStatus(id: string): Promise<SandboxInfo>;\n destroySandbox(id: string): Promise<void>;\n\n // Task invocation (optional AbortSignal for cancellation via Ctrl+C)\n exec(options: ExecRequest, signal?: AbortSignal): Promise<ExecResponse>;\n run(options: ExecRequest, onEvent: (event: SSEEvent) => void, signal?: AbortSignal): Promise<void>;\n\n // URLs\n getTerminalUrl(id: string): string;\n getWsUrl(id: string): string;\n}\n", "/**\n * HTTP client for the Cloudflare Sandbox Worker API.\n *\n * Uses the standard Fetch API -- no Node.js-specific dependencies.\n * Note: \"exec\" and \"run\" refer to Sandbox Worker HTTP endpoints, not child_process.\n *\n * Usage:\n * const client = createSandboxClient('https://sandbox.example.com', token);\n * const info = await client.createSandbox({ repo: 'owner/repo' });\n */\n\nimport { SandboxApiError } from './types.js';\nimport type {\n ExecRequest,\n ExecResponse,\n SandboxClient,\n SandboxCreateRequest,\n SandboxInfo,\n SSEEvent,\n} from './types.js';\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\n/**\n * Create a new {@link SandboxClient} that talks to the Sandbox Worker at\n * `baseUrl` using the given Bearer `token` for authentication.\n */\nexport function createSandboxClient(\n baseUrl: string,\n token?: string,\n options: { actingUserId?: string } = {},\n): SandboxClient {\n const actingUserId = options.actingUserId;\n // Strip trailing slash from baseUrl for consistent URL building\n const base = baseUrl.replace(/\\/+$/, '');\n\n // -----------------------------------------------------------------------\n // Internal helpers\n // -----------------------------------------------------------------------\n\n /** Make an authenticated JSON request to the Sandbox Worker HTTP API. */\n async function request<T>(method: string, path: string, body?: unknown, timeoutMs = 30_000, externalSignal?: AbortSignal): Promise<T> {\n const controller = new AbortController();\n const timeoutId = timeoutMs > 0 ? setTimeout(() => controller.abort(), timeoutMs) : null;\n // Forward external abort (e.g. from SIGINT handler) to our controller\n if (externalSignal) {\n if (externalSignal.aborted) { controller.abort(); }\n else { externalSignal.addEventListener('abort', () => controller.abort(), { once: true }); }\n }\n try {\n const headers: Record<string, string> = {};\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n if (actingUserId) {\n headers['X-Acting-User-Id'] = actingUserId;\n }\n\n const init: RequestInit = { method, headers, signal: controller.signal };\n\n if (body !== undefined) {\n headers['Content-Type'] = 'application/json';\n init.body = JSON.stringify(body);\n }\n\n const res = await fetch(`${base}${path}`, init);\n\n if (!res.ok) {\n const text = await res.text();\n throw new SandboxApiError(`Sandbox API ${method} ${path} failed (${res.status}): ${text}`, res.status);\n }\n\n return res.json() as Promise<T>;\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n if (externalSignal?.aborted) {\n throw Object.assign(new Error(`Sandbox API request aborted: ${method} ${path}`), { name: 'AbortError' });\n }\n throw new Error(`Sandbox API request timed out after ${timeoutMs}ms: ${method} ${path}`);\n }\n throw err;\n } finally {\n if (timeoutId) clearTimeout(timeoutId);\n }\n }\n\n // -----------------------------------------------------------------------\n // SSE parser\n // -----------------------------------------------------------------------\n\n async function consumeSSE(\n body: ReadableStream<Uint8Array>,\n onEvent: (event: SSEEvent) => void,\n ): Promise<void> {\n const decoder = new TextDecoder();\n const reader = body.getReader();\n let buffer = '';\n\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n // Split on double-newline (SSE event boundary)\n const parts = buffer.split('\\n\\n');\n // The last element is either empty (if buffer ended with \\n\\n) or an\n // incomplete event -- keep it in the buffer.\n buffer = parts.pop() ?? '';\n\n for (const part of parts) {\n const trimmed = part.trim();\n if (!trimmed) continue;\n\n let eventType = '';\n let eventData = '';\n\n for (const line of trimmed.split('\\n')) {\n if (line.startsWith('event:')) {\n eventType = line.slice('event:'.length).trim();\n } else if (line.startsWith('data:')) {\n eventData = line.slice('data:'.length).trim();\n }\n }\n\n if (eventType && eventData) {\n try {\n const parsed = JSON.parse(eventData);\n onEvent({ type: eventType, data: parsed } as SSEEvent);\n } catch (parseErr) {\n console.warn(`Malformed SSE event (type=${eventType}): ${eventData.substring(0, 200)}`);\n }\n }\n }\n }\n }\n\n // -----------------------------------------------------------------------\n // Public API (HTTP endpoints on the Sandbox Worker, not child_process)\n // -----------------------------------------------------------------------\n\n return {\n // -- Lifecycle --------------------------------------------------------\n\n async createSandbox(options: SandboxCreateRequest): Promise<SandboxInfo> {\n return request<SandboxInfo>('POST', '/api/sandbox', options, 300_000);\n },\n\n async getSandboxStatus(id: string): Promise<SandboxInfo> {\n return request<SandboxInfo>('GET', `/api/sandbox/${id}/status`);\n },\n\n async destroySandbox(id: string): Promise<void> {\n // 60s timeout: the worker runs git-safety (up to 15s) + container destroy\n await request<unknown>('DELETE', `/api/sandbox/${id}`, undefined, 60_000);\n },\n\n // -- Task invocation (Sandbox Worker HTTP API) -------------------------\n\n async exec(options: ExecRequest, signal?: AbortSignal): Promise<ExecResponse> {\n // POST /api/exec on the Sandbox Worker (not child_process)\n return request<ExecResponse>('POST', '/api/exec', options, 0, signal);\n },\n\n // -- Streaming invocation (SSE) ----------------------------------------\n\n async run(options: ExecRequest, onEvent: (event: SSEEvent) => void, signal?: AbortSignal): Promise<void> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n if (actingUserId) {\n headers['X-Acting-User-Id'] = actingUserId;\n }\n\n const res = await fetch(`${base}/api/run`, {\n method: 'POST',\n headers,\n body: JSON.stringify(options),\n signal,\n });\n\n if (!res.ok) {\n const text = await res.text();\n throw new SandboxApiError(`Sandbox API POST /api/run failed (${res.status}): ${text}`, res.status);\n }\n\n if (!res.body) {\n throw new Error('Sandbox API POST /api/run returned no body');\n }\n\n await consumeSSE(res.body, onEvent);\n },\n\n // -- URL builders -----------------------------------------------------\n\n getTerminalUrl(id: string): string {\n return `${base}/sandbox/${id}/terminal`;\n },\n\n getWsUrl(id: string): string {\n const wsBase = base\n .replace(/^https:\\/\\//, 'wss://')\n .replace(/^http:\\/\\//, 'ws://');\n return `${wsBase}/sandbox/${id}/ws`;\n },\n };\n}\n", "export { createSandboxClient } from './client.js';\nexport { SandboxApiError } from './types.js';\nexport type {\n ExecRequest,\n ExecResponse,\n SandboxClient,\n SandboxCreateRequest,\n SandboxInfo,\n SSEEvent,\n SyncFile,\n} from './types.js';\n", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [options.isServer=false] Create the instance in either\n * server or client mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n */\n constructor(options) {\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._maxPayload = this._options.maxPayload | 0;\n this._isServer = !!this._options.isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n (typeof params.client_max_window_bits === 'number'\n ? opts.clientMaxWindowBits > params.client_max_window_bits\n : !params.client_max_window_bits))\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxBufferedChunks = options.maxBufferedChunks | 0;\n this._maxFragments = options.maxFragments | 0;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n if (\n this._maxBufferedChunks > 0 &&\n this._buffers.length >= this._maxBufferedChunks\n ) {\n cb(\n this.createError(\n RangeError,\n 'Too many buffered chunks',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n )\n );\n return;\n }\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._maxFragments > 0 && ++this._numFragments > this._maxFragments) {\n const error = this.createError(\n RangeError,\n 'Too many message fragments',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n );\n\n cb(error);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._numFragments = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\nconst {\n types: { isUint8Array }\n} = require('util');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else if (isUint8Array(data)) {\n buf.set(data, 2);\n } else {\n throw new TypeError('Second argument must be a string or a Uint8Array');\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxBufferedChunks: options.maxBufferedChunks,\n maxFragments: options.maxFragments,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate({\n ...opts.perMessageDeflate,\n isServer: false,\n maxPayload: opts.maxPayload\n });\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxBufferedChunks: opts.maxBufferedChunks,\n maxFragments: opts.maxFragments,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxBufferedChunks=262144] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=16384] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxBufferedChunks: 256 * 1024,\n maxFragments: 16 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate({\n ...this.options.perMessageDeflate,\n isServer: true,\n maxPayload: this.options.maxPayload\n });\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxBufferedChunks: this.options.maxBufferedChunks,\n maxFragments: this.options.maxFragments,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n", "import createWebSocketStream from './lib/stream.js';\nimport extension from './lib/extension.js';\nimport PerMessageDeflate from './lib/permessage-deflate.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport subprotocol from './lib/subprotocol.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport {\n createWebSocketStream,\n extension,\n PerMessageDeflate,\n Receiver,\n Sender,\n subprotocol,\n WebSocket,\n WebSocketServer\n};\n\nexport default WebSocket;\n", "/**\n * WebSocket terminal bridge\n *\n * Connects a WebSocket to the local terminal in raw mode,\n * piping stdin -> WS and WS -> stdout for an interactive\n * terminal session inside a Cloudflare Sandbox.\n *\n * Includes automatic reconnection with exponential backoff (up to 10\n * attempts) so transient network issues don't kill the session.\n *\n * The container's .bashrc handles all setup (env, cd, clear).\n * This is a pure stdin/stdout bridge \u2014 no commands are sent, no output is\n * suppressed. The `clear` in .bashrc wipes any shell noise before the coding agent\n * starts rendering.\n */\n\nimport WebSocket from 'ws';\n\nconst MAX_RECONNECT = 10;\nconst BASE_DELAY_MS = 1000;\nconst HEARTBEAT_INTERVAL_MS = 60_000;\n\n/**\n * Derive the HTTP heartbeat URL from the WebSocket URL.\n * ws(s)://host/sandbox/:id/ws?token=tok \u2192 https://host/sandbox/:id/heartbeat?token=tok\n */\nfunction deriveHeartbeatUrl(wsUrl: string): string {\n return wsUrl\n .replace(/^wss:/, 'https:')\n .replace(/^ws:/, 'http:')\n .replace(/\\/ws\\?/, '/heartbeat?');\n}\n\n/**\n * Open a WebSocket connection to the given URL and bridge it to\n * the local terminal (stdin/stdout) in raw mode.\n *\n * Automatically reconnects on unexpected close (up to MAX_RECONNECT attempts).\n * Returns 0 on clean close, throws on unrecoverable error.\n */\nexport async function connectTerminal(wsUrl: string, sessionId?: string): Promise<number> {\n let reconnectAttempts = 0;\n let intentionalClose = false;\n\n function connect(): Promise<number> {\n return new Promise<number>((resolve, reject) => {\n const ws = new WebSocket(wsUrl);\n\n let isRaw = false;\n\n function enterRawMode(): void {\n if (process.stdin.isTTY && !isRaw) {\n process.stdin.setRawMode(true);\n isRaw = true;\n }\n process.stdin.resume();\n }\n\n function exitRawMode(): void {\n if (process.stdin.isTTY && isRaw) {\n process.stdin.setRawMode(false);\n isRaw = false;\n }\n process.stdin.pause();\n }\n\n function onStdinData(data: Buffer): void {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(data);\n }\n }\n\n function onResize(): void {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify({\n type: 'resize',\n cols: process.stdout.columns || 80,\n rows: process.stdout.rows || 24,\n }));\n }\n }\n\n function cleanup(): void {\n if (pingInterval) {\n clearInterval(pingInterval);\n pingInterval = null;\n }\n if (heartbeatInterval) {\n clearInterval(heartbeatInterval);\n heartbeatInterval = null;\n }\n process.stdin.removeListener('data', onStdinData);\n process.stdout.removeListener('resize', onResize);\n exitRawMode();\n }\n\n // Keepalive: ping every 30s to detect dead connections early.\n // Without this, firewalls/proxies can silently drop idle TCP connections\n // and the client won't know until it tries to send data.\n let pingInterval: ReturnType<typeof setInterval> | null = null;\n\n // HTTP heartbeat: reset the container's sleepAfter timer via an HTTP\n // request to the DO. WebSocket messages don't trigger the DO's\n // renewActivityTimeout \u2014 only containerFetch (HTTP) does.\n let heartbeatInterval: ReturnType<typeof setInterval> | null = null;\n const heartbeatUrl = deriveHeartbeatUrl(wsUrl);\n\n ws.on('open', () => {\n reconnectAttempts = 0;\n enterRawMode();\n process.stdin.on('data', onStdinData);\n process.stdout.on('resize', onResize);\n\n pingInterval = setInterval(() => {\n if (ws.readyState === WebSocket.OPEN) {\n ws.ping();\n }\n }, 30_000);\n\n // Send heartbeat immediately, then every 60s. Fire-and-forget: a\n // missed heartbeat just means the container's idle timer isn't\n // reset this cycle, not a session-ending failure.\n fetch(heartbeatUrl, { method: 'POST' }).catch((err) => {\n process.stderr.write(`\\r\\n[heartbeat] ${err instanceof Error ? err.message : String(err)}\\r\\n`);\n });\n heartbeatInterval = setInterval(() => {\n fetch(heartbeatUrl, { method: 'POST' }).catch((err) => {\n process.stderr.write(`\\r\\n[heartbeat] ${err instanceof Error ? err.message : String(err)}\\r\\n`);\n });\n }, HEARTBEAT_INTERVAL_MS);\n });\n\n ws.on('message', (data: WebSocket.RawData, isBinary: boolean) => {\n if (isBinary) {\n const buf = Buffer.isBuffer(data)\n ? data\n : data instanceof ArrayBuffer\n ? Buffer.from(data)\n : Buffer.concat(Array.from(data));\n\n process.stdout.write(buf);\n return;\n }\n\n // Text frames: try to parse as JSON control message, otherwise raw terminal data\n const text = Buffer.isBuffer(data) ? data.toString() : String(data);\n let msg: unknown;\n try {\n msg = JSON.parse(text);\n } catch {\n // If it looks like a JSON control message but failed to parse, warn\n const trimmed = text.trim();\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) {\n process.stderr.write(`[Malformed control message: ${trimmed.substring(0, 80)}]\\r\\n`);\n }\n process.stdout.write(text);\n return;\n }\n if (msg && typeof msg === 'object' && (msg as Record<string, unknown>).type === 'ready') {\n const cols = process.stdout.columns || 80;\n const rows = process.stdout.rows || 24;\n ws.send(JSON.stringify({ type: 'resize', cols, rows }));\n }\n });\n\n ws.on('close', () => {\n cleanup();\n\n if (intentionalClose) {\n resolve(0);\n return;\n }\n\n // Attempt reconnection\n if (reconnectAttempts < MAX_RECONNECT) {\n reconnectAttempts++;\n const delay = BASE_DELAY_MS * Math.pow(2, Math.min(reconnectAttempts - 1, 5));\n const jitter = Math.random() * delay * 0.1;\n process.stderr.write(`\\r\\n[Connection lost. Reconnecting (${reconnectAttempts}/${MAX_RECONNECT})...]\\r\\n`);\n setTimeout(() => {\n connect().then(resolve, reject);\n }, delay + jitter);\n } else {\n process.stderr.write('\\r\\n[Connection lost. Max reconnect attempts reached.]\\r\\n');\n resolve(1);\n }\n });\n\n // Only log errors here \u2014 don't reconnect. WebSocket always fires\n // 'close' after 'error', so the close handler handles reconnection.\n // Reconnecting from both handlers causes exponential connection\n // duplication (1\u21922\u21924\u21928 parallel connections).\n ws.on('error', (err: Error) => {\n process.stderr.write(`\\r\\n[Connection error: ${err.message}]\\r\\n`);\n });\n });\n }\n\n // Listen for SIGINT to cleanly close without triggering reconnection\n const sigintHandler = () => {\n intentionalClose = true;\n };\n process.once('SIGINT', sigintHandler);\n\n try {\n return await connect();\n } finally {\n process.removeListener('SIGINT', sigintHandler);\n }\n}\n", "/**\n * Launch command - creates a new session, backed by a Cloudflare Sandbox instance\n *\n * Always connects via WebSocket terminal bridge (stdin/stdout in raw mode).\n */\n\nimport { checkSyncPayload } from '../sync/payload-size.js';\nimport chalk from 'chalk';\nimport * as readline from 'readline';\nimport { SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport type { ProxyMode } from '@spacecode/shared/remote';\nimport type { SandboxClient, SandboxInfo } from '@spacecode/sandbox-client';\nimport { createSignalHandler, registerSignalHandlers, removeSignalHandlers } from '../utils/signals.js';\nimport { logInfo, addBreadcrumb } from '../posthog.js';\nimport { resolveAuthToken, sandboxClientOptions } from '../config.js';\nimport { buildEnvVars } from '../utils/env.js';\nimport { isValidSandboxName } from '@spacecode/shared';\nimport { loadSessions, saveSession, markSessionDestroyed, isNameTaken } from '../sessions.js';\n\n/**\n * Check if a GitHub repo exists and is not archived\n */\nasync function repoExists(owner: string, name: string): Promise<boolean> {\n // Validate inputs to prevent shell injection\n if (!/^[a-zA-Z0-9._-]+$/.test(owner) || !/^[a-zA-Z0-9._-]+$/.test(name)) {\n return false;\n }\n const { runOutput } = await import('../utils/exec.js');\n try {\n const json = await runOutput(`gh repo view ${owner}/${name} --json name,isArchived`);\n const repo = JSON.parse(json);\n return !repo.isArchived;\n } catch {\n return false;\n }\n}\n\n/**\n * Expand a short repo name to full GitHub URL\n * Searches user's repos and org repos if just a name is provided\n * Examples:\n * \"myrepo\" -> \"github.com/username/myrepo\" or \"github.com/org/myrepo\"\n * \"owner/repo\" -> \"github.com/owner/repo\"\n * \"github.com/owner/repo\" -> unchanged\n * \"https://github.com/owner/repo\" -> unchanged\n */\nasync function expandRepoName(repo: string): Promise<string> {\n const { runOutput } = await import('../utils/exec.js');\n\n // Already a full URL\n if (repo.includes('://')) {\n return repo;\n }\n\n // Has github.com but no protocol prefix\n if (repo.includes('github.com')) {\n return `https://${repo}`;\n }\n\n // Has owner/repo format\n if (repo.includes('/')) {\n // Validate format to prevent shell injection\n if (!/^[a-zA-Z0-9._-]+\\/[a-zA-Z0-9._-]+$/.test(repo)) {\n throw new Error(`Invalid repo format: \"${repo}\"`);\n }\n return `https://github.com/${repo}`;\n }\n\n // Validate repo name to prevent shell injection\n if (!/^[a-zA-Z0-9._-]+$/.test(repo)) {\n throw new Error(`Invalid repo name: \"${repo}\"`);\n }\n\n // Just a repo name - search for it\n try {\n // Get username\n const userJson = await runOutput('gh api user');\n const user = JSON.parse(userJson);\n const username = user.login;\n\n if (username) {\n // First check if repo exists under user's account\n if (await repoExists(username, repo)) {\n return `https://github.com/${username}/${repo}`;\n }\n\n // Get list of orgs user has access to\n const orgsJson = await runOutput('gh api user/orgs --jq \".[].login\"');\n const orgs = orgsJson.trim().split('\\n').filter(Boolean);\n\n // Check each org for the repo\n for (const org of orgs) {\n if (await repoExists(org, repo)) {\n return `https://github.com/${org}/${repo}`;\n }\n }\n\n // Not found anywhere, default to user's namespace\n console.log(chalk.yellow(`Warning: Repo '${repo}' not found. Defaulting to ${username}/${repo}`));\n return `https://github.com/${username}/${repo}`;\n }\n } catch (e) {\n console.warn(chalk.dim(` Could not expand repo name via GitHub CLI \u2014 using as-is: ${e instanceof Error ? e.message : String(e)}`));\n }\n\n return repo;\n}\n\nexport interface LaunchOptions {\n repo?: string; // GitHub repository URL to clone into workspace\n newProject?: boolean; // Start a new project workflow\n newProjectName?: string; // Pre-specified project name (skips prompt if provided)\n destroy?: boolean; // Destroy session on exit (one-shot mode)\n idleTimeout?: number; // Auto-shutdown timeout in minutes (default: 15)\n proxyMode?: ProxyMode;\n name?: string; // Named session for easy reconnection\n ownKey?: boolean; // BYOK: skip proxy, let user auth in sandbox\n apiKey?: string; // BYOK: use a specific Anthropic API key\n}\n\n/**\n * Prompt user for input\n */\nasync function prompt(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\n/**\n * Prompt user for yes/no\n */\nasync function promptYesNo(question: string): Promise<boolean> {\n const answer = await prompt(`${question} (y/n): `);\n return answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';\n}\n\nexport async function launch(options: LaunchOptions): Promise<void> {\n // Track cleanup state for signal handlers (scoped to this invocation)\n let cleanupInProgress = false;\n let cleanupDone = false;\n let activeSessionId: string | null = null;\n let activeClient: SandboxClient | null = null;\n\n /**\n * Cleanup function that destroys the session\n * Can be called from signal handlers or normal exit\n */\n async function cleanupSession(signal?: string): Promise<void> {\n if (cleanupDone || cleanupInProgress || !activeSessionId || !activeClient) {\n return;\n }\n\n cleanupInProgress = true;\n\n try {\n await activeClient.destroySandbox(activeSessionId);\n await markSessionDestroyed(activeSessionId).catch((err) => {\n console.warn(chalk.dim(`Warning: Could not update local session registry: ${err instanceof Error ? err.message : String(err)}`));\n });\n console.log(chalk.green('Session destroyed.'));\n cleanupDone = true;\n } catch (error) {\n console.log(chalk.yellow('Warning: Failed to destroy session.'));\n console.log(chalk.dim(`Session ID: ${activeSessionId}`));\n console.log(chalk.dim(`Error: ${error instanceof Error ? error.message : String(error)}`));\n console.log(chalk.yellow(`Run \\`spacecode destroy ${activeSessionId}\\` to clean up manually.`));\n } finally {\n cleanupInProgress = false;\n }\n }\n\n // Track launch in Sentry\n addBreadcrumb('launch', 'cli', 'info');\n logInfo('spacecode launch started', {\n hasRepo: !!options.repo,\n isNewProject: options.newProject,\n destroy: options.destroy,\n });\n\n console.log(chalk.bold('\\nspacecode launch\\n'));\n\n // \u2500\u2500 Interactive prompts (before any async work) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n let repoUrl: string | undefined;\n\n if (!options.repo && !options.newProject) {\n const startNew = await promptYesNo(chalk.bold('Start a new project?'));\n if (startNew) {\n options.newProject = true;\n }\n }\n\n let newProjectName: string | undefined;\n\n if (options.newProject) {\n newProjectName = options.newProjectName;\n\n if (!newProjectName) {\n console.log('');\n console.log(chalk.cyan('New Project Setup'));\n newProjectName = await prompt(chalk.bold('Project name: '));\n }\n\n if (!newProjectName) {\n console.error(chalk.red('Error: Project name is required.'));\n process.exit(1);\n }\n\n // Validate project name (alphanumeric, hyphens, underscores)\n if (!/^[a-zA-Z0-9_-]+$/.test(newProjectName)) {\n console.error(\n chalk.red('Error: Project name can only contain letters, numbers, hyphens, and underscores.')\n );\n process.exit(1);\n }\n\n console.log(chalk.dim(`Will create GitHub repo: ${newProjectName}`));\n console.log(\n chalk.dim('After connecting, paste your PRD and the AI agent will guide you through project setup.')\n );\n console.log('');\n }\n\n // \u2500\u2500 Parallel setup: auth, config, repo expansion, name check \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // All independent \u2014 run concurrently to minimize wall-clock time.\n\n console.log(chalk.dim('Setting up...'));\n\n const syncImport = import('../sync/config.js');\n const clientImport = import('@spacecode/sandbox-client');\n\n const [token, { getGitHubToken }, { createSandboxClient }] = await Promise.all([\n resolveAuthToken(),\n syncImport,\n clientImport,\n ]);\n\n // Run repo expansion, config gathering, and name check in parallel\n const repoPromise = options.repo ? expandRepoName(options.repo) : Promise.resolve(undefined);\n const ghTokenPromise = getGitHubToken();\n const gitConfigPromise = (async () => {\n const { runOutput } = await import('../utils/exec.js');\n const [name, email] = await Promise.all([\n runOutput('git config --global user.name').catch(() => ''),\n runOutput('git config --global user.email').catch(() => ''),\n ]);\n return { name: name.trim(), email: email.trim() };\n })();\n const nameCheckPromise = options.name ? (async () => {\n if (!isValidSandboxName(options.name!)) {\n console.error(chalk.red(`\\nInvalid session name \"${options.name}\".`));\n console.log(chalk.dim('Names must be 1-64 characters starting with alphanumeric, then alphanumeric, dots, hyphens, or underscores.'));\n process.exit(1);\n }\n const sessions = await loadSessions();\n const existing = isNameTaken(sessions, options.name!);\n if (existing) {\n console.log(chalk.yellow(`\\nSession \"${options.name}\" already exists (${existing.id}, ${existing.status}).`));\n if (existing.status === 'running') {\n console.log(chalk.dim(`Run: spacecode attach ${options.name}`));\n }\n process.exit(1);\n }\n })() : Promise.resolve();\n\n const [resolvedRepo, ghToken, gitConfig] = await Promise.all([\n repoPromise,\n ghTokenPromise,\n gitConfigPromise,\n nameCheckPromise,\n ]);\n\n // Startup files written into the sandbox (the .bashrc pair below).\n const files: Array<{ path: string; content: string }> = [];\n\n repoUrl = resolvedRepo;\n if (repoUrl) console.log(chalk.dim(`Repo: ${repoUrl}`));\n\n const envVars = buildEnvVars({\n ghToken,\n proxyMode: options.proxyMode,\n newProjectName,\n gitUserName: gitConfig.name,\n gitUserEmail: gitConfig.email,\n skipProxy: options.ownKey,\n customApiKey: options.apiKey,\n });\n\n // Signals the sandbox-worker that this is a CLI terminal session (isCLIMode).\n envVars.SPACECODE_AGENT_STARTED = '1';\n\n // Setup (env, cd, clear) runs inside .bashrc during shell init, so nothing is typed into the PTY.\n\n const repoName = repoUrl\n ? (repoUrl.split('/').pop()?.replace(/\\.git$/, '') ?? 'workspace')\n : '';\n if (repoName && !/^[a-zA-Z0-9._-]+$/.test(repoName)) {\n console.error(chalk.red(`Error: Unsafe repository name derived from URL: \"${repoName}\"`));\n process.exit(1);\n }\n const workDir = repoUrl ? `/workspace/${repoName}` : '/workspace';\n\n // The sandbox container starts as root, but the workspace and login shell\n // belong to the non-root \"user\" account. Copy env and git config over and switch.\n files.push({\n path: '/root/.bashrc',\n content: [\n '# spacecode: switch to non-root user',\n 'if [ -z \"$_CR_INIT\" ]; then',\n ' export _CR_INIT=1',\n ' cp /root/.env /home/user/.env 2>/dev/null',\n ' cp /root/.gitconfig /home/user/.gitconfig 2>/dev/null',\n ' chown -R user:user /home/user/ /workspace/ 2>/dev/null',\n ' [ ! -f /home/user/.env ] && echo \"WARNING: .env not copied - env vars may be missing. Re-run spacecode launch.\" >&2',\n ' exec su - user',\n 'fi',\n ].join('\\n') + '\\n',\n });\n // Ensure login shell sources .bashrc\n files.push({\n path: '/home/user/.bash_profile',\n content: '[ -f ~/.bashrc ] && . ~/.bashrc\\n',\n });\n // Login shell: source env and open the repo directory. No agent is launched.\n const userBashrc = [\n '# spacecode init (guarded to run once, not in subshells)',\n 'if [ -z \"$_SPACECODE_INIT\" ]; then',\n ' export _SPACECODE_INIT=1',\n ' source ~/.env 2>/dev/null',\n ` cd ${workDir} 2>/dev/null`,\n ' clear',\n 'fi',\n ].join('\\n') + '\\n';\n files.push({\n path: '/home/user/.bashrc',\n content: userBashrc,\n });\n\n // \u2500\u2500 Create session \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n try {\n checkSyncPayload(files);\n } catch (error) {\n console.error(chalk.red(`\\n${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n\n console.log(chalk.dim(`Creating session... (${files.length} config files)`));\n const client = createSandboxClient(SANDBOX_WORKER_URL, token, sandboxClientOptions(token));\n\n let sessionId: string;\n let sandboxInfo: SandboxInfo;\n\n try {\n sandboxInfo = await client.createSandbox({\n repo: repoUrl,\n files,\n envVars,\n idleTimeoutMinutes: options.idleTimeout,\n name: options.name,\n });\n\n sessionId = sandboxInfo.id;\n activeSessionId = sessionId;\n activeClient = client;\n\n // Save to local session registry\n await saveSession({\n id: sessionId,\n name: options.name,\n repo: repoUrl,\n status: 'running',\n createdAt: new Date().toISOString(),\n idleTimeoutMinutes: options.idleTimeout,\n });\n\n const displayName = options.name ? `${sessionId} (${options.name})` : sessionId;\n console.log(chalk.green(`Session created: ${displayName}`));\n\n if (sandboxInfo.warnings && sandboxInfo.warnings.length > 0) {\n for (const w of sandboxInfo.warnings) {\n console.log(chalk.yellow(` Warning: ${w}`));\n }\n }\n } catch (error) {\n console.error(chalk.red(`\\nError creating session: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n\n // \u2500\u2500 Register signal handlers for cleanup \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const handler = createSignalHandler(cleanupSession, true);\n registerSignalHandlers(handler);\n\n // \u2500\u2500 Connect via WebSocket terminal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const wsUrl = sandboxInfo.wsUrl ?? client.getWsUrl(sessionId);\n console.log(chalk.dim('Connecting...\\n'));\n\n try {\n const { connectTerminal } = await import('../utils/ws-terminal.js');\n const exitCode = await connectTerminal(wsUrl, sessionId);\n\n console.log(chalk.dim('\\nSession ended.'));\n\n removeSignalHandlers();\n while (cleanupInProgress) {\n await new Promise(resolve => setTimeout(resolve, 100));\n }\n\n if (options.destroy) {\n if (!cleanupDone) {\n await cleanupSession();\n }\n } else {\n console.log(chalk.dim(`Session still running (no web UI yet; ADR-15).`));\n console.log(chalk.dim(`Or reconnect: spacecode attach ${options.name ?? sessionId}`));\n console.log(chalk.dim(`Destroy: spacecode destroy ${options.name ?? sessionId}`));\n }\n\n process.exit(exitCode);\n } catch (error) {\n console.error(chalk.red('\\nError: WebSocket connection failed.'));\n console.error(chalk.dim(String(error)));\n\n removeSignalHandlers();\n while (cleanupInProgress) {\n await new Promise(resolve => setTimeout(resolve, 100));\n }\n\n if (options.destroy && !cleanupDone) {\n await cleanupSession();\n } else if (!options.destroy) {\n console.log(chalk.dim(`\\nSession ${sessionId} is still running.`));\n console.log(chalk.dim(`Destroy: spacecode destroy ${options.name ?? sessionId}`));\n }\n\n process.exit(1);\n }\n}\n", "/**\n * List command - lists all sessions for the user\n *\n * Shows sessions from the local registry (~/.spacecode/sessions.json).\n * Falls back to the backend API if available.\n */\n\nimport chalk from 'chalk';\nimport { loadSessions, activeSessions, pruneSessions, type SessionRecord } from '../sessions.js';\n\nfunction formatAge(date: Date): string {\n const ms = Date.now() - date.getTime();\n const minutes = Math.floor(ms / 60_000);\n if (minutes < 60) return `${minutes}m`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours}h ${minutes % 60}m`;\n const days = Math.floor(hours / 24);\n return `${days}d ${hours % 24}h`;\n}\n\nfunction statusColor(status: string): (s: string) => string {\n switch (status) {\n case 'running': return chalk.green;\n case 'stopped': return chalk.yellow;\n case 'destroyed': return chalk.dim;\n default: return chalk.white;\n }\n}\n\nfunction formatSessionRow(s: SessionRecord): string {\n const id = s.id.padEnd(10);\n const name = (s.name ?? '-').padEnd(20);\n const status = statusColor(s.status)(s.status.toUpperCase().padEnd(10));\n const repo = (s.repo ? s.repo.replace('https://github.com/', '') : '-').padEnd(30);\n const age = formatAge(new Date(s.createdAt)).padEnd(10);\n return ` ${id} ${name} ${status} ${repo} ${age}`;\n}\n\nexport interface ListOptions {\n all?: boolean;\n}\n\nexport async function list(options: ListOptions = {}): Promise<void> {\n console.log(chalk.bold('\\nSessions\\n'));\n\n // Auto-prune old destroyed sessions -- best-effort, listing must still work if this fails\n await pruneSessions(24).catch((err) => {\n console.warn(chalk.dim(`Warning: Could not prune old sessions: ${err instanceof Error ? err.message : String(err)}`));\n });\n\n const sessions = await loadSessions();\n\n if (sessions.length === 0) {\n console.log(chalk.dim('No sessions found.'));\n console.log(chalk.dim('\\nRun `spacecode launch` to create one.'));\n return;\n }\n\n const display = options.all ? sessions : activeSessions(sessions);\n\n if (display.length === 0) {\n console.log(chalk.dim('No active sessions.'));\n console.log(chalk.dim('\\nRun `spacecode launch` to create one.'));\n console.log(chalk.dim('Run `spacecode list --all` to show destroyed sessions.'));\n return;\n }\n\n // Header\n const header = ` ${'ID'.padEnd(10)} ${'NAME'.padEnd(20)} ${'STATUS'.padEnd(10)} ${'REPO'.padEnd(30)} ${'AGE'.padEnd(10)}`;\n console.log(chalk.dim(header));\n console.log(chalk.dim(' ' + '\\u2500'.repeat(82)));\n\n for (const session of display) {\n console.log(formatSessionRow(session));\n }\n\n // Summary\n const running = display.filter(s => s.status === 'running').length;\n const stopped = display.filter(s => s.status === 'stopped').length;\n console.log();\n console.log(chalk.dim(`Running: ${running} Stopped: ${stopped} Total: ${display.length}`));\n}\n", "/**\n * Status command - shows current session status\n *\n * Delegates to `list` since sessions are tracked via the local registry.\n */\n\nimport { list } from './list.js';\n\nexport async function status(): Promise<void> {\n await list({});\n}\n", "/**\n * Stop command - sessions auto-sleep, so this informs the user\n * and offers to destroy the session instead.\n */\n\nimport chalk from 'chalk';\nimport { SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport { resolveAuthToken, sandboxClientOptions } from '../config.js';\n\nexport async function stop(sessionId: string): Promise<void> {\n console.log(chalk.bold('\\nspacecode stop\\n'));\n\n console.log(chalk.yellow('Sessions auto-sleep when idle -- there is no separate stop action.'));\n console.log('');\n console.log(chalk.dim('If you want to permanently remove a session, use:'));\n console.log(chalk.dim(` spacecode destroy ${sessionId}`));\n console.log('');\n\n // Optionally show the session status so the user knows what state it's in\n try {\n const token = await resolveAuthToken();\n const { createSandboxClient } = await import('@spacecode/sandbox-client');\n const client = createSandboxClient(SANDBOX_WORKER_URL, token, sandboxClientOptions(token));\n\n const info = await client.getSandboxStatus(sessionId);\n console.log(chalk.dim(`Session ${sessionId} is currently: ${info.status}`));\n } catch (error) {\n // If we can't get status, that's fine -- just show the informational message\n console.log(chalk.dim(`Could not retrieve session status: ${error instanceof Error ? error.message : String(error)}`));\n }\n}\n", "/**\n * Destroy command - destroys a specific session\n *\n * Accepts a session ID or name from the local registry.\n */\n\nimport chalk from 'chalk';\nimport { SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport { resolveAuthToken, sandboxClientOptions } from '../config.js';\nimport { loadSessions, resolveSession, markSessionDestroyed } from '../sessions.js';\n\nexport async function destroy(idOrName: string): Promise<void> {\n console.log(chalk.bold('\\nDestroying session...\\n'));\n\n // \u2500\u2500 Resolve name to ID \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n let sessionId = idOrName;\n const sessions = await loadSessions();\n const session = resolveSession(sessions, idOrName);\n\n if (session) {\n sessionId = session.id;\n const label = session.name ? `\"${session.name}\" (${session.id})` : session.id;\n console.log(chalk.dim(`Session: ${label}`));\n }\n\n // \u2500\u2500 Auth & client \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const token = await resolveAuthToken();\n const { createSandboxClient, SandboxApiError } = await import('@spacecode/sandbox-client');\n const client = createSandboxClient(SANDBOX_WORKER_URL, token, sandboxClientOptions(token));\n\n // Check session status first\n try {\n const info = await client.getSandboxStatus(sessionId);\n console.log(chalk.dim(`Session ${sessionId} is currently: ${info.status}`));\n } catch (error) {\n if (error instanceof SandboxApiError && error.status === 404) {\n // Still clean up local registry even if session is already gone\n await markSessionDestroyed(sessionId).catch((err) => {\n console.warn(chalk.dim(`Warning: Could not update local session registry: ${err instanceof Error ? err.message : String(err)}`));\n });\n throw new Error(`Session '${idOrName}' not found. Run \\`spacecode list\\` to see available sessions.`);\n }\n console.log(chalk.dim(`Could not check session status: ${error instanceof Error ? error.message : String(error)}`));\n }\n\n // Destroy the session\n console.log(`Destroying session ${chalk.cyan(sessionId)}...`);\n\n try {\n await client.destroySandbox(sessionId);\n await markSessionDestroyed(sessionId).catch((err) => {\n console.warn(chalk.dim(`Warning: Could not update local session registry: ${err instanceof Error ? err.message : String(err)}`));\n });\n console.log(chalk.green(`\\nSession destroyed successfully.`));\n } catch (error) {\n throw new Error(`Failed to destroy session: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n", "/**\n * Clean command - prune stale task records\n *\n * Since sandbox tasks complete synchronously (exec blocks until done),\n * there are no persistent sandboxes to destroy. This command simply\n * prunes stale task records from local config.\n */\n\nimport chalk from 'chalk';\nimport { loadTasks, updateTask, pruneTasks } from '../config.js';\n\nexport interface CleanOptions {\n force?: boolean;\n}\n\nexport async function clean(options: CleanOptions = {}): Promise<void> {\n console.log(chalk.bold('\\nCleaning up stale task records...\\n'));\n\n const allTasks = await loadTasks();\n\n // Find running tasks (likely stale since sandbox exec blocks until done)\n const staleTasks = allTasks.filter(t => t.status === 'running' || t.status === 'pending');\n\n if (staleTasks.length === 0) {\n console.log(chalk.green('No stale tasks to clean up.'));\n\n // Also prune old completed tasks\n const pruned = await pruneTasks();\n if (pruned > 0) {\n console.log(chalk.dim(`Pruned ${pruned} old completed task(s).`));\n }\n return;\n }\n\n if (!options.force) {\n console.log(chalk.yellow(`Found ${staleTasks.length} stale task(s):`));\n for (const t of staleTasks) {\n console.log(chalk.dim(` - ${t.id} (${t.status}) ${t.repo}`));\n }\n console.log(chalk.dim('\\nUse --force to mark them as completed and prune old records.'));\n return;\n }\n\n // Mark stale tasks as completed\n let cleaned = 0;\n for (const task of staleTasks) {\n await updateTask(task.id, {\n status: 'completed',\n completedAt: new Date().toISOString(),\n });\n console.log(chalk.dim(` Marked ${task.id} as completed.`));\n cleaned++;\n }\n\n // Also prune old completed tasks\n const pruned = await pruneTasks();\n\n console.log('');\n console.log(chalk.green(`Cleaned ${cleaned} stale task(s).`));\n if (pruned > 0) {\n console.log(chalk.dim(`Pruned ${pruned} old completed task(s).`));\n }\n}\n", "/**\n * Shared input validation and sanitization utilities\n *\n * Used by exec, run, and other commands that accept user-provided\n * repo names, branch names, and prompts.\n */\n\nimport chalk from 'chalk';\n\n/**\n * Validate and sanitize repo URL.\n * Ensures the repo is in a safe format (owner/repo or full GitHub URL).\n * Owner and repo names must be alphanumeric with hyphens/underscores, max 39 chars each.\n */\nexport function validateRepo(repo: string): string {\n // Remove any shell metacharacters and control characters\n const sanitized = repo.trim().replace(/[;&|`$()<>]/g, '').replace(/[\\x00-\\x1F\\x7F]/g, '');\n\n // Strict format: owner/repo where both are:\n // - Alphanumeric, hyphens, or underscores only\n // - Cannot start or end with hyphen\n // - Max 39 characters each (GitHub limit)\n const validFormat = /^(?:https:\\/\\/github\\.com\\/)?[A-Za-z0-9](?:[A-Za-z0-9_-]{0,37}[A-Za-z0-9])?\\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,37}[A-Za-z0-9])?$/;\n if (!validFormat.test(sanitized)) {\n throw new Error(`Invalid repo format: '${repo}'. Use 'owner/repo' or 'https://github.com/owner/repo' (alphanumeric, hyphens, underscores only)`);\n }\n\n return sanitized;\n}\n\n/**\n * Validate and sanitize branch name.\n * Ensures the branch name is safe for git operations.\n */\nexport function validateBranch(branch: string): string {\n // Git branch restrictions: no .., no leading/trailing ., no ~, ^, :, ?, *, [, etc.\n const sanitized = branch.trim().replace(/[;&|`$()<>]/g, '');\n\n // Basic validation - disallow obviously dangerous patterns\n if (/\\.\\./.test(sanitized)) {\n throw new Error(`Invalid branch name: contains '..'`);\n }\n\n if (/^[@~]/.test(sanitized)) {\n throw new Error(`Invalid branch name: starts with '@' or '~'`);\n }\n\n // Max length for git refs\n if (sanitized.length > 256) {\n throw new Error(`Invalid branch name: too long (max 256 characters)`);\n }\n\n return sanitized;\n}\n\n/**\n * Validate and sanitize prompt.\n * Removes or escapes potentially dangerous characters while preserving content.\n */\nexport function validatePrompt(prompt: string): string {\n // Remove control characters except newlines and tabs\n let sanitized = prompt.replace(/[\\x00-\\x08\\x0B-\\x0C\\x0E-\\x1F\\x7F]/g, '');\n\n // Limit prompt length to prevent abuse\n const MAX_PROMPT_LENGTH = 100000; // 100k characters\n if (sanitized.length > MAX_PROMPT_LENGTH) {\n console.warn(chalk.dim(`Warning: Prompt truncated to ${MAX_PROMPT_LENGTH} characters`));\n sanitized = sanitized.substring(0, MAX_PROMPT_LENGTH);\n }\n\n return sanitized;\n}\n", "/**\n * Shared task utilities\n *\n * Common functions used across exec, run, and exec-batch commands.\n */\n\n/**\n * Generate a unique task ID.\n * Format: task-<base36-timestamp>-<random-4-chars>\n */\nexport function generateTaskId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 6);\n return `task-${timestamp}-${random}`;\n}\n\n/**\n * Truncate a string for display, adding ellipsis if needed.\n */\nexport function truncate(str: string, maxLen: number): string {\n if (str.length <= maxLen) return str;\n return str.substring(0, maxLen - 3) + '...';\n}\n", "/**\n * Shared setup for run, exec, and headless commands\n *\n * Extracts the duplicated env-var construction,\n * and sandbox-client creation shared by run.ts, exec.ts, and headless.ts.\n */\n\nimport type { SandboxClient } from '@spacecode/sandbox-client';\nimport type { ProxyMode } from '@spacecode/shared/remote';\nimport { SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport { resolveAuthToken, sandboxClientOptions } from '../config.js';\nimport { getGitHubToken } from '../sync/config.js';\nimport { buildEnvVars } from './env.js';\n\nexport interface RunSetupResult {\n client: SandboxClient;\n envVars: Record<string, string>;\n}\n\n/**\n * Gather config files, build env vars, and create a sandbox client.\n *\n * Shared by `run`, `exec`, and `headless` commands so the setup logic\n * lives in exactly one place.\n */\nexport async function setupRun(options?: { proxyMode?: ProxyMode }): Promise<RunSetupResult> {\n // Build env vars\n const ghToken = await getGitHubToken();\n const envVars = buildEnvVars({ ghToken, proxyMode: options?.proxyMode });\n\n // Create sandbox client\n const token = await resolveAuthToken();\n const { createSandboxClient } = await import('@spacecode/sandbox-client');\n const client = createSandboxClient(SANDBOX_WORKER_URL, token, sandboxClientOptions(token));\n\n return { client, envVars };\n}\n", "import type { RemoteTask, TaskStatus } from '@spacecode/shared/remote';\n\n/** Input shape for `buildRemoteTask`. */\nexport interface RemoteTaskInput {\n id: string;\n repo: string;\n prompt: string;\n mode: RemoteTask['mode'];\n status: TaskStatus;\n exitCode?: number;\n branch?: string;\n error?: string;\n groupId?: string;\n prUrl?: string;\n}\n\n/**\n * Build a sandbox-backed RemoteTask record. Fixed sandbox fields are set here;\n * optional fields are only present when defined.\n * (Initial draft generated by Codemind build 82d40527; `as any` casts removed.)\n */\nexport function buildRemoteTask(input: RemoteTaskInput): RemoteTask {\n const now = new Date().toISOString();\n const task: RemoteTask = {\n id: input.id,\n machineId: 'sandbox',\n machineName: 'sandbox',\n repo: input.repo,\n prompt: input.prompt,\n mode: input.mode,\n status: input.status,\n region: 'auto',\n size: 'sandbox',\n createdAt: now,\n completedAt: now,\n };\n if (input.exitCode !== undefined) task.exitCode = input.exitCode;\n if (input.branch !== undefined) task.branch = input.branch;\n if (input.error !== undefined) task.error = input.error;\n if (input.groupId !== undefined) task.groupId = input.groupId;\n if (input.prUrl !== undefined) task.prUrl = input.prUrl;\n return task;\n}\n\n/** 'completed' on success, otherwise 'failed'. */\nexport function statusFromResult(success: boolean): 'completed' | 'failed' {\n return success ? 'completed' : 'failed';\n}\n\n/** 'cancelled' when aborted, otherwise 'failed'. */\nexport function errorTaskStatus(isAbort: boolean): 'cancelled' | 'failed' {\n return isAbort ? 'cancelled' : 'failed';\n}\n", "/**\n * Exec command - fire-and-forget task dispatch\n *\n * Sends a task to the Cloudflare Sandbox Worker for headless execution.\n * The sandbox handles compute allocation, repo cloning, and coding agent CLI invocation.\n * The /api/exec endpoint blocks until done -- no polling needed.\n */\n\nimport chalk from 'chalk';\nimport type { TaskOptions } from '@spacecode/shared/remote';\nimport { validateRepo, validateBranch, validatePrompt } from '../utils/validation.js';\nimport { generateTaskId, truncate } from '../utils/task.js';\nimport { setupRun } from '../utils/run-setup.js';\nimport { buildRemoteTask, statusFromResult, errorTaskStatus } from '../utils/remote-task.js';\n\n/**\n * Dispatch a task to the Cloudflare Sandbox Worker\n */\nexport async function execTask(options: TaskOptions): Promise<void> {\n // Validate and sanitize user inputs\n const validRepo = validateRepo(options.repo);\n const validPrompt = validatePrompt(options.prompt);\n const validBranch = options.branch ? validateBranch(options.branch) : undefined;\n\n const taskId = generateTaskId();\n\n // Set up SIGINT handler to abort the in-flight request\n const abortController = new AbortController();\n const sigintHandler = () => {\n console.log(chalk.dim('\\nReceived SIGINT, aborting task...'));\n abortController.abort();\n };\n process.on('SIGINT', sigintHandler);\n\n // Print dispatch info\n console.log('');\n console.log(chalk.bold('Dispatching task...'));\n console.log(chalk.dim(` Task: ${taskId}`));\n console.log(chalk.dim(` Repo: ${options.repo}`));\n console.log(chalk.dim(` Prompt: ${truncate(options.prompt, 60)}`));\n if (options.branch) {\n console.log(chalk.dim(` Branch: ${options.branch}`));\n }\n console.log('');\n\n try {\n const { client, envVars } = await setupRun({ proxyMode: options.proxyMode });\n\n // Execute task (blocks until done -- no polling needed)\n console.log(chalk.dim(' Executing task...'));\n const result = await client.exec({\n repo: validRepo,\n prompt: validPrompt,\n envVars,\n branch: validBranch,\n noCommit: options.noCommit,\n idleTimeoutMinutes: options.idleTimeout,\n }, abortController.signal);\n\n // Save task record\n const { addTask } = await import('../config.js');\n const task = buildRemoteTask({\n id: taskId,\n repo: validRepo,\n prompt: validPrompt,\n mode: 'exec',\n status: statusFromResult(result.success),\n exitCode: result.exitCode,\n branch: validBranch,\n });\n await addTask(task);\n\n // Print result\n console.log('');\n if (result.success) {\n console.log(chalk.green('Task completed successfully!'));\n } else {\n console.log(chalk.red('Task failed.'));\n }\n\n console.log(chalk.bold(' Task ID: ') + chalk.cyan(taskId));\n\n if (result.logs) {\n console.log(chalk.dim('\\nOutput:'));\n console.log(result.logs);\n }\n\n if (result.diff) {\n console.log(chalk.dim('\\nDiff:'));\n console.log(result.diff);\n }\n\n if (!result.success) {\n process.exit(1);\n }\n } catch (error) {\n const isAbort = error instanceof Error && error.name === 'AbortError';\n\n // Save task record\n try {\n const { addTask } = await import('../config.js');\n const task = buildRemoteTask({\n id: taskId,\n repo: validRepo,\n prompt: validPrompt,\n mode: 'exec',\n status: errorTaskStatus(isAbort),\n error: isAbort ? 'Cancelled by user' : (error instanceof Error ? error.message : String(error)),\n });\n await addTask(task);\n } catch (saveErr) {\n console.warn(`Failed to save task record: ${saveErr instanceof Error ? saveErr.message : String(saveErr)}`);\n }\n\n if (isAbort) {\n console.log(chalk.yellow('\\nTask cancelled.'));\n process.exit(130);\n } else {\n console.error(chalk.red(`\\nError: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n } finally {\n process.removeListener('SIGINT', sigintHandler);\n }\n}\n\n// Re-export as `exec` for backward compatibility with existing callers\nexport { execTask as exec };\n", "/**\n * Run command - streaming task execution via Sandbox SSE\n *\n * Dispatches a coding agent task to the Cloudflare Sandbox Worker and streams\n * output in real-time via Server-Sent Events. Unlike exec (fire-and-forget),\n * this command blocks until the task completes and shows live output.\n */\n\nimport chalk from 'chalk';\nimport type { TaskOptions } from '@spacecode/shared/remote';\nimport { validateRepo, validateBranch, validatePrompt } from '../utils/validation.js';\nimport { generateTaskId } from '../utils/task.js';\nimport { setupRun } from '../utils/run-setup.js';\nimport { buildRemoteTask, statusFromResult, errorTaskStatus } from '../utils/remote-task.js';\n\n/**\n * Run a task on a Cloudflare Sandbox and stream output in real-time via SSE.\n *\n * Flow:\n * 1. Validate inputs\n * 2. Gather config files and env vars\n * 3. Create sandbox client and call /api/run\n * 4. Stream SSE events to console\n * 5. Save task record\n */\nexport async function run(options: TaskOptions): Promise<void> {\n const taskId = generateTaskId();\n const validRepo = validateRepo(options.repo);\n const validPrompt = validatePrompt(options.prompt);\n const validBranch = options.branch ? validateBranch(options.branch) : undefined;\n\n // Set up SIGINT handler to abort the in-flight SSE request\n const abortController = new AbortController();\n const sigintHandler = () => {\n console.log(chalk.dim('\\nReceived SIGINT, aborting stream...'));\n abortController.abort();\n };\n process.on('SIGINT', sigintHandler);\n\n console.log(chalk.bold('\\nspacecode run\\n'));\n console.log(chalk.dim(` Task: ${taskId}`));\n console.log(chalk.dim(`Repo: ${validRepo}`));\n console.log(chalk.dim(`Prompt: ${validPrompt.substring(0, 60)}${validPrompt.length > 60 ? '...' : ''}`));\n if (validBranch) console.log(chalk.dim(`Branch: ${validBranch}`));\n console.log('');\n\n try {\n const { client, envVars } = await setupRun({ proxyMode: options.proxyMode });\n\n let exitCode = 0;\n let success = true;\n\n console.log(chalk.dim('---'.repeat(20)));\n\n // Keepalive timeout: abort if no SSE events arrive for 5 minutes\n const KEEPALIVE_TIMEOUT_MS = 5 * 60 * 1000;\n let keepaliveTimer: ReturnType<typeof setTimeout> | null = null;\n\n const resetKeepalive = () => {\n if (keepaliveTimer) clearTimeout(keepaliveTimer);\n keepaliveTimer = setTimeout(() => {\n console.error(chalk.yellow('\\nStream stalled (no data for 5 minutes), aborting...'));\n abortController.abort();\n }, KEEPALIVE_TIMEOUT_MS);\n };\n\n resetKeepalive();\n\n // Stream SSE events from sandbox\n try {\n await client.run(\n {\n repo: validRepo,\n prompt: validPrompt,\n envVars,\n branch: validBranch,\n noCommit: options.noCommit,\n idleTimeoutMinutes: options.idleTimeout,\n },\n (event) => {\n resetKeepalive();\n switch (event.type) {\n case 'status':\n console.log(chalk.dim(`[${event.data.phase}]`));\n break;\n case 'output':\n process.stdout.write(event.data.text);\n break;\n case 'done':\n exitCode = event.data.exitCode;\n success = event.data.success;\n if (event.data.diff) {\n console.log(chalk.dim('\\nDiff:'));\n console.log(event.data.diff);\n }\n break;\n case 'error':\n console.error(chalk.red(`\\nError: ${event.data.message}`));\n success = false;\n exitCode = 1;\n break;\n }\n },\n abortController.signal,\n );\n } finally {\n if (keepaliveTimer) clearTimeout(keepaliveTimer);\n }\n\n console.log(chalk.dim('---'.repeat(20)));\n\n // Save task record\n const { addTask } = await import('../config.js');\n const task = buildRemoteTask({\n id: taskId,\n repo: validRepo,\n prompt: validPrompt,\n mode: 'stream',\n status: statusFromResult(success),\n exitCode,\n branch: validBranch,\n });\n await addTask(task);\n\n if (success) {\n console.log(chalk.green('Task completed successfully.'));\n } else {\n console.log(chalk.red(`Task failed (exit code ${exitCode}).`));\n process.exit(exitCode || 1);\n }\n } catch (error) {\n const isAbort = error instanceof Error && error.name === 'AbortError';\n\n // Save task record\n try {\n const { addTask } = await import('../config.js');\n const task = buildRemoteTask({\n id: taskId,\n repo: validRepo,\n prompt: validPrompt,\n mode: 'stream',\n status: errorTaskStatus(isAbort),\n error: isAbort ? 'Cancelled by user' : (error instanceof Error ? error.message : String(error)),\n });\n await addTask(task);\n } catch (saveErr) {\n console.warn(`Failed to save task record: ${saveErr instanceof Error ? saveErr.message : String(saveErr)}`);\n }\n\n if (isAbort) {\n console.log(chalk.yellow('\\nStream cancelled.'));\n process.exit(130);\n } else {\n console.error(chalk.red(`\\nError: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n } finally {\n process.removeListener('SIGINT', sigintHandler);\n }\n}\n", "/**\n * Batch exec command - dispatch multiple tasks in parallel\n *\n * Uses the Cloudflare Sandbox Worker's /api/exec endpoint for each task.\n * Since sandbox exec() blocks until done, no polling is needed.\n */\n\nimport type { BatchTaskSpec, BatchDispatchResult, BatchTaskResult, RemoteTask } from '@spacecode/shared/remote';\nimport { SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport { resolveAuthToken, sandboxClientOptions } from '../config.js';\nimport { generateTaskId } from '../utils/task.js';\nimport { buildEnvVars } from '../utils/env.js';\nimport { buildRemoteTask, statusFromResult } from '../utils/remote-task.js';\n\n/**\n * Generate a unique group ID for a batch\n */\nfunction generateGroupId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).substring(2, 6);\n return `batch-${timestamp}-${random}`;\n}\n\n/**\n * Generate a branch name from a prompt and task ID.\n * Format: claude/<slug>-<suffix>\n * - slug: first 4 meaningful words, lowercased, hyphenated (max 30 chars)\n * - suffix: last 4 chars of task ID\n */\nexport function generateBranchName(prompt: string, taskId: string): string {\n const stopWords = new Set(['the', 'a', 'an', 'and', 'or', 'but', 'in', 'on', 'at', 'to', 'for', 'of', 'is', 'it', 'this', 'that', 'with', 'as', 'by', 'all']);\n const words = prompt\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, '')\n .split(/\\s+/)\n .filter(w => w.length > 1 && !stopWords.has(w))\n .slice(0, 4);\n\n const slug = words.join('-').substring(0, 30);\n const suffix = taskId.slice(-4);\n return `claude/${slug}-${suffix}`;\n}\n\n/**\n * Dispatch a single task via the sandbox worker's exec endpoint.\n * Blocks until the task completes (sandbox exec is synchronous).\n */\nasync function dispatchSingleTask(\n spec: BatchTaskSpec,\n taskId: string,\n groupId: string,\n branch: string,\n sharedContext: {\n token: string;\n ghToken: string | undefined;\n },\n): Promise<{ task: RemoteTask; result: BatchTaskResult }> {\n const { createSandboxClient } = await import('@spacecode/sandbox-client');\n const client = createSandboxClient(SANDBOX_WORKER_URL, sharedContext.token, sandboxClientOptions(sharedContext.token));\n\n // Build env vars\n const envVars = buildEnvVars({\n ghToken: sharedContext.ghToken,\n });\n\n // Execute task (blocks until done)\n const execResult = await client.exec({\n repo: spec.repo,\n prompt: spec.prompt,\n branch,\n envVars,\n });\n\n const task = buildRemoteTask({\n id: taskId,\n repo: spec.repo,\n prompt: spec.prompt,\n mode: 'exec',\n status: statusFromResult(execResult.success),\n exitCode: execResult.exitCode,\n branch,\n error: execResult.success ? undefined : execResult.logs,\n groupId,\n });\n\n const result: BatchTaskResult = {\n taskId,\n repo: spec.repo,\n branch,\n status: 'dispatched',\n machineId: 'sandbox',\n };\n\n return { task, result };\n}\n\n/**\n * Dispatch multiple tasks in parallel to sandbox workers.\n */\nexport async function execBatch(tasks: BatchTaskSpec[]): Promise<BatchDispatchResult> {\n if (tasks.length === 0) {\n throw new Error('No tasks provided');\n }\n\n const { getGitHubToken } = await import('../sync/config.js');\n const { addTasks } = await import('../config.js');\n\n const groupId = generateGroupId();\n\n // Assign task IDs and branches, validate no duplicates\n const taskSpecs: Array<{ spec: BatchTaskSpec; taskId: string; branch: string }> = [];\n const repoBranchPairs = new Set<string>();\n\n for (const spec of tasks) {\n const taskId = generateTaskId();\n const branch = spec.branch || generateBranchName(spec.prompt, taskId);\n const key = `${spec.repo}::${branch}`;\n\n if (repoBranchPairs.has(key)) {\n throw new Error(`Duplicate (repo, branch) pair: ${spec.repo} on ${branch}. Provide unique branch names.`);\n }\n repoBranchPairs.add(key);\n taskSpecs.push({ spec, taskId, branch });\n }\n\n // Shared setup\n const token = await resolveAuthToken();\n const ghToken = await getGitHubToken();\n\n const sharedContext = {\n token,\n ghToken,\n };\n\n // Dispatch all with stagger to avoid rate limits\n const dispatchPromises = taskSpecs.map(({ spec, taskId, branch }, index) =>\n new Promise<Awaited<ReturnType<typeof dispatchSingleTask>>>((resolve, reject) => {\n setTimeout(async () => {\n try {\n const result = await dispatchSingleTask(spec, taskId, groupId, branch, sharedContext);\n resolve(result);\n } catch (error) {\n reject(error);\n }\n }, index * 500); // 500ms stagger between each dispatch\n })\n );\n\n const settledResults = await Promise.allSettled(dispatchPromises);\n\n // Collect results\n const taskRecords: RemoteTask[] = [];\n const batchResults: BatchTaskResult[] = [];\n\n for (let i = 0; i < settledResults.length; i++) {\n const settled = settledResults[i];\n const { spec, taskId, branch } = taskSpecs[i];\n\n if (settled.status === 'fulfilled') {\n taskRecords.push(settled.value.task);\n batchResults.push(settled.value.result);\n } else {\n batchResults.push({\n taskId,\n repo: spec.repo,\n branch,\n status: 'failed',\n error: settled.reason instanceof Error ? settled.reason.message : String(settled.reason),\n });\n }\n }\n\n // Save all task records atomically\n if (taskRecords.length > 0) {\n await addTasks(taskRecords);\n }\n\n // No background polling needed -- sandbox exec blocks until done\n\n const dispatched = batchResults.filter(r => r.status === 'dispatched').length;\n const failed = batchResults.filter(r => r.status === 'failed').length;\n\n return {\n groupId,\n total: tasks.length,\n dispatched,\n failed,\n tasks: batchResults,\n };\n}\n", "/**\n * Tasks command - list and manage remote tasks\n */\n\nimport chalk from 'chalk';\nimport { loadTasks, updateTask, getTask, pruneTasks, resolveAuthToken, sandboxClientOptions } from '../config.js';\nimport { SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport type { TaskStatus, RemoteTask } from '@spacecode/shared/remote';\nimport { truncate } from '../utils/task.js';\n\nexport interface TasksOptions {\n all?: boolean;\n prune?: boolean;\n status?: string;\n limit?: number;\n repo?: string;\n cleanStale?: boolean;\n staleAge?: number; // Hours to consider a task stale (default: 12)\n forceClean?: boolean; // Mark as stale even if sandbox is still running\n}\n\n/**\n * Color-coded status string\n */\nfunction formatStatus(status: TaskStatus): string {\n switch (status) {\n case 'pending':\n return chalk.yellow(status);\n case 'running':\n return chalk.cyan(status);\n case 'completed':\n return chalk.green(status);\n case 'failed':\n return chalk.red(status);\n case 'cancelled':\n return chalk.gray(status);\n default:\n return status;\n }\n}\n\n/**\n * Human-readable age from ISO date string\n */\nfunction formatAge(dateStr: string): string {\n const now = Date.now();\n const then = new Date(dateStr).getTime();\n const diffSecs = Math.floor((now - then) / 1000);\n\n if (diffSecs < 60) {\n return `${diffSecs}s ago`;\n }\n const diffMins = Math.floor(diffSecs / 60);\n if (diffMins < 60) {\n return `${diffMins}m ago`;\n }\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) {\n return `${diffHours}h ago`;\n }\n const diffDays = Math.floor(diffHours / 24);\n return `${diffDays}d ago`;\n}\n\n/**\n * Strip github.com/ prefix from repo string\n */\nfunction shortRepo(repo: string): string {\n return repo.replace(/^(https?:\\/\\/)?github\\.com\\//, '');\n}\n\n/**\n * Display a single task\n */\nfunction displayTask(task: RemoteTask): void {\n const id = chalk.bold(task.id);\n const status = formatStatus(task.status);\n const age = chalk.dim(formatAge(task.createdAt));\n\n // Line 1: ID, status, age\n console.log(` ${id} ${status} ${age}`);\n\n // Line 2: Repo and mode\n console.log(` ${shortRepo(task.repo)} ${chalk.dim(`(${task.mode})`)}`);\n\n // Line 3: Prompt (truncated)\n console.log(` ${chalk.dim(truncate(task.prompt, 50))}`);\n\n // Optional: PR URL\n if (task.prUrl) {\n console.log(` ${chalk.cyan(task.prUrl)}`);\n }\n\n // Optional: Branch\n if (task.branch) {\n console.log(` branch: ${chalk.dim(task.branch)}`);\n }\n\n // Optional: Error\n if (task.error) {\n console.log(` ${chalk.red(`error: ${task.error}`)}`);\n }\n}\n\n/**\n * List and manage remote tasks\n */\nexport async function tasks(options: TasksOptions = {}): Promise<void> {\n // Handle --prune flag\n if (options.prune) {\n const pruned = await pruneTasks();\n console.log(`Pruned ${pruned} old task(s).`);\n return;\n }\n\n // Handle --clean-stale flag\n if (options.cleanStale) {\n const staleAgeHours = options.staleAge || 12;\n const staleThresholdMs = staleAgeHours * 60 * 60 * 1000;\n const now = Date.now();\n\n const allTasks = await loadTasks();\n let cleaned = 0;\n\n for (const task of allTasks) {\n // Only clean running tasks that are older than the threshold\n if (task.status === 'running') {\n const taskAge = now - new Date(task.createdAt).getTime();\n if (taskAge > staleThresholdMs) {\n // Sandbox tasks complete synchronously (exec blocks until done),\n // so any \"running\" task older than the threshold is stale.\n await updateTask(task.id, {\n status: 'completed',\n completedAt: new Date().toISOString(),\n });\n cleaned++;\n }\n }\n }\n\n if (cleaned > 0) {\n console.log(`Marked ${cleaned} stale task(s) (older than ${staleAgeHours}h) as completed.`);\n } else {\n console.log(`No stale tasks found (older than ${staleAgeHours}h).`);\n }\n return;\n }\n\n let allTasks = await loadTasks();\n\n if (allTasks.length === 0) {\n console.log(chalk.dim('No tasks found.'));\n console.log(chalk.dim('\\nRun `spacecode exec <repo> \"<prompt>\"` to create one.'));\n return;\n }\n\n // For running tasks, check if they should be marked completed.\n // Sandbox tasks complete synchronously, so \"running\" in local records\n // means the task was interrupted or the record is stale.\n // We can optionally probe the sandbox worker, but for simplicity\n // just leave the status as-is and let --clean-stale handle it.\n\n // Apply filters\n let filteredTasks = allTasks;\n\n // Filter by status\n if (options.status) {\n filteredTasks = filteredTasks.filter(t => t.status === options.status);\n }\n\n // Filter by repo\n if (options.repo) {\n filteredTasks = filteredTasks.filter(t => t.repo.includes(options.repo!));\n }\n\n // Filter to active tasks unless --all\n if (!options.all && !options.status) {\n filteredTasks = filteredTasks.filter(t => t.status === 'running' || t.status === 'pending');\n }\n\n // Apply limit\n if (options.limit && options.limit > 0) {\n filteredTasks = filteredTasks.slice(0, options.limit);\n }\n\n if (filteredTasks.length === 0) {\n console.log(chalk.dim('No matching tasks.'));\n if (!options.all && !options.status) {\n console.log(chalk.dim('Use --all to show completed/cancelled tasks.'));\n }\n return;\n }\n\n console.log(chalk.bold('\\nTasks\\n'));\n\n for (const task of filteredTasks) {\n displayTask(task);\n console.log();\n }\n\n // Summary\n const active = allTasks.filter(t => t.status === 'running' || t.status === 'pending').length;\n console.log(chalk.dim('\u2500'.repeat(40)));\n console.log(chalk.dim(`${active} active / ${allTasks.length} total tasks${filteredTasks.length < allTasks.length ? ` (${filteredTasks.length} shown)` : ''}`));\n}\n\n/**\n * Cancel a running or pending task\n */\nexport async function cancelTask(taskId: string): Promise<void> {\n const task = await getTask(taskId);\n\n if (!task) {\n throw new Error(`Task ${taskId} not found.`);\n }\n\n if (task.status !== 'running' && task.status !== 'pending') {\n console.log(`Task ${taskId} is already ${task.status}.`);\n return;\n }\n\n // Destroy the associated sandbox if one exists\n if (task.machineId && task.machineId !== 'sandbox') {\n try {\n console.log(chalk.dim(`Destroying sandbox ${task.machineId}...`));\n const token = await resolveAuthToken();\n const { createSandboxClient } = await import('@spacecode/sandbox-client');\n const client = createSandboxClient(SANDBOX_WORKER_URL, token, sandboxClientOptions(token));\n await client.destroySandbox(task.machineId);\n } catch (error) {\n // Non-critical: sandbox may already be gone\n console.log(chalk.dim(` (sandbox may already be destroyed: ${error instanceof Error ? error.message : String(error)})`));\n }\n }\n\n await updateTask(taskId, {\n status: 'cancelled',\n completedAt: new Date().toISOString(),\n });\n\n console.log(`Task ${chalk.bold(taskId)} cancelled.`);\n}\n", "/**\n * GitHub Sync Client\n *\n * Syncs project tracking data (PROGRESS.md, TODO comments) to GitHub Projects and Issues.\n */\n\nimport { readFile, readdir, stat, writeFile } from 'fs/promises';\nimport { join, dirname } from 'path';\nimport { existsSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { runOutput } from '../utils/exec.js';\nimport type { ProgressData } from './progress-parser.js';\nimport { fileURLToPath as _fileURLToPath } from 'url';\n\n// CommonJS __dirname equivalent\n// In ESM: dirname(fileURLToPath(import.meta.url))\n// In CJS: use global __dirname\nlet __dirname: string;\ntry {\n // @ts-ignore - import.meta may not exist in CJS\n __dirname = dirname(_fileURLToPath((globalThis as unknown as Record<string, unknown>).import?.meta?.url || ''));\n} catch {\n // Fallback to empty string - paths will be resolved relative to cwd\n __dirname = '';\n}\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface GitHubProject {\n id: string;\n owner: string;\n name: string;\n url: string;\n number: number;\n}\n\nexport interface GitHubIssue {\n number: number;\n title: string;\n state: 'open' | 'closed';\n labels: string[];\n body: string;\n url: string;\n}\n\nexport interface TodoComment {\n file: string;\n line: number;\n type: 'TODO' | 'FIXME';\n priority: 'HIGH' | 'MEDIUM' | 'LOW';\n content: string;\n feature: string;\n}\n\nexport interface SprintInfo {\n name: string;\n status: 'Not Started' | 'In Progress' | 'Completed';\n items: string[];\n}\n\nexport interface FeatureStatus {\n name: string;\n status: 'completed' | 'in-progress' | 'not-started';\n category: string;\n}\n\nexport interface SyncOptions {\n dryRun?: boolean;\n verbose?: boolean;\n onProgress?: (message: string) => void;\n}\n\nexport interface SyncResult {\n issuesCreated: number;\n issuesUpdated: number;\n issuesClosed: number;\n todosReplaced: number;\n errors: string[];\n}\n\n// ============================================================================\n// GitHub API Client\n// ============================================================================\n\nclass GitHubClient {\n constructor(\n private readonly token: string,\n private readonly repo: string, // owner/repo format\n private readonly options: SyncOptions = {}\n ) {}\n\n private log(message: string): void {\n if (this.options.verbose) {\n this.options.onProgress?.(message);\n }\n }\n\n /**\n * Parse owner and repo from \"owner/repo\" string\n */\n private parseRepo(): { owner: string; repo: string } {\n const match = this.repo.match(/^([^/]+)\\/([^/]+)$/);\n if (!match) {\n throw new Error(`Invalid repo format: ${this.repo}. Expected \"owner/repo\"`);\n }\n return { owner: match[1], repo: match[2] };\n }\n\n /**\n * Sleep for a specified duration\n */\n private async sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n /**\n * Make an authenticated request to GitHub API with retry logic\n */\n private async api<T>(\n endpoint: string,\n options: RequestInit = {},\n maxRetries: number = 3\n ): Promise<T> {\n const { owner, repo: repoName } = this.parseRepo();\n const url = `https://api.github.com/repos/${owner}/${repoName}${endpoint}`;\n\n if (this.options.dryRun) {\n this.log(`[DRY RUN] ${options.method || 'GET'} ${url}`);\n throw new Error('DRY_RUN_MODE');\n }\n\n let lastError: Error | null = null;\n const baseDelayMs = 1000;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n const response = await fetch(url, {\n ...options,\n headers: {\n 'Authorization': `Bearer ${this.token}`,\n 'Accept': 'application/vnd.github.v3+json',\n 'User-Agent': 'spacecode-sync',\n ...options.headers,\n },\n });\n\n // Handle authentication errors\n if (response.status === 401 || response.status === 403) {\n const errorText = await response.text();\n throw new Error(\n `GitHub authentication failed (${response.status}). ` +\n `Please check your token:\\n` +\n ` - Run 'gh auth token' to verify your token\\n` +\n ` - Or set GITHUB_TOKEN environment variable\\n` +\n ` - Ensure token has 'repo' and 'issues' scopes\\n` +\n `Details: ${errorText}`\n );\n }\n\n // Handle rate limiting\n if (response.status === 429) {\n const retryAfter = response.headers.get('Retry-After');\n const waitMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : baseDelayMs * Math.pow(2, attempt);\n\n if (attempt < maxRetries) {\n this.log(`Rate limited. Waiting ${waitMs}ms before retry...`);\n await this.sleep(waitMs);\n continue;\n }\n }\n\n // Handle server errors with retry\n if (response.status >= 500) {\n if (attempt < maxRetries) {\n const waitMs = baseDelayMs * Math.pow(2, attempt);\n this.log(`Server error ${response.status}. Retrying in ${waitMs}ms...`);\n await this.sleep(waitMs);\n continue;\n }\n }\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`GitHub API error: ${response.status} - ${error}`);\n }\n\n return response.json() as Promise<T>;\n } catch (error) {\n lastError = error as Error;\n\n // Don't retry authentication errors\n if (lastError.message.includes('authentication failed')) {\n throw lastError;\n }\n\n // Don't retry dry run errors\n if (lastError.message === 'DRY_RUN_MODE') {\n throw lastError;\n }\n\n // Network errors - retry\n if (attempt < maxRetries && (lastError.message.includes('fetch') || lastError.message.includes('network'))) {\n const waitMs = baseDelayMs * Math.pow(2, attempt);\n this.log(`Network error. Retrying in ${waitMs}ms...`);\n await this.sleep(waitMs);\n continue;\n }\n }\n }\n\n throw lastError || new Error('Unknown error occurred');\n }\n\n /**\n * Find an issue by title\n */\n async findIssueByTitle(title: string): Promise<GitHubIssue | null> {\n try {\n const { owner, repo: repoName } = this.parseRepo();\n const query = encodeURIComponent(`${title} repo:${owner}/${repoName} state:open`);\n const url = `https://api.github.com/search/issues?q=${query}`;\n\n if (this.options.dryRun) {\n this.log(`[DRY RUN] GET ${url}`);\n return null;\n }\n\n const response = await fetch(url, {\n headers: {\n 'Authorization': `Bearer ${this.token}`,\n 'Accept': 'application/vnd.github.v3+json',\n 'User-Agent': 'spacecode-sync',\n },\n });\n\n if (!response.ok) {\n return null;\n }\n\n const data = await response.json() as { items: Array<{ number: number; title: string; state: string; labels: Array<{ name: string }>; body: string; html_url: string }> };\n\n if (data.items.length === 0) {\n return null;\n }\n\n const item = data.items[0];\n return {\n number: item.number,\n title: item.title,\n state: item.state as 'open' | 'closed',\n labels: item.labels.map(l => l.name),\n body: item.body,\n url: item.html_url,\n };\n } catch (error) {\n console.warn(`Warning: GitHub issue search failed for \"${title}\": ${error instanceof Error ? error.message : String(error)}`);\n return null;\n }\n }\n\n /**\n * Create a new issue\n */\n async createIssue(\n title: string,\n body: string,\n labels: string[] = []\n ): Promise<number> {\n this.log(`Creating issue: ${title}`);\n\n const result = await this.api<{ number: number; html_url: string }>(\n '/issues',\n {\n method: 'POST',\n body: JSON.stringify({ title, body, labels }),\n headers: { 'Content-Type': 'application/json' },\n }\n );\n\n return result.number;\n }\n\n /**\n * Update an issue (close/reopen)\n */\n async updateIssue(\n issueNumber: number,\n updates: { state?: 'open' | 'closed'; body?: string }\n ): Promise<void> {\n this.log(`Updating issue #${issueNumber}`);\n\n await this.api(`/issues/${issueNumber}`, {\n method: 'PATCH',\n body: JSON.stringify(updates),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n /**\n * Get or create a GitHub Project\n * Note: GitHub Projects v2 uses a different API\n */\n async getOrCreateProject(projectName: string): Promise<GitHubProject | null> {\n this.log(`Looking for project: ${projectName}`);\n\n try {\n // Try to find existing project\n const { owner, repo: repoName } = this.parseRepo();\n\n // List projects for the repository\n const projects = await this.api<{ id: string; number: number; title: string; url: string }[]>(\n `/projects`,\n {\n headers: { 'Accept': 'application/vnd.github.inertia-preview+json' },\n }\n ).catch(() => []);\n\n const existing = projects.find(p => p.title === projectName);\n if (existing) {\n return {\n id: existing.id,\n owner,\n name: existing.title,\n number: existing.number,\n url: existing.url,\n };\n }\n\n // Create new project\n if (!this.options.dryRun) {\n this.log(`Creating project: ${projectName}`);\n const created = await this.api<{ id: string; number: number; title: string; url: string; html_url: string }>(\n `/projects`,\n {\n method: 'POST',\n body: JSON.stringify({\n name: projectName,\n body: 'Project tracking synced from PROGRESS.md',\n }),\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/vnd.github.inertia-preview+json',\n },\n }\n );\n\n return {\n id: created.id,\n owner,\n name: created.title,\n number: created.number,\n url: created.html_url || created.url,\n };\n }\n\n return null;\n } catch (error) {\n this.log(`Project error: ${error}`);\n return null;\n }\n }\n}\n\n// ============================================================================\n// TODO Scanner\n// ============================================================================\n\nconst TODO_PRIORITY_REGEX = /^(TODO|FIXME):\\s*(HIGH|MEDIUM|LOW)?\\s*/i;\nconst TODO_REGEX = /^\\s*\\/\\/\\s*(TODO|FIXME):\\s*(.*)$/;\nconst CHECKBOX_REGEX = /^\\s*[-*+]\\s*\\[[ x]\\]\\s*/;\n\n/**\n * Scan codebase for TODO comments\n */\nexport async function scanTodos(\n root: string,\n options: SyncOptions = {}\n): Promise<TodoComment[]> {\n const todos: TodoComment[] = [];\n const extensions = ['.ts', '.js', '.tsx', '.jsx', '.md'];\n\n async function scanDir(dir: string): Promise<void> {\n const entries = await readdir(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n\n // Skip node_modules, dist, .git, etc.\n if (\n entry.name === 'node_modules' ||\n entry.name === 'dist' ||\n entry.name === '.git' ||\n entry.name === 'coverage' ||\n entry.name === 'build' ||\n entry.name === '.claude'\n ) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await scanDir(fullPath);\n } else if (entry.isFile()) {\n const ext = fullPath.slice(fullPath.lastIndexOf('.'));\n if (extensions.includes(ext)) {\n await scanFile(fullPath);\n }\n }\n }\n }\n\n async function scanFile(filePath: string): Promise<void> {\n try {\n const content = await readFile(filePath, 'utf-8');\n const lines = content.split('\\n');\n const relativePath = filePath.replace(root + '/', '');\n\n // Extract feature name from path (heuristic)\n const pathParts = relativePath.split('/');\n const feature = pathParts.length > 1\n ? pathParts[pathParts.length - 2]\n : 'general';\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const match = line.match(TODO_REGEX);\n\n if (match) {\n const type = match[1].toUpperCase() as 'TODO' | 'FIXME';\n const content = match[2].trim();\n\n // Parse priority from content\n let priority: 'HIGH' | 'MEDIUM' | 'LOW' = 'MEDIUM';\n const priorityMatch = content.match(/^(HIGH|MEDIUM|LOW)\\s*:\\s*/i);\n if (priorityMatch) {\n priority = priorityMatch[1].toUpperCase() as 'HIGH' | 'MEDIUM' | 'LOW';\n }\n\n todos.push({\n file: relativePath,\n line: i + 1,\n type,\n priority,\n content,\n feature,\n });\n\n options.onProgress?.(`Found ${type}: ${content.substring(0, 50)}...`);\n }\n }\n } catch (error) {\n options.onProgress?.(`Warning: Could not scan ${filePath}: ${error}`);\n }\n }\n\n await scanDir(root);\n return todos;\n}\n\n/**\n * Replace TODO comments with issue references in source files\n *\n * @param todos - The TODO comments that were synced\n * @param issueNumbers - Map of TODO content to issue numbers\n * @param root - Project root directory\n * @param options - Sync options\n */\nexport async function replaceTodosWithIssues(\n todos: TodoComment[],\n issueNumbers: Map<string, number>,\n root: string,\n options: SyncOptions = {}\n): Promise<number> {\n if (options.dryRun) {\n options.onProgress?.('[DRY RUN] Would replace TODOs with issue references');\n return 0;\n }\n\n let replacedCount = 0;\n\n // Group todos by file for efficient processing\n const todosByFile = new Map<string, Array<TodoComment & { issueNumber: number }>>();\n for (const todo of todos) {\n const issueNumber = issueNumbers.get(`${todo.type}:${todo.content}`);\n if (issueNumber) {\n if (!todosByFile.has(todo.file)) {\n todosByFile.set(todo.file, []);\n }\n todosByFile.get(todo.file)!.push({ ...todo, issueNumber });\n }\n }\n\n // Process each file\n for (const [filePath, fileTodos] of todosByFile) {\n try {\n const fullPath = join(root, filePath);\n const content = await readFile(fullPath, 'utf-8');\n const lines = content.split('\\n');\n\n // Process in reverse order to maintain line numbers\n const sortedTodos = [...fileTodos].sort((a, b) => b.line - a.line);\n\n for (const todo of sortedTodos) {\n const lineIndex = todo.line - 1;\n if (lineIndex >= 0 && lineIndex < lines.length) {\n const originalLine = lines[lineIndex];\n // Replace the TODO comment with issue reference\n // Format: // TODO: comment -> // Issue: #123\n const replacedLine = originalLine.replace(\n TODO_REGEX,\n `// Issue: #${todo.issueNumber} (${todo.type}: ${todo.content})`\n );\n\n if (replacedLine !== originalLine) {\n lines[lineIndex] = replacedLine;\n replacedCount++;\n options.onProgress?.(`Replaced ${todo.type} in ${filePath}:${todo.line} with issue #${todo.issueNumber}`);\n }\n }\n }\n\n // Write the updated content back\n await writeFile(fullPath, lines.join('\\n'), 'utf-8');\n } catch (error) {\n options.onProgress?.(`Warning: Could not update ${filePath}: ${error}`);\n }\n }\n\n return replacedCount;\n}\n\n// ============================================================================\n// Main Sync Function\n// ============================================================================\n\n/**\n * Main sync function - syncs to GitHub\n */\nexport async function syncToGitHub(\n repo: string,\n token: string,\n options: SyncOptions = {}\n): Promise<SyncResult> {\n const result: SyncResult = {\n issuesCreated: 0,\n issuesUpdated: 0,\n issuesClosed: 0,\n todosReplaced: 0,\n errors: [],\n };\n\n const client = new GitHubClient(token, repo, options);\n\n try {\n // Get project root directory\n const root = process.cwd();\n\n // Step 1: Scan for TODOs\n options.onProgress?.('Scanning for TODO comments...');\n const todos = await scanTodos(root, options);\n\n // Track issue numbers for TODO replacement\n const issueNumbers = new Map<string, number>();\n\n // Step 2: Process each TODO\n for (const todo of todos) {\n try {\n // Create issue title from TODO\n const title = `[${todo.type}] ${todo.content}`;\n\n // Check if issue exists\n const existing = await client.findIssueByTitle(title);\n\n if (!existing) {\n // Create new issue\n const labels = [\n todo.type,\n `priority: ${todo.priority}`,\n `feature: ${todo.feature}`,\n ];\n\n const body = `**Type:** ${todo.type}\\n` +\n `**Priority:** ${todo.priority}\\n` +\n `**Feature:** ${todo.feature}\\n` +\n `**Location:** \\`${todo.file}:${todo.line}\\`\\n\\n` +\n `---\\n` +\n `*This issue was automatically created from a code comment.*`;\n\n const issueNumber = await client.createIssue(title, body, labels);\n result.issuesCreated++;\n\n // Track issue number for replacement\n issueNumbers.set(`${todo.type}:${todo.content}`, issueNumber);\n\n options.onProgress?.(`Created issue #${issueNumber} for ${todo.type}: ${todo.content}`);\n } else {\n // Track existing issue number\n issueNumbers.set(`${todo.type}:${todo.content}`, existing.number);\n options.onProgress?.(`Issue already exists for: ${todo.content}`);\n }\n } catch (error) {\n // Don't report DRY_RUN_MODE as an error - it's expected behavior\n const errorMsg = String(error);\n if (!errorMsg.includes('DRY_RUN_MODE')) {\n const msg = `Error processing TODO in ${todo.file}:${todo.line}: ${errorMsg}`;\n result.errors.push(msg);\n options.onProgress?.(msg);\n }\n }\n }\n\n // Step 3: Replace TODO comments with issue references\n if (issueNumbers.size > 0) {\n options.onProgress?.('\\nReplacing TODO comments with issue references...');\n result.todosReplaced = await replaceTodosWithIssues(todos, issueNumbers, root, options);\n }\n\n options.onProgress?.(`\\nSync complete: ${result.issuesCreated} issues created, ${result.todosReplaced} TODOs replaced`);\n } catch (error) {\n result.errors.push(String(error));\n }\n\n return result;\n}\n\n/**\n * Sync PROGRESS.md features to GitHub issues\n *\n * Creates issues for in-progress features and closes issues for completed features.\n */\nexport async function syncProgressToGitHub(\n repo: string,\n token: string,\n progressData: ProgressData,\n options: SyncOptions = {}\n): Promise<SyncResult> {\n const result: SyncResult = {\n issuesCreated: 0,\n issuesUpdated: 0,\n issuesClosed: 0,\n todosReplaced: 0,\n errors: [],\n };\n\n const client = new GitHubClient(token, repo, options);\n\n try {\n // Step 1: Create issues for in-progress features\n for (const feature of progressData.features) {\n if (feature.status === 'in-progress') {\n try {\n const title = `[Feature] ${feature.name}`;\n const existing = await client.findIssueByTitle(title);\n\n if (!existing) {\n const labels = [\n 'feature',\n `category: ${feature.category}`,\n 'in-progress',\n ];\n\n const body = `**Feature:** ${feature.name}\\n` +\n `**Category:** ${feature.category}\\n` +\n `**Status:** In Progress\\n\\n` +\n `---\\n` +\n `*This issue was automatically created from PROGRESS.md.*`;\n\n const issueNumber = await client.createIssue(title, body, labels);\n result.issuesCreated++;\n\n options.onProgress?.(`Created issue #${issueNumber} for in-progress feature: ${feature.name}`);\n }\n } catch (error) {\n // Don't report DRY_RUN_MODE as an error - it's expected behavior\n const errorMsg = String(error);\n if (!errorMsg.includes('DRY_RUN_MODE')) {\n const msg = `Error creating issue for feature ${feature.name}: ${errorMsg}`;\n result.errors.push(msg);\n }\n }\n }\n }\n\n // Step 2: Close issues for completed features\n for (const feature of progressData.features) {\n if (feature.status === 'completed') {\n try {\n const title = `[Feature] ${feature.name}`;\n const existing = await client.findIssueByTitle(title);\n\n if (existing && existing.state === 'open') {\n await client.updateIssue(existing.number, { state: 'closed' });\n result.issuesClosed++;\n\n options.onProgress?.(`Closed issue #${existing.number} for completed feature: ${feature.name}`);\n }\n } catch (error) {\n // Don't report DRY_RUN_MODE as an error - it's expected behavior\n const errorMsg = String(error);\n if (!errorMsg.includes('DRY_RUN_MODE')) {\n const msg = `Error closing issue for feature ${feature.name}: ${errorMsg}`;\n result.errors.push(msg);\n }\n }\n }\n }\n\n options.onProgress?.(`\\nProgress sync complete: ${result.issuesCreated} issues created, ${result.issuesClosed} issues closed`);\n } catch (error) {\n result.errors.push(String(error));\n }\n\n return result;\n}\n\n// ============================================================================\n// CLI Utilities\n// ============================================================================\n\n/**\n * Detect current git repo in \"owner/repo\" format\n */\nexport async function detectGitRepo(): Promise<string | null> {\n try {\n const url = await runOutput('git remote get-url origin');\n\n // Parse various git URL formats\n // https://github.com/owner/repo.git\n // git@github.com:owner/repo.git\n const httpsMatch = url.match(/github\\.com[\\/:]([^\\/]+)\\/([^\\/\\.]+)/);\n if (httpsMatch) {\n return `${httpsMatch[1]}/${httpsMatch[2]}`;\n }\n\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * Read GitHub token from environment or gh CLI\n */\nexport async function getGitHubToken(): Promise<string | null> {\n // Check environment variable first\n const envToken = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;\n if (envToken) {\n return envToken;\n }\n\n // Try to get token from gh CLI\n try {\n const token = await runOutput('gh auth token');\n return token || null;\n } catch {\n return null;\n }\n}\n", "/**\n * PROGRESS.md Parser\n *\n * Parses PROGRESS.md files to extract sprint status and feature tracking.\n */\n\nimport { readFile } from 'fs/promises';\nimport { existsSync } from 'fs';\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface ProgressData {\n sprints: SprintInfo[];\n features: FeatureStatus[];\n completedFeatures: string[];\n inProgressFeatures: string[];\n notStartedFeatures: string[];\n}\n\nexport interface SprintInfo {\n name: string;\n status: 'Not Started' | 'In Progress' | 'Completed';\n items: string[];\n}\n\nexport interface FeatureStatus {\n name: string;\n status: 'completed' | 'in-progress' | 'not-started';\n category: string;\n checkbox: string; // The checkbox character (\u2705, \u2B1C, etc.)\n}\n\nexport interface ParserOptions {\n verbose?: boolean;\n onProgress?: (message: string) => void;\n}\n\n// ============================================================================\n// Parser\n// ============================================================================\n\n// Regex patterns for parsing\nconst CHECKBOX_COMPLETED_REGEX = /^\\s*-\\s*\\[x\\]\\s*(.+)$/i;\nconst CHECKBOX_UNCHECKED_REGEX = /^\\s*-\\s*\\[\\s*\\]\\s*(.+)$/;\nconst EMOJI_CHECK_REGEX = /^\\s*([\u2705\u2714\u2611])\\s+(.+)$/;\nconst EMOJI_UNCHECKED_REGEX = /^\\s*([\u2B1C\u2B05\u25CB\u25CC])\\s+(.+)$/;\nconst SECTION_HEADER_REGEX = /^##+\\s+(.+)$/;\nconst IN_PROGRESS_HEADER_REGEX = /##\\s+(\\[In Progress\\]|Current Sprint)/i;\n\n/**\n * Parse a PROGRESS.md file\n */\nexport async function parseProgressFile(\n filePath: string,\n options: ParserOptions = {}\n): Promise<ProgressData> {\n if (!existsSync(filePath)) {\n options.onProgress?.(`PROGRESS.md not found at ${filePath}`);\n return emptyProgressData();\n }\n\n options.onProgress?.(`Parsing PROGRESS.md from ${filePath}`);\n\n const content = await readFile(filePath, 'utf-8');\n return parseProgressContent(content, options);\n}\n\n/**\n * Parse PROGRESS.md content\n */\nexport function parseProgressContent(\n content: string,\n options: ParserOptions = {}\n): ProgressData {\n const result: ProgressData = {\n sprints: [],\n features: [],\n completedFeatures: [],\n inProgressFeatures: [],\n notStartedFeatures: [],\n };\n\n const lines = content.split('\\n');\n let currentSection = '';\n let currentCategory = 'general';\n let inProgressSection = false;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Check for section headers\n const sectionMatch = line.match(SECTION_HEADER_REGEX);\n if (sectionMatch) {\n currentSection = sectionMatch[1].toLowerCase();\n options.onProgress?.(`Section: ${currentSection}`);\n\n // Check if this is an \"In Progress\" section\n inProgressSection = IN_PROGRESS_HEADER_REGEX.test(line);\n\n // Update category based on section\n if (currentSection.includes('backend')) {\n currentCategory = 'backend';\n } else if (currentSection.includes('frontend')) {\n currentCategory = 'frontend';\n } else if (currentSection.includes('sprint')) {\n currentCategory = 'sprint';\n } else if (currentSection.includes('feature')) {\n currentCategory = 'feature';\n } else if (currentSection.includes('epic')) {\n currentCategory = 'epic';\n } else if (currentSection.includes('completed')) {\n currentCategory = 'completed';\n } else if (currentSection.includes('current')) {\n currentCategory = 'current';\n }\n continue;\n }\n\n // Parse checkboxes\n const checkboxMatch = line.match(CHECKBOX_COMPLETED_REGEX) ||\n line.match(EMOJI_CHECK_REGEX);\n const uncheckedMatch = line.match(CHECKBOX_UNCHECKED_REGEX) ||\n line.match(EMOJI_UNCHECKED_REGEX);\n\n if (checkboxMatch) {\n // Completed item - extract name from different regex patterns\n // CHECKBOX_COMPLETED_REGEX: group 1 is the item name\n // EMOJI_CHECK_REGEX: group 1 is emoji, group 2 is item name\n let itemName = checkboxMatch[1]; // checkbox regex\n if (checkboxMatch[2] !== undefined) {\n itemName = checkboxMatch[2]; // emoji regex - group 2 is the name\n }\n const feature: FeatureStatus = {\n name: itemName.trim(),\n status: 'completed',\n category: currentCategory,\n checkbox: checkboxMatch[1] || checkboxMatch[2] || '\u2705',\n };\n result.features.push(feature);\n result.completedFeatures.push(itemName.trim());\n } else if (uncheckedMatch) {\n // Unchecked item - extract name from different regex patterns\n // CHECKBOX_UNCHECKED_REGEX: group 1 is the item name\n // EMOJI_UNCHECKED_REGEX: group 1 is emoji, group 2 is item name\n let itemName = uncheckedMatch[1]; // checkbox regex\n if (uncheckedMatch[2] !== undefined) {\n itemName = uncheckedMatch[2]; // emoji regex - group 2 is the name\n }\n const status = inProgressSection ? 'in-progress' : 'not-started';\n const feature: FeatureStatus = {\n name: itemName.trim(),\n status,\n category: currentCategory,\n checkbox: uncheckedMatch[1] || uncheckedMatch[2] || '\u2B1C',\n };\n result.features.push(feature);\n\n if (status === 'in-progress') {\n result.inProgressFeatures.push(itemName.trim());\n } else {\n result.notStartedFeatures.push(itemName.trim());\n }\n }\n }\n\n // Extract sprint info from completed features\n if (result.completedFeatures.length > 0 || result.inProgressFeatures.length > 0) {\n result.sprints.push({\n name: 'Current Sprint',\n status: result.inProgressFeatures.length > 0 ? 'In Progress' : 'Completed',\n items: [...result.completedFeatures, ...result.inProgressFeatures],\n });\n }\n\n options.onProgress?.(`Parsed ${result.features.length} features`);\n\n return result;\n}\n\n/**\n * Create empty progress data\n */\nfunction emptyProgressData(): ProgressData {\n return {\n sprints: [],\n features: [],\n completedFeatures: [],\n inProgressFeatures: [],\n notStartedFeatures: [],\n };\n}\n\n/**\n * Find the PROGRESS.md file in the project\n */\nexport function findProgressFile(root: string = process.cwd()): string {\n const possiblePaths = [\n join(root, 'docs', 'PROGRESS.md'),\n join(root, 'PROGRESS.md'),\n join(root, '.claude', 'plans', 'PROGRESS.md'),\n ];\n\n for (const path of possiblePaths) {\n if (existsSync(path)) {\n return path;\n }\n }\n\n // Default to docs/PROGRESS.md\n return join(root, 'docs', 'PROGRESS.md');\n}\n\nfunction join(...parts: string[]): string {\n return parts.join('/').replace(/\\/+/g, '/');\n}\n", "/**\n * Sync command - manually sync project status to GitHub Projects and Issues\n */\n\nimport chalk from 'chalk';\nimport { syncToGitHub, syncProgressToGitHub, detectGitRepo, getGitHubToken } from '../sync/github-sync.js';\nimport { findProgressFile, parseProgressFile } from '../sync/progress-parser.js';\n\ninterface SyncOptions {\n full?: boolean;\n issuesOnly?: boolean;\n projectOnly?: boolean;\n dryRun?: boolean;\n verbose?: boolean;\n}\n\nexport async function syncCommand(repoArg?: string, options: SyncOptions = {}): Promise<void> {\n console.log(chalk.bold('\\n\uD83D\uDD04 Syncing project status to GitHub\\n'));\n\n // Determine repository\n let repo = repoArg;\n if (!repo) {\n const detectedRepo = await detectGitRepo();\n if (!detectedRepo) {\n console.error(chalk.red('Error: Could not detect GitHub repository.'));\n console.log(chalk.dim('Specify repository explicitly: spacecode sync owner/repo'));\n console.log(chalk.dim('Or run from within a git repository with a GitHub origin remote.'));\n process.exit(1);\n }\n repo = detectedRepo;\n }\n\n // Validate repo format\n const repoMatch = repo.match(/^([^/]+)\\/([^/]+)$/);\n if (!repoMatch) {\n console.error(chalk.red(`Error: Invalid repository format: ${repo}`));\n console.log(chalk.dim('Expected format: owner/repo'));\n process.exit(1);\n }\n\n console.log(chalk.dim(`Repository: ${repo}`));\n\n // Get GitHub token\n const token = await getGitHubToken();\n if (!token) {\n console.error(chalk.red('Error: GitHub token not found.'));\n console.log(chalk.dim('Set GITHUB_TOKEN environment variable or authenticate with: gh auth login'));\n process.exit(1);\n }\n\n // Dry run mode\n if (options.dryRun) {\n console.log(chalk.yellow('\u26A0\uFE0F DRY RUN MODE - No changes will be made\\n'));\n }\n\n // Parse PROGRESS.md\n console.log(chalk.dim('Parsing PROGRESS.md...'));\n const progressFile = findProgressFile();\n const progressData = await parseProgressFile(progressFile, {\n verbose: options.verbose,\n onProgress: (msg) => {\n if (options.verbose) console.log(chalk.dim(` ${msg}`));\n },\n });\n\n console.log(chalk.dim(`Found ${progressData.features.length} features`));\n console.log(chalk.dim(` ${progressData.completedFeatures.length} completed`));\n console.log(chalk.dim(` ${progressData.inProgressFeatures.length} in progress`));\n console.log(chalk.dim(` ${progressData.notStartedFeatures.length} not started`));\n\n // Sync to GitHub based on options\n const totalResult = {\n issuesCreated: 0,\n issuesUpdated: 0,\n issuesClosed: 0,\n todosReplaced: 0,\n errors: [] as string[],\n };\n\n // Sync TODO comments (issues)\n if (!options.projectOnly) {\n console.log(chalk.dim('\\nSyncing TODO comments to GitHub...'));\n const todoResult = await syncToGitHub(repo, token, {\n dryRun: options.dryRun,\n verbose: options.verbose,\n onProgress: (msg) => console.log(chalk.dim(` ${msg}`)),\n });\n totalResult.issuesCreated += todoResult.issuesCreated;\n totalResult.issuesUpdated += todoResult.issuesUpdated;\n totalResult.issuesClosed += todoResult.issuesClosed;\n totalResult.todosReplaced += todoResult.todosReplaced;\n totalResult.errors.push(...todoResult.errors);\n }\n\n // Sync PROGRESS.md features (project)\n if (!options.issuesOnly) {\n console.log(chalk.dim('\\nSyncing PROGRESS.md features to GitHub...'));\n const progressResult = await syncProgressToGitHub(repo, token, progressData, {\n dryRun: options.dryRun,\n verbose: options.verbose,\n onProgress: (msg) => console.log(chalk.dim(` ${msg}`)),\n });\n totalResult.issuesCreated += progressResult.issuesCreated;\n totalResult.issuesClosed += progressResult.issuesClosed;\n totalResult.errors.push(...progressResult.errors);\n }\n\n const result = totalResult;\n\n // Report results\n console.log();\n if (options.dryRun) {\n console.log(chalk.yellow.bold('DRY RUN RESULTS:'));\n } else {\n console.log(chalk.bold('RESULTS:'));\n }\n\n if (result.issuesCreated > 0) {\n console.log(chalk.green(` \u2705 Created ${result.issuesCreated} issue(s)`));\n }\n if (result.issuesUpdated > 0) {\n console.log(chalk.green(` \u2705 Updated ${result.issuesUpdated} issue(s)`));\n }\n if (result.issuesClosed > 0) {\n console.log(chalk.green(` \u2705 Closed ${result.issuesClosed} issue(s)`));\n }\n if (result.todosReplaced > 0) {\n console.log(chalk.green(` \u2705 Replaced ${result.todosReplaced} TODO(s) with issue references`));\n }\n\n if (result.issuesCreated === 0 && result.issuesUpdated === 0 && result.issuesClosed === 0 && result.todosReplaced === 0) {\n console.log(chalk.dim(' No changes needed'));\n }\n\n if (result.errors.length > 0) {\n console.log();\n console.log(chalk.yellow.bold(`\u26A0\uFE0F ${result.errors.length} error(s):`));\n result.errors.forEach((err) => console.log(chalk.red(` \u2022 ${err}`)));\n }\n\n console.log();\n if (options.dryRun) {\n console.log(chalk.yellow('Run without --dry-run to apply changes.'));\n }\n}\n", "/**\n * Attach command - reconnect to an existing running session\n *\n * Unlike `launch`, this does NOT create the session.\n * It connects to an already-running session via WebSocket terminal.\n * Use --destroy to tear down the session on disconnect.\n *\n * Accepts a session ID or name from the local registry.\n */\n\nimport chalk from 'chalk';\nimport { SANDBOX_WORKER_URL, DEFAULT_API_URL } from '@spacecode/shared/remote';\nimport { resolveAuthToken, sandboxClientOptions } from '../config.js';\nimport { loadSessions, resolveSession, markSessionDestroyed } from '../sessions.js';\n\nexport interface AttachOptions {\n destroy?: boolean;\n}\n\nexport async function attach(idOrName: string, options: AttachOptions): Promise<void> {\n console.log(chalk.bold('\\nspacecode attach\\n'));\n\n // \u2500\u2500 Resolve name to ID \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n let sessionId = idOrName;\n const sessions = await loadSessions();\n const session = resolveSession(sessions, idOrName);\n\n if (session) {\n sessionId = session.id;\n const label = session.name ? `\"${session.name}\" (${session.id})` : session.id;\n console.log(chalk.dim(`Session: ${label}`));\n }\n\n // \u2500\u2500 Auth \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n console.log(chalk.dim('Authenticating...'));\n const token = await resolveAuthToken();\n\n // \u2500\u2500 Backend name fallback \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // If no local session found and idOrName isn't a hex ID, try backend name lookup\n if (!session && !/^[0-9a-f]+$/i.test(idOrName)) {\n try {\n const res = await fetch(`${DEFAULT_API_URL}/api/sandboxes/by-name/${encodeURIComponent(idOrName)}`, {\n headers: { Authorization: `Bearer ${token}` },\n signal: AbortSignal.timeout(5_000),\n });\n if (res.ok) {\n const data = await res.json() as { id: string; name?: string };\n if (typeof data.id === 'string' && data.id) {\n sessionId = data.id;\n console.log(chalk.dim(`Resolved \"${idOrName}\" \u2192 ${sessionId}`));\n }\n } else if (res.status === 404) {\n console.error(chalk.red(`\\nSession \"${idOrName}\" not found.`));\n console.log(chalk.dim('Run `spacecode list` to see available sessions.'));\n process.exit(1);\n } else if (res.status === 401 || res.status === 403) {\n console.error(chalk.red(`\\nAuthentication failed (${res.status}). Please run \\`spacecode auth login\\` to refresh your credentials.`));\n process.exit(1);\n } else if (res.status >= 500) {\n console.log(chalk.yellow(`Warning: Backend name lookup failed (${res.status}). Name resolution may be incomplete.`));\n } else {\n console.log(chalk.dim(`Backend name lookup returned ${res.status}, falling back to ID`));\n }\n } catch (err) {\n console.log(chalk.dim(`Backend name lookup unavailable: ${err instanceof Error ? err.message : 'network error'}`));\n }\n }\n\n const { createSandboxClient, SandboxApiError } = await import('@spacecode/sandbox-client');\n const client = createSandboxClient(SANDBOX_WORKER_URL, token, sandboxClientOptions(token));\n\n // \u2500\u2500 Check session status \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n console.log(chalk.dim(`Checking session ${sessionId}...`));\n\n try {\n const info = await client.getSandboxStatus(sessionId);\n\n if (info.status !== 'running') {\n console.error(chalk.red(`\\nSession ${sessionId} is not running (status: ${info.status}).`));\n console.log(chalk.dim('Only running sessions can be attached to.'));\n process.exit(1);\n }\n\n console.log(chalk.green(`Session ${sessionId} is running.`));\n } catch (error) {\n if (error instanceof SandboxApiError && error.status === 404) {\n console.error(chalk.red(`\\nSession '${idOrName}' not found.`));\n if (!session) {\n console.log(chalk.dim('Run `spacecode list` to see available sessions.'));\n }\n process.exit(1);\n }\n console.error(chalk.red(`\\nError checking session: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n\n // Connect via WebSocket terminal\n const wsUrl = client.getWsUrl(sessionId);\n console.log(chalk.dim('Connecting via WebSocket...\\n'));\n console.log(chalk.dim('\u2500'.repeat(50)));\n\n try {\n const { connectTerminal } = await import('../utils/ws-terminal.js');\n const exitCode = await connectTerminal(wsUrl, sessionId);\n\n console.log(chalk.dim('\u2500'.repeat(50)));\n console.log(chalk.dim('\\nSession ended.'));\n\n if (options.destroy) {\n console.log(chalk.dim('Destroying session...'));\n try {\n await client.destroySandbox(sessionId);\n await markSessionDestroyed(sessionId).catch((err) => {\n console.warn(chalk.dim(`Warning: Could not update session registry: ${err instanceof Error ? err.message : String(err)}`));\n });\n console.log(chalk.green('Session destroyed.'));\n } catch (err) {\n console.log(chalk.yellow(`Warning: Failed to destroy session: ${err instanceof Error ? err.message : String(err)}`));\n }\n } else {\n const reconnectLabel = session?.name ?? sessionId;\n console.log(chalk.dim(`Session still running (no web UI yet; ADR-15).`));\n console.log(chalk.dim(`Or reconnect: spacecode attach ${reconnectLabel}`));\n console.log(chalk.dim(`Destroy: spacecode destroy ${reconnectLabel}`));\n }\n\n process.exit(exitCode);\n } catch (error) {\n console.error(chalk.red('\\nError: WebSocket connection failed.'));\n console.error(chalk.dim(String(error)));\n process.exit(1);\n }\n}\n", "import chalk from 'chalk'\n\n/**\n * Render markdown-ish text to chalk-styled terminal output.\n * Handles: bold, italic, inline code, code blocks, headers, lists, links, blockquotes.\n */\nexport function renderMarkdown(text: string): string {\n const lines = text.split('\\n')\n const result: string[] = []\n let inCodeBlock = false\n\n for (const line of lines) {\n if (line.startsWith('```')) {\n inCodeBlock = !inCodeBlock\n if (inCodeBlock) {\n result.push(chalk.dim(' \u2502'))\n }\n continue\n }\n\n if (inCodeBlock) {\n result.push(chalk.dim(' \u2502 ') + chalk.dim(line))\n continue\n }\n\n let rendered = line\n\n // Headers\n if (rendered.startsWith('### ')) {\n result.push(chalk.bold(rendered.slice(4)))\n continue\n }\n if (rendered.startsWith('## ')) {\n result.push(chalk.bold.underline(rendered.slice(3)))\n continue\n }\n if (rendered.startsWith('# ')) {\n result.push(chalk.bold.underline(rendered.slice(2)))\n continue\n }\n\n // Blockquotes\n if (rendered.startsWith('> ')) {\n result.push(chalk.dim('\u2502 ') + chalk.dim(rendered.slice(2)))\n continue\n }\n\n // List items\n if (/^\\s*[-*] /.test(rendered)) {\n rendered = rendered.replace(/^(\\s*)[-*] /, '$1\u00B7 ')\n }\n\n // Inline formatting (order matters: code first to avoid bold/italic inside code)\n rendered = rendered.replace(/`([^`]+)`/g, (_, code) => chalk.cyan(code))\n rendered = rendered.replace(/\\*\\*([^*]+)\\*\\*/g, (_, bold) => chalk.bold(bold))\n rendered = rendered.replace(/\\*([^*]+)\\*/g, (_, italic) => chalk.italic(italic))\n rendered = rendered.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, (_, text, url) =>\n chalk.underline(text) + chalk.dim(` (${url})`),\n )\n\n result.push(rendered)\n }\n\n return result.join('\\n')\n}\n", "/**\n * Terminal renderer for agent events \u2014 compact, polished output.\n *\n * Design: one-line tool summaries, in-place status line, line-numbered diffs,\n * markdown text rendering, thinking timer, and cost display.\n */\n\nimport chalk from 'chalk'\nimport type { AgentEvent } from '@spacecode/shared/agent'\nimport { renderMarkdown } from './markdown.js'\n\n// \u2500\u2500 State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ntype RenderPhase = 'idle' | 'thinking' | 'streaming' | 'tool_running'\n\nlet phase: RenderPhase = 'idle'\nlet toolCount = 0\nlet turnStartTime = Date.now()\nlet thinkingStart = 0\nlet thinkingTimer: ReturnType<typeof setInterval> | null = null\nlet pendingTools = new Map<string, { tool: string; input: Record<string, unknown>; start: number }>()\nlet totalInputTokens = 0\nlet totalOutputTokens = 0\n\nexport function resetTurnState(): void {\n phase = 'idle'\n toolCount = 0\n turnStartTime = Date.now()\n thinkingStart = 0\n stopThinkingTimer()\n pendingTools.clear()\n totalInputTokens = 0\n totalOutputTokens = 0\n}\n\n// \u2500\u2500 Status Line \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction clearLine(): void {\n process.stderr.write('\\r\\x1b[K')\n}\n\nfunction statusLine(text: string): void {\n clearLine()\n process.stderr.write(chalk.dim(text))\n}\n\n// \u2500\u2500 Thinking Timer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction startThinkingTimer(): void {\n thinkingStart = Date.now()\n phase = 'thinking'\n updateThinking()\n thinkingTimer = setInterval(updateThinking, 100)\n}\n\nfunction updateThinking(): void {\n const elapsed = ((Date.now() - thinkingStart) / 1000).toFixed(1)\n statusLine(`\u23F3 Thinking... (${elapsed}s)`)\n}\n\nfunction stopThinkingTimer(): void {\n if (thinkingTimer) {\n clearInterval(thinkingTimer)\n thinkingTimer = null\n }\n}\n\n// \u2500\u2500 Diff Rendering \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction renderDiff(oldStr: string, newStr: string): string {\n const oldLines = oldStr.split('\\n')\n const newLines = newStr.split('\\n')\n\n let prefixLen = 0\n while (prefixLen < oldLines.length && prefixLen < newLines.length && oldLines[prefixLen] === newLines[prefixLen]) {\n prefixLen++\n }\n\n let suffixLen = 0\n while (\n suffixLen < oldLines.length - prefixLen &&\n suffixLen < newLines.length - prefixLen &&\n oldLines[oldLines.length - 1 - suffixLen] === newLines[newLines.length - 1 - suffixLen]\n ) {\n suffixLen++\n }\n\n const result: string[] = []\n const maxLines = 15\n let lineCount = 0\n\n for (let i = prefixLen; i < oldLines.length - suffixLen && lineCount < maxLines; i++) {\n const lineNum = chalk.dim(`${String(i + 1).padStart(4)} \u2502 `)\n result.push(` ${lineNum}${chalk.red(`- ${oldLines[i]}`)}`)\n lineCount++\n }\n\n for (let i = prefixLen; i < newLines.length - suffixLen && lineCount < maxLines; i++) {\n const lineNum = chalk.dim(`${String(i + 1).padStart(4)} \u2502 `)\n result.push(` ${lineNum}${chalk.green(`+ ${newLines[i]}`)}`)\n lineCount++\n }\n\n const totalChanges = (oldLines.length - suffixLen - prefixLen) + (newLines.length - suffixLen - prefixLen)\n if (totalChanges > maxLines) {\n result.push(chalk.dim(` ... ${totalChanges - maxLines} more lines`))\n }\n\n return result.join('\\n')\n}\n\n// \u2500\u2500 Tool Summary Formatting \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction formatToolSummary(tool: string, input: Record<string, unknown>, result?: string, durationMs?: number): string {\n const duration = durationMs ? chalk.dim(` (${durationMs >= 1000 ? `${(durationMs / 1000).toFixed(1)}s` : `${durationMs}ms`})`) : ''\n\n switch (tool) {\n case 'read_file':\n return ` ${chalk.dim('\u25CF')} ${chalk.cyan('read_file')} ${input.path}${duration}`\n case 'write_file': {\n const content = String(input.content ?? '')\n const lines = content.split('\\n').length\n return ` ${chalk.green('+')} ${String(input.path)} ${chalk.dim(`(${lines} lines)`)}`\n }\n case 'edit_file': {\n const oldLines = String(input.old_string ?? '').split('\\n').length\n const newLines = String(input.new_string ?? '').split('\\n').length\n const added = Math.max(0, newLines - oldLines)\n const removed = Math.max(0, oldLines - newLines)\n const changeSummary = added > 0 && removed > 0 ? `+${added} -${removed}` : added > 0 ? `+${added}` : removed > 0 ? `-${removed}` : '~'\n return ` ${chalk.dim('\u25CF')} ${chalk.yellow('edit_file')} ${input.path} ${chalk.dim(`(${changeSummary})`)}`\n }\n case 'bash': {\n const cmd = String(input.command ?? '').slice(0, 60)\n const summary = result ? extractBashSummary(result) : ''\n return ` ${chalk.dim('\u25CF')} ${chalk.magenta('bash')} ${cmd}${summary ? ` \u2014 ${summary}` : ''}${duration}`\n }\n case 'search': {\n const query = String(input.query ?? '')\n const count = result ? (result.match(/\\n/g) ?? []).length : 0\n return ` ${chalk.dim('\u25CF')} ${chalk.blueBright('search')} \"${query}\" \u2014 ${count} results${duration}`\n }\n case 'list_directory': {\n const count = result ? result.split('\\n').filter(Boolean).length : 0\n return ` ${chalk.dim('\u25CF')} ${chalk.blue('list_directory')} ${input.path} \u2014 ${count} items${duration}`\n }\n case 'build_feature':\n // Invisible \u2014 individual file_changed events cover the output\n return ''\n case 'create_pull_request': {\n const title = String(input.title ?? '')\n const prUrl = result ? result.trim() : ''\n const urlLine = prUrl ? `\\n ${chalk.dim('\u2192')} ${chalk.underline(prUrl)}` : ''\n return ` ${chalk.dim('\u25CF')} ${chalk.green('create_pull_request')} ${title}${duration}${urlLine}`\n }\n case 'preview': {\n const url = result?.match(/https?:\\/\\/\\S+/)?.[0] ?? null\n const isReady = result?.startsWith('Preview ready') ?? false\n const icon = isReady ? chalk.green('\u25B6') : chalk.yellow('\u25D0')\n const label = isReady ? chalk.green.bold('Preview ready') : chalk.yellow.bold('Preview starting')\n const urlLine = url ? `\\n ${chalk.dim('\u2192')} ${chalk.cyan.underline(url)}` : ''\n return ` ${icon} ${label}${duration}${urlLine}`\n }\n default:\n return ` ${chalk.dim('\u25CF')} ${tool}${duration}`\n }\n}\n\nfunction extractBashSummary(output: string): string {\n const lines = output.trim().split('\\n')\n const last = lines[lines.length - 1] ?? ''\n\n // Test summary patterns\n const testMatch = output.match(/(\\d+) (?:tests? )?passed/i)\n if (testMatch) return chalk.green(`${testMatch[1]} passed`)\n\n const failMatch = output.match(/(\\d+) (?:tests? )?failed/i)\n if (failMatch) return chalk.red(`${failMatch[1]} failed`)\n\n if (/success|\u2713|done/i.test(last)) return chalk.green('success')\n\n return ''\n}\n\nfunction formatToolError(tool: string, input: Record<string, unknown>, output: string, durationMs?: number): string {\n const cmd = tool === 'bash' ? String(input.command ?? '').slice(0, 60) : String(input.path ?? tool)\n const duration = durationMs ? chalk.dim(` (${(durationMs / 1000).toFixed(1)}s)`) : ''\n\n const lines = output.split('\\n').filter(Boolean)\n const maxLines = 8\n const truncated = lines.length > maxLines\n const shown = lines.slice(0, maxLines)\n\n const result = [` ${chalk.red('\u2717')} ${tool} ${cmd}${duration}`]\n for (const line of shown) {\n result.push(` ${chalk.dim('\u2502')} ${line}`)\n }\n if (truncated) {\n result.push(chalk.dim(` \u2502 ... ${lines.length - maxLines} more`))\n }\n\n return result.join('\\n')\n}\n\n// \u2500\u2500 Cost Estimation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst COST_PER_M_INPUT = 3 // $/M tokens (Sonnet-class)\nconst COST_PER_M_OUTPUT = 15\n\nfunction estimateCost(inputTokens: number, outputTokens: number): string {\n const cost = (inputTokens * COST_PER_M_INPUT + outputTokens * COST_PER_M_OUTPUT) / 1_000_000\n return `$${cost.toFixed(cost < 0.01 ? 4 : 2)}`\n}\n\n// \u2500\u2500 Main Render \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function renderEvent(event: AgentEvent): void {\n switch (event.type) {\n case 'status': {\n if (event.phase === 'thinking' && phase !== 'thinking') {\n startThinkingTimer()\n }\n break\n }\n\n case 'text': {\n // Full text \u2014 skip (text_delta handles streaming)\n break\n }\n\n case 'text': {\n // Full text block \u2014 used for replay/reconnect. Render with markdown.\n if (phase === 'thinking') {\n stopThinkingTimer()\n clearLine()\n process.stderr.write('\\n')\n }\n phase = 'streaming'\n process.stdout.write(renderMarkdown(event.content))\n if (!event.content.endsWith('\\n')) process.stdout.write('\\n')\n break\n }\n\n case 'text_delta': {\n if (phase === 'thinking') {\n stopThinkingTimer()\n clearLine()\n process.stderr.write('\\n')\n }\n phase = 'streaming'\n // Write raw \u2014 text_delta is character/word fragments, markdown parsing\n // would break across chunk boundaries\n process.stdout.write(event.text)\n break\n }\n\n case 'tool_call': {\n if (phase === 'thinking') {\n stopThinkingTimer()\n clearLine()\n process.stderr.write('\\n')\n }\n phase = 'tool_running'\n toolCount++\n pendingTools.set(event.id, { tool: event.tool, input: event.input, start: Date.now() })\n\n // Show what's running in status line\n const inputSummary = event.tool === 'bash'\n ? String(event.input.command ?? '').slice(0, 40)\n : String(event.input.path ?? event.tool)\n statusLine(`\uD83D\uDD27 ${event.tool}: ${inputSummary} \u2502 ${toolCount} tools`)\n break\n }\n\n case 'tool_output': {\n // Update status line with latest output for long-running tools\n const pending = pendingTools.get(event.id)\n if (pending) {\n const elapsed = Date.now() - pending.start\n if (elapsed > 5000) {\n const lastLine = event.text.trim().split('\\n').pop() ?? ''\n statusLine(`\uD83D\uDD27 ${pending.tool}: ${lastLine.slice(0, 50)} \u2502 ${toolCount} tools`)\n }\n }\n break\n }\n\n case 'tool_result': {\n clearLine()\n const pending = pendingTools.get(event.id)\n pendingTools.delete(event.id)\n\n if (!pending) break\n\n const durationMs = event.duration_ms ?? (Date.now() - pending.start)\n\n if (event.is_error) {\n process.stderr.write(formatToolError(pending.tool, pending.input, event.output, durationMs) + '\\n')\n } else {\n const summary = formatToolSummary(pending.tool, pending.input, event.output, durationMs)\n if (summary) process.stderr.write(summary + '\\n')\n\n // Show inline diff for edit_file\n if (\n pending.tool === 'edit_file' &&\n typeof pending.input.old_string === 'string' &&\n typeof pending.input.new_string === 'string'\n ) {\n const diff = renderDiff(pending.input.old_string, pending.input.new_string)\n if (diff) process.stderr.write(diff + '\\n')\n }\n }\n\n phase = pendingTools.size > 0 ? 'tool_running' : 'idle'\n break\n }\n\n case 'file_changed': {\n const icon = event.status === 'created' ? chalk.green('+') : event.status === 'deleted' ? chalk.red('-') : chalk.yellow('~')\n const lines = event.content.split('\\n').length\n process.stderr.write(` ${icon} ${event.path} ${chalk.dim(`(${lines} lines)`)}\\n`)\n break\n }\n\n case 'done': {\n stopThinkingTimer()\n clearLine()\n\n const elapsed = ((Date.now() - turnStartTime) / 1000).toFixed(1)\n const toolLabel = toolCount === 1 ? '1 tool' : `${toolCount} tools`\n\n // Token display \u2014 use what's available\n let tokenInfo = ''\n if (totalInputTokens > 0 || totalOutputTokens > 0) {\n const cost = estimateCost(totalInputTokens, totalOutputTokens)\n tokenInfo = ` \u2502 ${totalInputTokens.toLocaleString()} \u2192 ${totalOutputTokens.toLocaleString()} tokens \u2502 ${cost}`\n }\n\n if (event.success) {\n process.stderr.write(chalk.green(`\\n\u2713 Done (${toolLabel}, ${elapsed}s)${tokenInfo}\\n`))\n } else {\n process.stderr.write(chalk.red(`\\n\u2717 Failed (${toolLabel}, ${elapsed}s)${tokenInfo}\\n`))\n }\n\n // Turn separator\n process.stderr.write(chalk.dim('\u2500'.repeat(41)) + '\\n')\n phase = 'idle'\n break\n }\n\n case 'result': {\n clearLine()\n process.stdout.write(renderMarkdown(event.text))\n if (!event.text.endsWith('\\n')) process.stdout.write('\\n')\n break\n }\n\n case 'error': {\n stopThinkingTimer()\n clearLine()\n process.stderr.write(` ${chalk.red('\u2717')} ${chalk.red(event.message)}\\n`)\n break\n }\n }\n}\n\n/**\n * Track token usage from API responses.\n * Called by the agent client when it receives usage data.\n */\nexport function trackTokens(inputTokens: number, outputTokens: number): void {\n totalInputTokens += inputTokens\n totalOutputTokens += outputTokens\n}\n", "/**\n * WebSocket client for AgentDO.\n *\n * Connects to the agent session, sends prompts, receives events,\n * and handles reconnection with replay via the seq protocol.\n */\n\nimport WebSocket from 'ws';\nimport chalk from 'chalk';\nimport type { AgentEvent, ClientMessage } from '@spacecode/shared/agent';\nimport { renderEvent } from './renderer.js';\n\nconst MAX_RECONNECT = 10;\nconst BASE_DELAY_MS = 1000;\n\nexport function formatReconnectMessage(attempt: number, max: number): string {\n return chalk.yellow(`\u21BB Reconnecting (${attempt}/${max})...`);\n}\n\nexport function formatReconnectSuccess(): string {\n return chalk.green('\u2713 Reconnected');\n}\n\nexport interface AgentClientOptions {\n wsUrl: string;\n onEvent?: (event: AgentEvent) => void;\n onDone?: (success: boolean) => void;\n onError?: (message: string) => void;\n /** Fires when the agent finishes a prompt (done/result event) \u2014 used by the REPL to show the next prompt. */\n onReady?: () => void;\n}\n\nexport class AgentClient {\n private ws: WebSocket | null = null;\n private lastSeq: number = 0;\n private reconnectAttempts: number = 0;\n private intentionalClose: boolean = false;\n private options: AgentClientOptions;\n\n constructor(options: AgentClientOptions) {\n this.options = options;\n }\n\n /** Connect to the agent WebSocket. Returns when the connection is established. */\n async connect(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.options.wsUrl);\n\n this.ws.on('open', () => {\n if (this.reconnectAttempts > 0) {\n process.stderr.write(formatReconnectSuccess() + '\\n');\n }\n this.reconnectAttempts = 0;\n\n // If reconnecting, request replay of missed events\n if (this.lastSeq > 0) {\n this.send({ type: 'reconnect', last_seq: this.lastSeq });\n }\n\n resolve();\n });\n\n this.ws.on('message', (data: WebSocket.Data) => {\n try {\n const event = JSON.parse(data.toString()) as AgentEvent;\n this.lastSeq = event.seq;\n\n // Render to terminal\n renderEvent(event);\n\n // Forward to callback\n this.options.onEvent?.(event);\n\n if (event.type === 'ping') {\n this.send({ type: 'pong' });\n return;\n }\n\n if (event.type === 'done') {\n this.options.onReady?.();\n this.options.onDone?.(event.success);\n } else if (event.type === 'result') {\n this.options.onReady?.();\n } else if (event.type === 'error') {\n this.options.onError?.(event.message);\n }\n } catch {\n // Ignore malformed messages\n }\n });\n\n this.ws.on('close', () => {\n if (!this.intentionalClose) {\n this.attemptReconnect();\n }\n });\n\n this.ws.on('error', (err) => {\n if (this.reconnectAttempts === 0) {\n reject(err);\n }\n });\n });\n }\n\n /** Send a prompt to the agent. */\n prompt(text: string): void {\n this.send({ type: 'prompt', text });\n }\n\n /** Cancel the current agent run. */\n cancel(): void {\n this.send({ type: 'cancel' });\n }\n\n /** Close the connection cleanly. */\n close(): void {\n this.intentionalClose = true;\n this.ws?.close();\n }\n\n /** Send a raw message to the agent WebSocket. */\n send(msg: ClientMessage): void {\n if (this.ws?.readyState === WebSocket.OPEN) {\n this.ws.send(JSON.stringify(msg));\n }\n }\n\n private attemptReconnect(): void {\n if (this.reconnectAttempts >= MAX_RECONNECT) {\n this.options.onError?.('Max reconnection attempts exceeded');\n return;\n }\n\n this.reconnectAttempts++;\n process.stderr.write(formatReconnectMessage(this.reconnectAttempts, MAX_RECONNECT) + '\\n');\n const delay = BASE_DELAY_MS * Math.pow(2, this.reconnectAttempts - 1);\n\n setTimeout(() => {\n this.connect().catch(() => {\n this.attemptReconnect();\n });\n }, delay);\n }\n}\n", "/**\n * Bidirectional file sync between local repo and cloud agent.\n *\n * - Server \u2192 Local: on `file_changed` events, write to local disk\n * - Local \u2192 Server: watch local repo with fs.watch, send `file_sync` messages\n *\n * Uses a suppression set to avoid echo loops (agent writes file \u2192 watcher\n * detects \u2192 would send back \u2192 suppressed).\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { execFileSync } from 'node:child_process';\nimport type { AgentEvent, FileChangedEvent, ClientMessage } from '@spacecode/shared/agent';\n\n/** How long to suppress a path after we wrote it (ms). */\nconst SUPPRESS_DURATION_MS = 2000;\n\nexport interface FileSyncOptions {\n /** Absolute path to the local repo root. */\n repoRoot: string;\n /** Send a message to the agent WebSocket. */\n send: (msg: ClientMessage) => void;\n}\n\nexport class FileSync {\n private watcher: fs.FSWatcher | null = null;\n private suppressedPaths = new Map<string, number>();\n private options: FileSyncOptions;\n\n constructor(options: FileSyncOptions) {\n this.options = options;\n }\n\n /**\n * Bulk-sync tracked files from the local repo to the server.\n * Uses `git ls-files` to find tracked files, reads each, and sends file_sync messages.\n * Called once on session start so the agent's D1 FileStore has the full repo.\n */\n syncInitial(): number {\n try {\n const stdout = execFileSync('git', ['ls-files'], {\n cwd: this.options.repoRoot,\n encoding: 'utf-8',\n timeout: 10_000,\n });\n const files = stdout.trim().split('\\n').filter((f) => f && !this.shouldIgnore(f));\n // Cap at 300 files to avoid flooding the WebSocket on large repos\n const batch = files.slice(0, 300);\n let synced = 0;\n for (const filePath of batch) {\n const absPath = path.join(this.options.repoRoot, filePath);\n try {\n const stat = fs.statSync(absPath);\n // Skip large files (> 256KB)\n if (stat.size > 256 * 1024) continue;\n const content = fs.readFileSync(absPath, 'utf-8');\n this.options.send({ type: 'file_sync', path: filePath, content });\n synced++;\n } catch {\n // Skip unreadable files\n }\n }\n return synced;\n } catch {\n // git ls-files failed \u2014 not a git repo or git not available\n return 0;\n }\n }\n\n /** Start watching the local repo for changes. */\n start(): void {\n if (this.watcher) return;\n\n this.watcher = fs.watch(\n this.options.repoRoot,\n { recursive: true },\n (eventType, filename) => {\n if (!filename) return;\n this.handleLocalChange(filename);\n },\n );\n }\n\n /** Stop the watcher and clean up. */\n stop(): void {\n this.watcher?.close();\n this.watcher = null;\n this.suppressedPaths.clear();\n }\n\n /** Handle a file_changed event from the agent \u2014 write to local disk. */\n handleServerEvent(event: AgentEvent): void {\n if (event.type !== 'file_changed') return;\n const fileEvent = event as FileChangedEvent;\n const absPath = path.join(this.options.repoRoot, fileEvent.path);\n\n // Suppress echo from watcher\n this.suppressedPaths.set(fileEvent.path, Date.now() + SUPPRESS_DURATION_MS);\n\n if (fileEvent.status === 'deleted') {\n try { fs.unlinkSync(absPath); } catch { /* may not exist */ }\n } else {\n // Ensure parent directory exists\n const dir = path.dirname(absPath);\n fs.mkdirSync(dir, { recursive: true });\n fs.writeFileSync(absPath, fileEvent.content, 'utf-8');\n }\n }\n\n private handleLocalChange(relativePath: string): void {\n // Normalize path separators\n const normalized = relativePath.replace(/\\\\/g, '/');\n\n // Skip generated/ignored paths\n if (this.shouldIgnore(normalized)) return;\n\n // Check suppression (was this written by us from a server event?)\n const suppressUntil = this.suppressedPaths.get(normalized);\n if (suppressUntil && Date.now() < suppressUntil) {\n return;\n }\n this.suppressedPaths.delete(normalized);\n\n // Read file content and send to server\n const absPath = path.join(this.options.repoRoot, normalized);\n try {\n const content = fs.readFileSync(absPath, 'utf-8');\n this.options.send({\n type: 'file_sync',\n path: normalized,\n content,\n });\n } catch {\n // File may have been deleted \u2014 send empty content\n // (the server will handle it as a deletion if needed)\n }\n }\n\n private shouldIgnore(p: string): boolean {\n const ignored = [\n 'node_modules/',\n '.git/',\n 'dist/',\n '.cache/',\n '.next/',\n '__pycache__/',\n '.pytest_cache/',\n 'coverage/',\n '.DS_Store',\n ];\n return ignored.some((i) => p.includes(i));\n }\n}\n", "import fs from 'fs';\nimport path from 'path';\n\nconst DEFAULT_MAX_LINES = 1000;\n\nexport class PersistentHistory {\n private filePath: string;\n private maxLines: number;\n private lastEntry = '';\n\n constructor(filePath: string, maxLines = DEFAULT_MAX_LINES) {\n this.filePath = filePath;\n this.maxLines = maxLines;\n }\n\n load(): string[] {\n try {\n const content = fs.readFileSync(this.filePath, 'utf-8');\n const lines = content.split('\\n').filter(Boolean);\n if (lines.length > this.maxLines) {\n const trimmed = lines.slice(lines.length - this.maxLines);\n fs.writeFileSync(this.filePath, trimmed.join('\\n') + '\\n', 'utf-8');\n return trimmed;\n }\n if (lines.length > 0) this.lastEntry = lines[lines.length - 1];\n return lines;\n } catch {\n return [];\n }\n }\n\n append(line: string): void {\n if (line === this.lastEntry) return;\n this.lastEntry = line;\n const dir = path.dirname(this.filePath);\n fs.mkdirSync(dir, { recursive: true });\n fs.appendFileSync(this.filePath, line + '\\n', 'utf-8');\n }\n}\n", "export interface SlashCommand {\n name: string;\n description: string;\n}\n\nexport const SLASH_COMMANDS: SlashCommand[] = [\n { name: '/quit', description: 'Exit the session' },\n { name: '/history', description: 'Show conversation history' },\n { name: '/clear', description: 'Clear the screen' },\n { name: '/status', description: 'Show session info' },\n { name: '/compact', description: 'Compact conversation context' },\n { name: '/new', description: 'Start a fresh session' },\n { name: '/sessions', description: 'List recent sessions' },\n { name: '/name', description: 'Name the current session' },\n];\n\n/** Tab-complete a slash command prefix. Returns matching command names. */\nexport function completeSlashCommand(prefix: string): string[] {\n return SLASH_COMMANDS\n .filter((cmd) => cmd.name.startsWith(prefix))\n .map((cmd) => cmd.name);\n}\n\n/** Check if input is a known slash command (ignoring arguments). */\nexport function isSlashCommand(input: string): boolean {\n const [command] = parseSlashCommand(input);\n return SLASH_COMMANDS.some((cmd) => cmd.name === command);\n}\n\n/** Parse slash command into [command, args]. */\nexport function parseSlashCommand(input: string): [string, string] {\n const trimmed = input.trimStart();\n const spaceIndex = trimmed.indexOf(' ');\n if (spaceIndex === -1) {\n return [trimmed, ''];\n }\n return [trimmed.slice(0, spaceIndex), trimmed.slice(spaceIndex + 1).trimStart()];\n}\n", "/**\n * Init and resume animations for the SpaceCode CLI.\n *\n * Displays a branded logo box and animated cascade of setup steps\n * when launching or resuming a session.\n */\n\nimport chalk from 'chalk';\n\nexport interface InitAnimationOptions {\n version: string;\n username: string;\n sessionName: string;\n ttyHost: string;\n fileCount: number;\n repo?: string;\n branch?: string;\n fast?: boolean;\n}\n\nexport interface ResumeAnimationOptions {\n sessionName: string;\n turnCount: number;\n fast?: boolean;\n}\n\nconst STAGGER_MS = 150;\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction write(text: string): void {\n process.stderr.write(text);\n}\n\n/**\n * Display a logo box and animated cascade of setup steps.\n */\nexport async function showInitAnimation(opts: InitAnimationOptions): Promise<void> {\n const stagger = opts.fast ? 0 : STAGGER_MS;\n\n // Logo box\n const label = ` \\u25C6 SpaceCode v${opts.version}`;\n const innerWidth = Math.max(label.length + 2, 32);\n const padded = label.padEnd(innerWidth);\n const rule = '\\u2500'.repeat(innerWidth);\n\n write(`${chalk.cyan('\\u256D' + rule + '\\u256E')}\\n`);\n write(`${chalk.cyan('\\u2502')}${chalk.bold(padded)}${chalk.cyan('\\u2502')}\\n`);\n write(`${chalk.cyan('\\u2570' + rule + '\\u256F')}\\n`);\n\n // Cascade steps\n const steps = [\n `Authenticated as @${opts.username}`,\n `Session ${opts.sessionName} created`,\n `Connected to ${opts.ttyHost}`,\n `File sync active (${opts.fileCount} files)`,\n ];\n\n for (const step of steps) {\n if (stagger > 0) await delay(stagger);\n write(`${chalk.green('\\u2713')} ${step}\\n`);\n }\n\n // Context line\n if (opts.repo || opts.branch) {\n if (stagger > 0) await delay(stagger);\n const parts: string[] = [];\n if (opts.repo) parts.push(`repo: ${opts.repo}`);\n if (opts.branch) parts.push(`branch: ${opts.branch}`);\n write(`${chalk.dim(parts.join(' '))}\\n`);\n }\n\n write('\\n');\n}\n\n/**\n * Display a shorter resume banner.\n */\nexport async function showResumeAnimation(opts: ResumeAnimationOptions): Promise<void> {\n const stagger = opts.fast ? 0 : STAGGER_MS;\n if (stagger > 0) await delay(stagger);\n write(`${chalk.green('\\u2713')} Resumed \"${opts.sessionName}\" (${opts.turnCount} turns)\\n`);\n write('\\n');\n}\n", "/**\n * Authentication commands: login, logout, whoami\n *\n * Authentication is by SPACECODE_TOKEN (PAT or shared secret); see login().\n */\n\nimport { loadAuth, saveAuth, clearAuth as clearAuthFile, loadConfig } from '../config.js';\nimport { DEFAULT_API_URL } from '@spacecode/shared/remote';\nimport { BackendApiClient, AuthError } from '../api/client.js';\nimport chalk from 'chalk';\n\n/**\n * Sign in with an SP API key (`spacecode login --api-key sk_...`; create one in\n * the SpaceCode dashboard on SaaS Platform). The key is stored in ~/.spacecode/auth.json\n * (mode 0600) and sent as the Bearer token; the server verifies it on every request.\n *\n * Without a key, explain the supported credentials and throw so scripts and callers\n * do not treat this as a login. The GitHub OAuth redirect flow was removed\n * (ADR-2); personal access tokens and the shared secret remain for service use.\n */\nexport async function login(options: { apiKey?: string } = {}): Promise<void> {\n const apiKey = options.apiKey?.trim();\n if (apiKey) {\n if (!apiKey.startsWith('sk_') || apiKey.length < 12 || /\\s/.test(apiKey)) {\n throw new Error('That does not look like a SpaceCode API key (expected sk_...).');\n }\n await saveAuth({\n accessToken: apiKey,\n user: { id: 'api-key', githubId: '', githubLogin: `api-key ${apiKey.slice(0, 7)}...` },\n });\n console.log(chalk.green('API key saved. You are signed in.'));\n return;\n }\n\n console.error(chalk.yellow('Interactive GitHub login is no longer supported.'));\n console.error('Authenticate with an API key:');\n console.error(` ${chalk.bold('spacecode login --api-key sk_...')} key from your SpaceCode dashboard (saved to ~/.spacecode/auth.json)`);\n console.error(` ${chalk.bold('export SPACECODE_TOKEN=sk_...')} or set it in the environment (CI, scripts)`);\n console.error('Service credentials (internal use):');\n console.error(` ${chalk.bold('export SPACECODE_TOKEN=sct_...')} personal access token (exchanged for a short-lived JWT)`);\n console.error(` ${chalk.bold('export SPACECODE_TOKEN=<secret>')} sandbox shared secret (acts as the internal user)`);\n console.error(` ${chalk.bold('export SPACECODE_SHARED_TOKEN=<secret>')} backend gate secret (required for PAT exchange and backend calls)`);\n throw new Error('No credentials given; run `spacecode login --api-key sk_...` or set SPACECODE_TOKEN');\n}\n\n/**\n * Clear authentication credentials\n */\nexport async function logout(): Promise<void> {\n const auth = await loadAuth();\n await clearAuthFile();\n\n if (!auth.accessToken) {\n console.log(chalk.yellow('Already logged out'));\n return;\n }\n\n const username = auth.user?.githubLogin ?? 'unknown';\n console.log(chalk.green(`Logged out (${username})`));\n}\n\n/**\n * Show current user information\n */\nexport async function whoami(): Promise<void> {\n const auth = await loadAuth();\n\n if (!auth.accessToken) {\n console.log(chalk.yellow('Not logged in. Run `spacecode login` or any command to authenticate.'));\n return;\n }\n\n if (!auth.user) {\n console.log(chalk.yellow('Logged in (no user info cached)'));\n return;\n }\n\n const config = await loadConfig();\n const apiUrl = process.env.SPACECODE_API_URL ?? config.apiUrl ?? DEFAULT_API_URL;\n const client = new BackendApiClient(apiUrl, auth.accessToken);\n\n try {\n const user = await client.getCurrentUser();\n console.log(chalk.cyan(`${chalk.bold(user.githubLogin)}`));\n console.log(chalk.gray(` User ID: ${user.id}`));\n console.log(chalk.gray(` GitHub ID: ${user.githubId}`));\n } catch (error) {\n if (error instanceof AuthError) {\n console.log(chalk.yellow(`${auth.user.githubLogin} (session expired)`));\n console.log(chalk.gray('Run `spacecode login` to re-authenticate'));\n } else {\n console.log(chalk.cyan(`${chalk.bold(auth.user.githubLogin)}`));\n console.log(chalk.gray(` User ID: ${auth.user.id}`));\n console.log(chalk.gray(` (backend unavailable \u2014 showing cached info)`));\n }\n }\n}\n\n/**\n * Ensure user is authenticated. If no valid JWT exists, auto-opens\n * the GitHub OAuth flow in the browser.\n */\nexport async function requireAuth(): Promise<BackendApiClient> {\n const auth = await loadAuth();\n const config = await loadConfig();\n const apiUrl = process.env.SPACECODE_API_URL ?? config.apiUrl ?? DEFAULT_API_URL;\n\n // If we have a token, verify it's still valid\n if (auth.accessToken) {\n const client = new BackendApiClient(apiUrl, auth.accessToken);\n try {\n await client.getCurrentUser();\n return client;\n } catch (error) {\n if (!(error instanceof AuthError)) throw error;\n // Token expired \u2014 fall through to re-auth\n console.log(chalk.yellow('Session expired. Re-authenticating...'));\n }\n }\n\n // CI/env-var override: allow SPACECODE_TOKEN for headless environments\n const envToken = process.env.SPACECODE_TOKEN;\n if (envToken) {\n return new BackendApiClient(apiUrl, envToken);\n }\n\n // No valid token \u2014 auto-open OAuth\n await login();\n const freshAuth = await loadAuth();\n if (!freshAuth.accessToken) {\n throw new Error('Authentication failed \u2014 no token received');\n }\n return new BackendApiClient(apiUrl, freshAuth.accessToken);\n}\n", "/**\n * Agent service account management: create, list, update, delete.\n * Agent session management: create sessions, attach to running sessions.\n *\n * Agents are bot accounts that can launch sessions via API keys,\n * designed for CI/CD pipelines and automated workflows.\n *\n * Usage:\n * spacecode agent create --name \"claude-ci\"\n * spacecode agent list\n * spacecode agent update <id> --webhook https://example.com/hook\n * spacecode agent delete <id>\n * spacecode agent session \"fix the tests\" -R owner/repo\n * spacecode agent session attach <id>\n * SPACECODE_TOKEN=sct_abc123 spacecode -p \"fix tests\" -R owner/repo\n */\n\nimport type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { execFileSync } from 'node:child_process';\nimport { requireAuth } from './auth.js';\nimport { loadAuth, loadConfig } from '../config.js';\nimport { SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport { AgentClient } from '../agent/client.js';\nimport { FileSync } from '../agent/file-sync.js';\n\n/** Format a timestamp as a human-readable relative age. */\nfunction formatAge(timestampMs: number): string {\n const diff = Date.now() - timestampMs;\n const mins = Math.floor(diff / 60_000);\n if (mins < 1) return 'just now';\n if (mins < 60) return `${mins}m ago`;\n const hours = Math.floor(mins / 60);\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n return `${days}d ago`;\n}\n\n/**\n * Resolve the sandbox worker base URL (HTTPS).\n * Prefers env override, then config, then the shared constant.\n */\nexport async function getTtyUrl(): Promise<string> {\n const config = await loadConfig();\n return process.env.SANDBOX_WORKER_URL ?? config.apiUrl?.replace('backend.', 'tty.') ?? SANDBOX_WORKER_URL;\n}\n\n/**\n * Get the auth token for sandbox-worker requests.\n * Uses requireAuth() to ensure the user is logged in, then extracts the token.\n */\nexport async function getAuthToken(): Promise<string> {\n const client = await requireAuth();\n const token = client.getToken();\n if (!token) {\n // Fallback to reading auth file directly\n const auth = await loadAuth();\n if (!auth.accessToken) {\n throw new Error('Not authenticated. Run `spacecode login` first.');\n }\n return auth.accessToken;\n }\n return token;\n}\n\n/**\n * Try to detect the git repo root from the current working directory.\n * Returns null if not inside a git repo.\n */\nexport function findGitRoot(): string | null {\n try {\n return execFileSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();\n } catch {\n return null;\n }\n}\n\n/**\n * Create an agent session via the sandbox worker API.\n */\nexport interface CreateSessionResult {\n sessionId: string;\n /** Extracted work-item summary from a prior turn, present only when resuming a session that has one (EPIC-2 TICKET-2.2). */\n summary?: string | null;\n}\n\nexport async function createSession(\n ttyUrl: string,\n token: string,\n repoName?: string,\n sessionId?: string,\n name?: string,\n): Promise<CreateSessionResult> {\n const res = await fetch(`${ttyUrl}/api/agent/session`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({ repoName, sessionId, name }),\n });\n\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`Failed to create agent session (${res.status}): ${body}`);\n }\n\n const data = (await res.json()) as { sessionId: string; resumed?: boolean; summary?: string | null };\n return { sessionId: data.sessionId, summary: data.summary ?? null };\n}\n\n/**\n * List agent sessions for the current user.\n */\nexport async function listSessions(\n ttyUrl: string,\n token: string,\n limit?: number,\n): Promise<Array<{ id: string; repo_id: string | null; status: string; name: string | null; created_at: number; updated_at: number; message_count: number; last_prompt: string | null }>> {\n const params = new URLSearchParams();\n if (limit) params.set('limit', String(limit));\n const res = await fetch(`${ttyUrl}/api/agent/sessions?${params}`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n if (!res.ok) {\n throw new Error(`Failed to list sessions (${res.status})`);\n }\n const data = (await res.json()) as { sessions: any[] };\n return data.sessions;\n}\n\nexport interface WorkItem {\n id: string;\n repo_id: string;\n session_id: string;\n kind: 'decision' | 'work_item';\n description: string;\n status: 'open' | 'done';\n created_at: string;\n updated_at: string;\n session_name: string | null;\n}\n\n/**\n * List extracted work items (and decisions) across the current user's sessions.\n * Defaults to open work items; pass status: 'all' to include done/decisions too.\n */\nexport async function listWorkItems(\n ttyUrl: string,\n token: string,\n options: { repo?: string; status?: 'open' | 'done' | 'all'; limit?: number } = {},\n): Promise<WorkItem[]> {\n const params = new URLSearchParams();\n if (options.repo) params.set('repo', options.repo);\n if (options.status) params.set('status', options.status);\n if (options.limit) params.set('limit', String(options.limit));\n const res = await fetch(`${ttyUrl}/api/agent/work-items?${params}`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`Failed to list work items (${res.status}): ${body}`);\n }\n const data = (await res.json()) as { workItems: WorkItem[] };\n return data.workItems;\n}\n\n/**\n * Parse a work item's `created_at`/`updated_at` (D1 TEXT, SQLite's bare\n * \"YYYY-MM-DD HH:MM:SS\" UTC format with no offset) into epoch ms.\n * `new Date(...)` alone would parse that string as local time.\n */\nexport function parseWorkItemTimestamp(sqliteUtc: string): number {\n return new Date(sqliteUtc.replace(' ', 'T') + 'Z').getTime();\n}\n\n/**\n * Look up a session by name. Returns the session ID or null if not found.\n */\nexport async function lookupSessionByName(\n ttyUrl: string,\n token: string,\n name: string,\n): Promise<string | null> {\n const res = await fetch(`${ttyUrl}/api/agent/sessions?name=${encodeURIComponent(name)}`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n if (!res.ok) return null;\n const data = (await res.json()) as { session?: { id: string } };\n return data.session?.id ?? null;\n}\n\n/**\n * Build the WebSocket URL for a session.\n */\nexport function buildWsUrl(ttyUrl: string, sessionId: string, token: string): string {\n const wsBase = ttyUrl.replace(/^https:\\/\\//, 'wss://').replace(/^http:\\/\\//, 'ws://');\n return `${wsBase}/api/agent/session/${sessionId}/ws?token=${encodeURIComponent(token)}`;\n}\n\n/**\n * Connect to an agent session, send a prompt (if provided), render events,\n * and optionally sync files.\n */\nasync function runAgentSession(opts: {\n sessionId: string;\n ttyUrl: string;\n token: string;\n prompt?: string;\n}): Promise<void> {\n const { sessionId, ttyUrl, token, prompt } = opts;\n const wsUrl = buildWsUrl(ttyUrl, sessionId, token);\n\n console.log(chalk.dim(` Session: ${sessionId}`));\n console.log(chalk.dim(` WebSocket: ${wsUrl.replace(/token=[^&]+/, 'token=***')}`));\n console.log('');\n\n // Set up file sync if we're in a git repo\n const gitRoot = findGitRoot();\n let fileSync: FileSync | null = null;\n\n const agentClient = new AgentClient({\n wsUrl,\n onEvent: (event) => {\n // Forward file_changed events to FileSync\n fileSync?.handleServerEvent(event);\n },\n onDone: (success) => {\n fileSync?.stop();\n process.exit(success ? 0 : 1);\n },\n onError: (message) => {\n console.error(chalk.red(`\\nAgent error: ${message}`));\n fileSync?.stop();\n process.exit(1);\n },\n });\n\n // Handle SIGINT \u2014 cancel the agent gracefully\n let sigintCount = 0;\n const sigintHandler = () => {\n sigintCount++;\n if (sigintCount === 1) {\n console.log(chalk.dim('\\nCancelling agent... (press Ctrl+C again to force quit)'));\n agentClient.cancel();\n } else {\n console.log(chalk.dim('\\nForce quitting...'));\n fileSync?.stop();\n agentClient.close();\n process.exit(130);\n }\n };\n process.on('SIGINT', sigintHandler);\n\n try {\n await agentClient.connect();\n console.log(chalk.green('Connected to agent session.'));\n\n // Set up file sync after connection\n if (gitRoot) {\n fileSync = new FileSync({\n repoRoot: gitRoot,\n send: (msg) => {\n agentClient.send(msg);\n },\n });\n fileSync.start();\n console.log(chalk.dim(` File sync: ${gitRoot}`));\n }\n\n // Send the initial prompt if provided\n if (prompt) {\n console.log(chalk.dim(` Prompt: ${prompt}\\n`));\n agentClient.prompt(prompt);\n }\n\n // Keep the process alive until done/error callbacks fire\n await new Promise(() => {\n // Resolved by onDone/onError calling process.exit()\n });\n } catch (error) {\n console.error(chalk.red(`Failed to connect: ${error instanceof Error ? error.message : String(error)}`));\n fileSync?.stop();\n process.exit(1);\n } finally {\n process.off('SIGINT', sigintHandler);\n }\n}\n\nexport function registerAgentCommand(program: Command): void {\n const agent = program\n .command('agent')\n .description('Manage AI agent service accounts and sessions');\n\n agent\n .command('create')\n .description('Create a new agent service account')\n .requiredOption('--name <name>', 'Agent name (lowercase, hyphens, e.g. \"claude-ci\")')\n .option('--description <desc>', 'Purpose description')\n .option('--webhook <url>', 'Webhook URL for completion notifications')\n .action(async (options: { name: string; description?: string; webhook?: string }) => {\n try {\n const client = await requireAuth();\n const result = await client.createAgent(options.name, {\n description: options.description,\n webhookUrl: options.webhook,\n });\n\n console.log(chalk.green('\\nAgent created successfully!\\n'));\n console.log(` ${chalk.bold('Name:')} ${result.agent.profile.displayName}`);\n console.log(` ${chalk.bold('ID:')} ${result.agent.id}`);\n console.log(` ${chalk.bold('Login:')} ${result.agent.githubLogin}`);\n console.log(` ${chalk.bold('API Key:')} ${result.apiKey.token}`);\n if (result.agent.profile.webhookUrl) {\n console.log(` ${chalk.bold('Webhook:')} ${result.agent.profile.webhookUrl}`);\n }\n console.log();\n console.log(chalk.yellow('Save the API key \u2014 it will not be shown again.'));\n console.log(chalk.gray('\\nUsage:'));\n console.log(chalk.gray(` SPACECODE_TOKEN=${result.apiKey.token} spacecode -p \"your prompt\" -R owner/repo`));\n } catch (error) {\n console.error(chalk.red(`Failed to create agent: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n agent\n .command('list')\n .description('List your agent service accounts')\n .action(async () => {\n try {\n const client = await requireAuth();\n const { agents } = await client.listAgents();\n\n if (agents.length === 0) {\n console.log(chalk.gray('No agents. Create one with: spacecode agent create --name <name>'));\n return;\n }\n\n console.log(chalk.bold(`\\n Agents (${agents.length}):\\n`));\n\n for (const a of agents) {\n const created = new Date(a.createdAt).toLocaleDateString();\n console.log(` ${chalk.cyan(a.profile.displayName)} ${chalk.gray(`(${a.id})`)}`);\n console.log(` Login: ${a.githubLogin} Created: ${created}`);\n if (a.profile.description) console.log(` ${chalk.gray(a.profile.description)}`);\n if (a.profile.webhookUrl) console.log(` Webhook: ${a.profile.webhookUrl}`);\n console.log();\n }\n } catch (error) {\n console.error(chalk.red(`Failed to list agents: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n agent\n .command('update <id>')\n .description('Update an agent service account')\n .option('--description <desc>', 'Update description')\n .option('--webhook <url>', 'Update webhook URL')\n .option('--max-sandboxes <n>', 'Max concurrent sandboxes', parseInt)\n .action(async (id: string, options: { description?: string; webhook?: string; maxSandboxes?: number }) => {\n try {\n if (options.maxSandboxes !== undefined && (isNaN(options.maxSandboxes) || options.maxSandboxes < 1)) {\n console.error(chalk.red('--max-sandboxes must be a positive number'));\n process.exit(1);\n }\n const client = await requireAuth();\n const { agent: updated } = await client.updateAgent(id, {\n description: options.description,\n webhookUrl: options.webhook,\n maxConcurrentSandboxes: options.maxSandboxes,\n });\n console.log(chalk.green(`Agent ${updated.profile.displayName} updated.`));\n } catch (error) {\n console.error(chalk.red(`Failed to update agent: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n agent\n .command('delete <id>')\n .description('Delete an agent and revoke all its API keys')\n .action(async (id: string) => {\n try {\n const client = await requireAuth();\n await client.deleteAgent(id);\n console.log(chalk.green(`Agent ${id} deleted. All API keys revoked.`));\n } catch (error) {\n console.error(chalk.red(`Failed to delete agent: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n agent\n .command('sessions')\n .description('List recent agent sessions')\n .option('-a, --all', 'Show all sessions (default: 20 most recent)')\n .option('--limit <n>', 'Number of sessions to show', '20')\n .action(async (options: { all?: boolean; limit: string }) => {\n try {\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n const limit = options.all ? 100 : parseInt(options.limit, 10);\n const sessions = await listSessions(ttyUrl, token, limit);\n\n if (sessions.length === 0) {\n console.log(chalk.gray('No sessions found. Start one with: spacecode owner/repo'));\n return;\n }\n\n console.log(chalk.bold(`\\n Agent Sessions (${sessions.length}):\\n`));\n\n for (const s of sessions) {\n const age = formatAge(s.updated_at);\n const statusColor = s.status === 'active' ? chalk.green : s.status === 'idle' ? chalk.yellow : chalk.gray;\n const label = s.name ? chalk.cyan(s.name) : chalk.gray(s.id.slice(0, 8));\n const repo = s.repo_id ? chalk.dim(` ${s.repo_id}`) : '';\n const msgCount = s.message_count ? chalk.dim(` ${s.message_count} msgs`) : '';\n console.log(` ${label} ${statusColor(s.status)}${repo}${msgCount} ${chalk.dim(age)}`);\n if (s.name) console.log(` ${chalk.dim(`ID: ${s.id}`)}`);\n if (s.last_prompt) {\n // Parse JSON-encoded content and truncate\n let preview = '';\n try {\n const parsed = JSON.parse(s.last_prompt);\n preview = typeof parsed === 'string' ? parsed : String(parsed);\n } catch {\n preview = String(s.last_prompt);\n }\n if (preview.length > 60) preview = preview.slice(0, 57) + '...';\n console.log(` ${chalk.dim(`> ${preview}`)}`);\n }\n }\n\n console.log('');\n console.log(chalk.dim(' Resume with: spacecode --session <id>'));\n console.log('');\n } catch (error) {\n console.error(chalk.red(`Failed: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n // \u2500\u2500 Agent Session subcommands \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n const session = agent\n .command('session <prompt>')\n .description('Create a new agent session, connect via WebSocket, and send a prompt')\n .option('-R, --repo <repo>', 'GitHub repo to work on (owner/repo)')\n .action(async (prompt: string, options: { repo?: string }) => {\n try {\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n\n console.log('');\n console.log(chalk.bold('Creating agent session...'));\n if (options.repo) {\n console.log(chalk.dim(` Repo: ${options.repo}`));\n }\n\n const { sessionId } = await createSession(ttyUrl, token, options.repo);\n\n await runAgentSession({ sessionId, ttyUrl, token, prompt });\n } catch (error) {\n console.error(chalk.red(`Failed: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n session\n .command('attach <id>')\n .description('Attach to an existing agent session via WebSocket')\n .action(async (id: string) => {\n try {\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n\n console.log('');\n console.log(chalk.bold(`Attaching to agent session ${chalk.cyan(id)}...`));\n\n await runAgentSession({ sessionId: id, ttyUrl, token });\n } catch (error) {\n console.error(chalk.red(`Failed: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n}\n", "/**\n * Interactive REPL session \u2014 the core `spacecode` experience.\n *\n * Connects to a cloud agent via WebSocket and provides a readline-based\n * prompt loop with persistent history, slash command autocomplete,\n * tool call rendering, and init animation.\n *\n * Usage:\n * spacecode owner/repo \u2192 startInteractiveSession({ repo: 'owner/repo' })\n * spacecode \u2192 (via hub) startInteractiveSession({})\n */\n\nimport * as readline from 'node:readline';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport chalk from 'chalk';\nimport { AgentClient } from './client.js';\nimport { FileSync } from './file-sync.js';\nimport { renderEvent, resetTurnState, trackTokens } from './renderer.js';\nimport { PersistentHistory } from './history.js';\nimport { completeSlashCommand, parseSlashCommand } from './slash-commands.js';\nimport { showInitAnimation, showResumeAnimation } from './init.js';\nimport {\n getTtyUrl,\n getAuthToken,\n createSession,\n listSessions,\n buildWsUrl,\n findGitRoot,\n} from '../commands/agent.js';\n\n// \u2500\u2500 Exported helpers (tested independently) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Join backslash-continued lines into a single line. */\nexport function joinContinuationLines(input: string): string {\n return input.replace(/\\s*\\\\\\n\\s*/g, ' ');\n}\n\n/** Build the rich prompt string. */\nexport function buildPrompt(sessionName?: string): string {\n const name = sessionName ? chalk.dim(` ${sessionName}`) : '';\n return `${chalk.bold('spacecode')}${name} ${chalk.dim('>')} `;\n}\n\n// \u2500\u2500 Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface InteractiveSessionOptions {\n /** GitHub repo (owner/repo) to work on. */\n repo?: string;\n /** Existing session ID to attach to instead of creating a new one. */\n sessionId?: string;\n /** Human-readable session name for easy resume. */\n name?: string;\n}\n\n// \u2500\u2500 Main REPL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Start an interactive REPL session with a cloud agent.\n *\n * Creates (or attaches to) an agent session, connects via WebSocket,\n * sets up file sync if in a git repo, and enters a readline prompt loop.\n */\nexport async function startInteractiveSession(\n options: InteractiveSessionOptions,\n): Promise<void> {\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n\n // Create or resume session\n let sessionId: string;\n let sessionName = options.name;\n const isResume = !!options.sessionId;\n let resumeSummary: string | null = null;\n\n if (options.sessionId) {\n sessionId = options.sessionId;\n const result = await createSession(ttyUrl, token, options.repo, sessionId);\n resumeSummary = result.summary ?? null;\n } else {\n const result = await createSession(ttyUrl, token, options.repo, undefined, options.name);\n sessionId = result.sessionId;\n }\n\n const wsUrl = buildWsUrl(ttyUrl, sessionId, token);\n\n // Detect local git repo for file sync\n const gitRoot = findGitRoot();\n let fileSync: FileSync | null = null;\n\n // Track whether a prompt is currently running\n let promptRunning = false;\n\n // \u2500\u2500 Persistent history \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const historyPath = path.join(os.homedir(), '.spacecode', 'history');\n const history = new PersistentHistory(historyPath);\n const historyLines = history.load();\n\n // \u2500\u2500 Readline interface \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stderr,\n prompt: buildPrompt(sessionName),\n terminal: true,\n history: historyLines,\n completer: (line: string) => {\n if (line.startsWith('/')) {\n const matches = completeSlashCommand(line);\n return [matches, line];\n }\n return [[], line];\n },\n });\n\n // \u2500\u2500 Agent client \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const agentClient = new AgentClient({\n wsUrl,\n onEvent: (event) => {\n // Forward to file sync\n fileSync?.handleServerEvent(event);\n },\n onReady: () => {\n promptRunning = false;\n setImmediate(() => {\n process.stderr.write('\\n');\n rl.prompt();\n });\n },\n onDone: () => {\n // In REPL mode, onReady handles re-prompting.\n },\n onError: (message) => {\n promptRunning = false;\n process.stderr.write(chalk.red(`\\nAgent error: ${message}\\n`));\n setImmediate(() => rl.prompt());\n },\n });\n\n // \u2500\u2500 Ctrl+C handling \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n let sigintCount = 0;\n let sigintTimer: ReturnType<typeof setTimeout> | null = null;\n\n const resetSigint = () => {\n sigintCount = 0;\n if (sigintTimer) {\n clearTimeout(sigintTimer);\n sigintTimer = null;\n }\n };\n\n rl.on('SIGINT', () => {\n if (promptRunning) {\n sigintCount++;\n if (sigintCount === 1) {\n process.stderr.write(chalk.dim('\\n\u23F9 Cancelling...\\n'));\n agentClient.cancel();\n sigintTimer = setTimeout(resetSigint, 2000);\n } else {\n cleanup();\n process.exit(130);\n }\n } else {\n sigintCount++;\n if (sigintCount >= 2) {\n cleanup();\n process.exit(130);\n }\n process.stderr.write(chalk.dim('\\n(Press Ctrl+C again to exit, or type /quit)\\n'));\n sigintTimer = setTimeout(resetSigint, 2000);\n rl.prompt();\n }\n });\n\n // \u2500\u2500 Line handler \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n rl.on('line', async (line) => {\n let input = line.trim();\n resetSigint();\n\n // Empty input \u2192 re-prompt\n if (!input) {\n rl.prompt();\n return;\n }\n\n // Multi-line paste: join backslash-continued lines\n input = joinContinuationLines(input);\n\n // Slash commands\n if (input.startsWith('/')) {\n const [cmd, args] = parseSlashCommand(input);\n\n switch (cmd) {\n case '/quit':\n case '/exit':\n cleanup();\n process.exit(0);\n return;\n\n case '/cancel':\n if (promptRunning) {\n process.stderr.write(chalk.dim('Cancelling...\\n'));\n agentClient.cancel();\n } else {\n process.stderr.write(chalk.dim('Nothing to cancel.\\n'));\n }\n rl.prompt();\n return;\n\n case '/clear':\n process.stderr.write('\\x1B[2J\\x1B[3J\\x1B[H');\n rl.prompt();\n return;\n\n case '/name':\n if (args) {\n sessionName = args;\n rl.setPrompt(buildPrompt(sessionName));\n process.stderr.write(chalk.dim(` Session named \"${sessionName}\"\\n`));\n } else {\n process.stderr.write(chalk.dim(' Usage: /name <session-name>\\n'));\n }\n rl.prompt();\n return;\n\n case '/status':\n process.stderr.write(chalk.dim(` Session: ${sessionId}\\n`));\n if (sessionName) process.stderr.write(chalk.dim(` Name: ${sessionName}\\n`));\n if (options.repo) process.stderr.write(chalk.dim(` Repo: ${options.repo}\\n`));\n process.stderr.write(chalk.dim(` Running: ${promptRunning}\\n`));\n rl.prompt();\n return;\n\n case '/sessions': {\n try {\n const sessions = await listSessions(ttyUrl, token, 10);\n if (sessions.length === 0) {\n process.stderr.write(chalk.dim(' No recent sessions.\\n'));\n } else {\n process.stderr.write(chalk.dim('\\n Recent sessions:\\n\\n'));\n for (const s of sessions) {\n const name = s.name ? chalk.bold(s.name) : chalk.dim(s.id.slice(0, 8));\n const status = s.status === 'active' ? chalk.green('\u25CF') : chalk.dim('\u25CB');\n const age = formatAge(s.updated_at);\n process.stderr.write(` ${status} ${name} ${chalk.dim(age)}\\n`);\n }\n process.stderr.write('\\n');\n }\n } catch {\n process.stderr.write(chalk.dim(' Failed to fetch sessions.\\n'));\n }\n rl.prompt();\n return;\n }\n\n case '/history':\n try {\n const turns = await fetchHistory(ttyUrl, token, sessionId);\n if (turns.length === 0) {\n process.stderr.write(chalk.dim('No conversation history.\\n'));\n } else {\n process.stderr.write(chalk.dim(`\\n Conversation (${turns.length} turns):\\n\\n`));\n for (const t of turns) {\n const role = t.role === 'user' ? chalk.cyan('You') : chalk.green('Agent');\n let text = '';\n try {\n const parsed = JSON.parse(t.content);\n if (typeof parsed === 'string') {\n text = parsed;\n } else if (Array.isArray(parsed)) {\n text = parsed\n .filter((b: any) => b.type === 'text')\n .map((b: any) => b.text)\n .join('\\n');\n const toolCount = parsed.filter((b: any) => b.type === 'tool_use').length;\n if (toolCount > 0) text += chalk.dim(` [${toolCount} tool calls]`);\n }\n } catch {\n text = String(t.content);\n }\n if (text.length > 200) text = text.slice(0, 197) + '...';\n process.stderr.write(` ${role}: ${text}\\n`);\n }\n process.stderr.write('\\n');\n }\n } catch {\n process.stderr.write(chalk.dim('Failed to fetch history.\\n'));\n }\n rl.prompt();\n return;\n\n case '/compact':\n process.stderr.write(chalk.dim(' Compacting context...\\n'));\n // Send a compact request to the agent\n agentClient.send({ type: 'prompt', text: '/compact' });\n promptRunning = true;\n return;\n\n case '/new':\n process.stderr.write(chalk.dim(' Starting fresh session...\\n'));\n cleanup();\n await startInteractiveSession({ repo: options.repo });\n return;\n\n default:\n process.stderr.write(chalk.dim(`Unknown command: ${cmd}\\n`));\n process.stderr.write(\n chalk.dim('Commands: /quit, /history, /clear, /status, /compact, /new, /sessions, /name\\n'),\n );\n rl.prompt();\n return;\n }\n }\n\n // Send prompt to agent\n promptRunning = true;\n resetTurnState();\n history.append(input);\n agentClient.prompt(input);\n });\n\n // \u2500\u2500 Close handler (EOF / Ctrl+D) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n rl.on('close', () => {\n cleanup();\n process.exit(0);\n });\n\n // \u2500\u2500 Cleanup helper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n function cleanup(): void {\n fileSync?.stop();\n agentClient.close();\n rl.close();\n }\n\n // \u2500\u2500 Connect and start \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n try {\n await agentClient.connect();\n } catch (error) {\n process.stderr.write(\n chalk.red(\n `Failed to connect: ${error instanceof Error ? error.message : String(error)}\\n`,\n ),\n );\n cleanup();\n process.exit(1);\n }\n\n // Set up file sync after connection\n let fileCount = 0;\n if (gitRoot) {\n fileSync = new FileSync({\n repoRoot: gitRoot,\n send: (msg) => agentClient.send(msg),\n });\n fileCount = fileSync.syncInitial();\n fileSync.start();\n }\n\n // \u2500\u2500 Init animation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const ttyHost = new URL(wsUrl.replace('wss://', 'https://').replace('ws://', 'http://')).host;\n const version = '2.0.0'; // from package.json\n\n if (isResume) {\n // Fetch history count for resume banner\n let turnCount = 0;\n try {\n const turns = await fetchHistory(ttyUrl, token, sessionId);\n turnCount = turns.length;\n } catch {\n // Ignore \u2014 show 0 turns\n }\n await showResumeAnimation({\n sessionName: sessionName ?? sessionId.slice(0, 8),\n turnCount,\n });\n // EPIC-2 TICKET-2.2: show \"where we left off\" ahead of raw history, when\n // a prior extraction pass produced one. Sessions with none (new/short\n // sessions) fall back to the resume banner above unchanged.\n if (resumeSummary) {\n process.stderr.write(chalk.dim('Previously in this session:') + '\\n');\n process.stderr.write(chalk.dim(resumeSummary) + '\\n\\n');\n }\n } else {\n // Get username from auth\n let username = 'user';\n try {\n const authPath = path.join(os.homedir(), '.spacecode', 'auth.json');\n const authData = JSON.parse(await import('fs').then((fs) => fs.readFileSync(authPath, 'utf-8')));\n username = authData.user?.login ?? authData.user?.name ?? 'user';\n } catch {\n // Ignore \u2014 use default\n }\n\n await showInitAnimation({\n version,\n username,\n sessionName: sessionName ?? sessionId.slice(0, 8),\n ttyHost,\n fileCount,\n repo: options.repo,\n branch: await getCurrentBranch(gitRoot),\n });\n }\n\n rl.prompt();\n}\n\n// \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Fetch conversation history for a session from the server.\n */\nasync function fetchHistory(\n ttyUrl: string,\n token: string,\n sessionId: string,\n): Promise<Array<{ role: string; content: string }>> {\n const res = await fetch(`${ttyUrl}/api/agent/session/${sessionId}/history`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n if (!res.ok) return [];\n const data = (await res.json()) as { messages: Array<{ role: string; content: string }> };\n return data.messages ?? [];\n}\n\n/**\n * Get the current git branch name, or undefined.\n */\nasync function getCurrentBranch(gitRoot: string | null): Promise<string | undefined> {\n if (!gitRoot) return undefined;\n try {\n const { execFileSync } = await import('child_process');\n return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {\n cwd: gitRoot,\n encoding: 'utf-8',\n }).trim();\n } catch {\n return undefined;\n }\n}\n\n/**\n * Format a timestamp as relative time.\n */\nfunction formatAge(timestamp: number): string {\n const ms = Date.now() - timestamp;\n const seconds = Math.floor(ms / 1000);\n if (seconds < 60) return `${seconds}s ago`;\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return `${minutes}m ago`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n return `${days}d ago`;\n}\n", "/**\n * Interactive hub \u2014 the default `spacecode` experience.\n *\n * When no target is provided, shows active sessions + recent repos.\n * When a bare name is provided, searches sessions + repos and lets\n * the user choose (auto-selects if exactly one match).\n */\n\nimport chalk from 'chalk';\nimport * as readline from 'readline';\nimport { loadSessions, activeSessions } from './sessions.js';\nimport type { SessionRecord } from './sessions.js';\nimport { runOutput } from './utils/exec.js';\nimport { logWarning, addBreadcrumb } from './posthog.js';\nimport { DEFAULT_API_URL, SANDBOX_WORKER_URL } from '@spacecode/shared/remote';\nimport { resolveAuthToken } from './config.js';\n\n// \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Safe shell identifier \u2014 only allows chars that cannot break out of a shell argument. */\nconst SAFE_SHELL_ID = /^[a-zA-Z0-9._-]+$/;\n\n/**\n * Fetch the user's most recently updated GitHub repos via `gh`.\n * Returns `{ repos, failed }` so callers can distinguish \"no repos\" from \"fetch error\".\n */\nasync function fetchRecentRepos(limit = 6): Promise<{ repos: string[]; failed: boolean }> {\n const safeLimit = Math.max(1, Math.floor(limit));\n try {\n const json = await runOutput(\n `gh repo list --json nameWithOwner,updatedAt --limit ${safeLimit} --sort updated`,\n 5_000,\n );\n const repos = JSON.parse(json);\n if (!Array.isArray(repos)) {\n logWarning('fetchRecentRepos: gh returned non-array', {});\n return { repos: [], failed: true };\n }\n return { repos: (repos as { nameWithOwner: string }[]).map((r) => r.nameWithOwner), failed: false };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // Expected: gh not installed or not authenticated \u2014 don't log\n if (msg.includes('command not found') || msg.includes('not logged') || msg.includes('auth login')) {\n return { repos: [], failed: false };\n }\n logWarning('fetchRecentRepos failed', { error: msg });\n return { repos: [], failed: true };\n }\n}\n\n/**\n * Search the user's repos + org repos for a given name (case-insensitive).\n * Returns matching \"owner/repo\" strings.\n */\nasync function searchReposByName(name: string): Promise<string[]> {\n if (!SAFE_SHELL_ID.test(name)) return [];\n\n try {\n const userJson = await runOutput('gh api user', 5_000);\n const user = JSON.parse(userJson);\n const username: string = user.login;\n if (!username) return [];\n\n const orgsPromise = runOutput('gh api user/orgs --jq \".[].login\"', 5_000)\n .then((o) => o.trim().split('\\n').filter(Boolean))\n .catch((err) => {\n logWarning('searchReposByName: failed to fetch orgs', { error: err instanceof Error ? err.message : String(err) });\n return [] as string[];\n });\n\n const owners = [username, ...(await orgsPromise)];\n const matches: string[] = [];\n const lowerName = name.toLowerCase();\n\n await Promise.all(\n owners.map(async (owner) => {\n // Validate owner to prevent shell injection (values come from API responses)\n if (!SAFE_SHELL_ID.test(owner)) {\n logWarning('searchReposByName: skipping owner with unsafe name', { owner });\n return;\n }\n try {\n const json = await runOutput(\n `gh repo list ${owner} --json nameWithOwner --limit 100`,\n 5_000,\n );\n const repos = JSON.parse(json) as { nameWithOwner: string }[];\n for (const r of repos) {\n const repoName = r.nameWithOwner.split('/')[1];\n if (repoName?.toLowerCase() === lowerName) {\n matches.push(r.nameWithOwner);\n }\n }\n } catch (err) {\n logWarning('searchReposByName: failed to list repos for owner', {\n owner,\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }),\n );\n\n return matches;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (msg.includes('command not found') || msg.includes('not logged') || msg.includes('auth login')) {\n return [];\n }\n logWarning('searchReposByName failed', { error: msg });\n console.error(chalk.dim(` Warning: GitHub repo search failed (${msg})`));\n return [];\n }\n}\n\n/**\n * Fetch active sessions from the backend API (wire response field is still\n * named `sandboxes` \u2014 see packages/backend/src/handlers/sandboxes.ts, out of\n * scope for this rename pass).\n * Returns `{ sessions, failed }` so callers can distinguish \"no sessions\" from \"fetch error\".\n */\nasync function fetchRemoteSessions(): Promise<{ sessions: SessionRecord[]; failed: boolean }> {\n try {\n const token = await resolveAuthToken();\n const res = await fetch(`${DEFAULT_API_URL}/api/sandboxes`, {\n headers: { Authorization: `Bearer ${token}` },\n signal: AbortSignal.timeout(5_000),\n });\n if (!res.ok) {\n logWarning('fetchRemoteSessions: backend error', { status: res.status });\n return { sessions: [], failed: true };\n }\n const data = await res.json();\n if (!data || !Array.isArray(data.sandboxes)) {\n logWarning('fetchRemoteSessions: unexpected response shape', {});\n return { sessions: [], failed: true };\n }\n const sandboxes = data.sandboxes as {\n id: string;\n name: string | null;\n repo: string | null;\n status: string;\n created_at: string;\n idle_timeout_minutes: number;\n }[];\n return {\n sessions: sandboxes\n .filter((s) => s.status === 'running')\n .map((s) => ({\n id: s.id,\n name: s.name ?? undefined,\n repo: s.repo ?? undefined,\n status: 'running' as const,\n createdAt: s.created_at,\n idleTimeoutMinutes: s.idle_timeout_minutes,\n })),\n failed: false,\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // Not authenticated is expected (user hasn't logged in yet)\n if (msg.includes('Not authenticated')) {\n return { sessions: [], failed: false };\n }\n logWarning('fetchRemoteSessions failed', { error: msg });\n return { sessions: [], failed: true };\n }\n}\n\n/**\n * Merge local and remote sessions, deduplicating by ID.\n * Remote sessions fill in gaps (e.g. launched from another device or the PWA).\n */\nfunction mergeSessions(local: SessionRecord[], remote: SessionRecord[]): SessionRecord[] {\n const seen = new Set(local.map((s) => s.id));\n const merged = [...local];\n for (const r of remote) {\n if (!seen.has(r.id)) {\n merged.push(r);\n seen.add(r.id);\n }\n }\n return merged;\n}\n\ninterface Choice<T> {\n label: string;\n value: T;\n}\n\n/**\n * Display a numbered list and let the user pick. Retries on invalid input.\n */\nasync function promptChoice<T>(choices: Choice<T>[]): Promise<T> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve, reject) => {\n let settled = false;\n\n const ask = () => {\n rl.question(chalk.bold(`\\nChoose [1-${choices.length}]: `), (answer) => {\n const num = parseInt(answer.trim(), 10);\n if (isNaN(num) || num < 1 || num > choices.length) {\n console.error(chalk.red(`Invalid choice \"${answer.trim()}\". Enter a number between 1 and ${choices.length}.`));\n ask();\n } else {\n settled = true;\n rl.close();\n resolve(choices[num - 1].value);\n }\n });\n };\n\n rl.on('close', () => {\n if (!settled) reject(new Error('Cancelled.'));\n });\n\n ask();\n });\n}\n\n/**\n * Prompt for free-form text input.\n */\nasync function promptInput(question: string): Promise<string> {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve, reject) => {\n let answered = false;\n rl.question(question, (answer) => {\n answered = true;\n rl.close();\n resolve(answer.trim());\n });\n rl.on('close', () => {\n if (!answered) reject(new Error('Cancelled.'));\n });\n });\n}\n\n/**\n * Format a relative time string from an ISO date.\n */\nfunction relativeTime(iso: string): string {\n const date = new Date(iso);\n if (isNaN(date.getTime())) return '';\n const diff = Date.now() - date.getTime();\n const mins = Math.floor(diff / 60_000);\n if (mins < 1) return 'just now';\n if (mins < 60) return `${mins}m`;\n const hrs = Math.floor(mins / 60);\n if (hrs < 24) return `${hrs}h`;\n const days = Math.floor(hrs / 24);\n return `${days}d`;\n}\n\n/**\n * Extract short repo name from a URL or owner/repo string.\n */\nfunction shortRepo(repo?: string): string {\n if (!repo) return '';\n return repo\n .replace(/^https?:\\/\\//, '')\n .replace(/^github\\.com\\//, '')\n .replace(/\\.git$/, '');\n}\n\n// \u2500\u2500 Action types for menu choices \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ninterface AgentSessionRecord {\n id: string;\n name: string | null;\n repo_id: string | null;\n status: string;\n message_count?: number;\n last_prompt?: string;\n updated_at: number;\n}\n\n/**\n * Fetch recent agent sessions from the sandbox worker.\n */\nasync function fetchAgentSessions(limit = 5): Promise<{ sessions: AgentSessionRecord[]; failed: boolean }> {\n try {\n const token = await resolveAuthToken();\n const ttyUrl = process.env.SANDBOX_WORKER_URL ?? SANDBOX_WORKER_URL;\n const res = await fetch(`${ttyUrl}/api/agent/sessions?limit=${limit}`, {\n headers: { Authorization: `Bearer ${token}` },\n signal: AbortSignal.timeout(5_000),\n });\n if (!res.ok) return { sessions: [], failed: true };\n const data = (await res.json()) as { sessions: AgentSessionRecord[] };\n return { sessions: data.sessions ?? [], failed: false };\n } catch {\n return { sessions: [], failed: false };\n }\n}\n\ntype HubAction =\n | { kind: 'attach'; nameOrId: string; destroy?: boolean }\n | { kind: 'resume-agent'; sessionId: string }\n | { kind: 'launch-repo'; repo: string }\n | { kind: 'new-project' }\n | { kind: 'enter-repo' };\n\n// \u2500\u2500 Shared rendering helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction renderSessionChoices(\n sessions: SessionRecord[],\n choices: Choice<HubAction>[],\n startIdx: number,\n destroy?: boolean,\n): number {\n let idx = startIdx;\n console.log(chalk.dim(' Sessions:'));\n for (const s of sessions) {\n idx++;\n const name = s.name ?? s.id;\n const idPart = s.name ? chalk.dim(` (${s.id})`) : '';\n const time = chalk.dim(relativeTime(s.createdAt));\n const repo = chalk.dim(shortRepo(s.repo));\n console.log(` ${chalk.cyan(String(idx))} ${name}${idPart} ${time} ${repo}`);\n choices.push({\n label: name,\n value: { kind: 'attach', nameOrId: s.name ?? s.id, destroy },\n });\n }\n console.log('');\n return idx;\n}\n\nfunction renderAgentSessionChoices(\n sessions: AgentSessionRecord[],\n choices: Choice<HubAction>[],\n startIdx: number,\n): number {\n let idx = startIdx;\n console.log(chalk.dim(' Agent sessions:'));\n for (const s of sessions) {\n idx++;\n const statusColor = s.status === 'active' ? chalk.green : s.status === 'idle' ? chalk.yellow : chalk.gray;\n const label = s.name ? chalk.cyan(s.name) : chalk.gray(s.id.slice(0, 8));\n const repo = s.repo_id ? chalk.dim(` ${s.repo_id}`) : '';\n const msgs = s.message_count ? chalk.dim(` ${s.message_count} msgs`) : '';\n const age = relativeTime(new Date(s.updated_at).toISOString());\n console.log(` ${chalk.cyan(String(idx))} ${label} ${statusColor(s.status)}${repo}${msgs} ${chalk.dim(age)}`);\n if (s.last_prompt) {\n let preview = '';\n try {\n const parsed = JSON.parse(s.last_prompt);\n preview = typeof parsed === 'string' ? parsed : String(parsed);\n } catch {\n preview = String(s.last_prompt);\n }\n if (preview.length > 50) preview = preview.slice(0, 47) + '...';\n console.log(` ${chalk.dim(`> ${preview}`)}`);\n }\n choices.push({ label: s.name ?? s.id, value: { kind: 'resume-agent', sessionId: s.id } });\n }\n console.log('');\n return idx;\n}\n\nfunction renderRepoChoices(\n repos: string[],\n choices: Choice<HubAction>[],\n startIdx: number,\n label = 'Recent repos',\n): number {\n let idx = startIdx;\n console.log(chalk.dim(` ${label}:`));\n for (const repo of repos) {\n idx++;\n console.log(` ${chalk.cyan(String(idx))} ${repo}`);\n choices.push({\n label: repo,\n value: { kind: 'launch-repo', repo },\n });\n }\n console.log('');\n return idx;\n}\n\n// \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Interactive hub \u2014 shown when the user runs `spacecode` with no arguments.\n * Displays active sessions, recent repos, and new-project options.\n */\nexport async function interactiveHub(options: Record<string, any>): Promise<void> {\n addBreadcrumb('interactive-hub', 'cli', 'info');\n\n // Load local sessions, remote sessions, agent sessions, and recent repos in parallel\n const [allSessions, remoteResult, agentResult, repoResult] = await Promise.all([\n loadSessions(),\n fetchRemoteSessions(),\n fetchAgentSessions(),\n fetchRecentRepos(),\n ]);\n\n const active = activeSessions(mergeSessions(allSessions, remoteResult.sessions)).sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),\n );\n\n // If nothing to show, fall through to original launch flow\n if (active.length === 0 && agentResult.sessions.length === 0 && repoResult.repos.length === 0) {\n if (repoResult.failed) {\n console.log(chalk.dim(' (Could not fetch recent repos. Is `gh` installed and authenticated?)'));\n }\n if (remoteResult.failed) {\n console.log(chalk.dim(' (Could not fetch remote sessions. Check your connection or run `spacecode login`.)'));\n }\n const { launchWithOptions } = await import('./index.js');\n return launchWithOptions(options);\n }\n\n console.log(chalk.bold('\\nspacecode\\n'));\n\n const choices: Choice<HubAction>[] = [];\n let idx = 0;\n\n if (agentResult.sessions.length > 0) {\n idx = renderAgentSessionChoices(agentResult.sessions, choices, idx);\n }\n\n if (active.length > 0) {\n idx = renderSessionChoices(active, choices, idx, options.destroy);\n }\n\n if (repoResult.repos.length > 0) {\n idx = renderRepoChoices(repoResult.repos, choices, idx);\n }\n\n // Fixed options\n idx++;\n console.log(` ${chalk.cyan(String(idx))} ${chalk.green('New project')}`);\n choices.push({ label: 'New project', value: { kind: 'new-project' } });\n\n idx++;\n console.log(` ${chalk.cyan(String(idx))} ${chalk.green('Enter repo URL')}`);\n choices.push({ label: 'Enter repo URL', value: { kind: 'enter-repo' } });\n\n try {\n const action = await promptChoice(choices);\n await executeAction(action, options);\n } catch (err) {\n if (err instanceof Error && err.message === 'Cancelled.') {\n process.exit(130);\n }\n const msg = err instanceof Error ? err.message : String(err);\n logWarning('interactive action failed', { error: msg });\n console.error(chalk.red(`Error: ${msg}`));\n process.exit(1);\n }\n}\n\n/**\n * Resolve a bare-name target (e.g. `spacecode my-project`).\n * Searches sessions and repos, auto-selects if exactly one match.\n */\nexport async function resolveTarget(target: string, options: Record<string, any>): Promise<void> {\n addBreadcrumb('resolve-target', 'cli', 'info');\n\n // Search sessions (local + remote) and repos in parallel\n const [allSessions, remoteResult, matchingRepos] = await Promise.all([\n loadSessions(),\n fetchRemoteSessions(),\n searchReposByName(target),\n ]);\n\n const active = activeSessions(mergeSessions(allSessions, remoteResult.sessions));\n const lowerTarget = target.toLowerCase();\n\n // Exact matches first, then substring matches\n const exactSessions = active.filter(\n (s) =>\n s.name?.toLowerCase() === lowerTarget ||\n s.id.toLowerCase() === lowerTarget,\n );\n const fuzzySessions = exactSessions.length > 0\n ? []\n : active.filter((s) => {\n const name = s.name?.toLowerCase();\n const id = s.id.toLowerCase();\n return (\n (name !== undefined && name.includes(lowerTarget) && name !== lowerTarget) ||\n (id.startsWith(lowerTarget) && id !== lowerTarget)\n );\n });\n const matchingSessions = [...exactSessions, ...fuzzySessions];\n\n const totalMatches = matchingSessions.length + matchingRepos.length;\n\n // \u2500\u2500 Zero matches \u2192 error \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n if (totalMatches === 0) {\n console.error(chalk.red(`\\nNo sessions or repos matching \"${target}\".`));\n if (remoteResult.failed) {\n console.log(chalk.dim(' (Remote session lookup failed. The session may exist but could not be reached.)'));\n }\n console.log(chalk.dim('Run `spacecode launch --name <name>` to start a new named session.'));\n console.log(chalk.dim('Run `spacecode launch -R owner/repo` to launch with a specific repo.'));\n process.exit(1);\n }\n\n // \u2500\u2500 Exactly one match \u2192 auto-select \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n if (totalMatches === 1) {\n const isFuzzy = exactSessions.length === 0;\n if (matchingSessions.length === 1) {\n const s = matchingSessions[0];\n const label = s.name ?? s.id;\n const prefix = isFuzzy ? 'Fuzzy match: attaching to' : 'Attaching to session';\n console.log(chalk.dim(`${prefix} \"${label}\"...`));\n const { attach } = await import('./commands/attach.js');\n return attach(label, { destroy: options.destroy });\n } else {\n const repo = matchingRepos[0];\n console.log(chalk.dim(`Launching with repo ${repo}...`));\n const { launchWithOptions } = await import('./index.js');\n return launchWithOptions({ ...options, repo });\n }\n }\n\n // \u2500\u2500 Multiple matches \u2192 display menu \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n console.log(chalk.bold(`\\nspacecode ${target}\\n`));\n\n const choices: Choice<HubAction>[] = [];\n let idx = 0;\n\n if (matchingSessions.length > 0) {\n idx = renderSessionChoices(matchingSessions, choices, idx, options.destroy);\n }\n\n if (matchingRepos.length > 0) {\n idx = renderRepoChoices(matchingRepos, choices, idx, 'Repos');\n }\n\n try {\n const action = await promptChoice(choices);\n await executeAction(action, options);\n } catch (err) {\n if (err instanceof Error && err.message === 'Cancelled.') {\n process.exit(130);\n }\n const msg = err instanceof Error ? err.message : String(err);\n logWarning('interactive action failed', { error: msg });\n console.error(chalk.red(`Error: ${msg}`));\n process.exit(1);\n }\n}\n\n// \u2500\u2500 Execute a chosen action \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nasync function executeAction(action: HubAction, _options: Record<string, any>): Promise<void> {\n switch (action.kind) {\n case 'attach': {\n const { startInteractiveSession } = await import('./agent/interactive.js');\n return startInteractiveSession({ sessionId: action.nameOrId });\n }\n case 'resume-agent': {\n const { startInteractiveSession } = await import('./agent/interactive.js');\n return startInteractiveSession({ sessionId: action.sessionId });\n }\n case 'launch-repo': {\n const { startInteractiveSession } = await import('./agent/interactive.js');\n return startInteractiveSession({ repo: action.repo });\n }\n case 'new-project': {\n const { startInteractiveSession } = await import('./agent/interactive.js');\n return startInteractiveSession({});\n }\n case 'enter-repo': {\n const url = await promptInput(chalk.bold(' Repo URL or owner/repo: '));\n if (!url) {\n console.error(chalk.red('No repo provided.'));\n process.exit(1);\n }\n const { startInteractiveSession } = await import('./agent/interactive.js');\n return startInteractiveSession({ repo: url });\n }\n default: {\n const _exhaustive: never = action;\n throw new Error(`Unhandled action kind: ${(_exhaustive as HubAction).kind}`);\n }\n }\n}\n", "/**\n * Personal access token management: create, list, revoke.\n *\n * PATs allow authenticating `spacecode` in CI/CD pipelines\n * without going through the interactive OAuth flow.\n *\n * Usage:\n * spacecode token create --name \"github-actions\"\n * spacecode token list\n * spacecode token revoke <id>\n * SPACECODE_TOKEN=sct_abc123 spacecode -p \"fix tests\" -R owner/repo\n */\n\nimport type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { requireAuth } from './auth.js';\n\nexport function registerTokenCommand(program: Command): void {\n const token = program\n .command('token')\n .description('Manage personal access tokens for CI/scripting');\n\n token\n .command('create')\n .description('Create a new personal access token')\n .requiredOption('--name <name>', 'A label for this token (e.g. \"github-actions\")')\n .action(async (options: { name: string }) => {\n try {\n const client = await requireAuth();\n const result = await client.createApiToken(options.name);\n\n console.log(chalk.green('\\nToken created successfully!\\n'));\n console.log(` ${chalk.bold('Token:')} ${result.token}`);\n console.log(` ${chalk.bold('ID:')} ${result.id}`);\n console.log(` ${chalk.bold('Prefix:')} ${result.prefix}`);\n console.log();\n console.log(chalk.yellow('Save this token \u2014 it will not be shown again.'));\n console.log(chalk.gray('\\nUsage in CI:'));\n console.log(chalk.gray(` SPACECODE_TOKEN=${result.token} spacecode -p \"your prompt\" -R owner/repo`));\n } catch (error) {\n console.error(chalk.red(`Failed to create token: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n token\n .command('list')\n .description('List active personal access tokens')\n .action(async () => {\n try {\n const client = await requireAuth();\n const { tokens } = await client.listApiTokens();\n\n if (tokens.length === 0) {\n console.log(chalk.gray('No active tokens. Create one with: spacecode token create --name <name>'));\n return;\n }\n\n console.log(chalk.bold(`\\n Active tokens (${tokens.length}):\\n`));\n\n // Table header\n const idW = 36;\n const nameW = 20;\n const prefixW = 14;\n const createdW = 20;\n const usedW = 20;\n\n console.log(\n ` ${chalk.gray('ID'.padEnd(idW))} ${chalk.gray('Name'.padEnd(nameW))} ${chalk.gray('Prefix'.padEnd(prefixW))} ${chalk.gray('Created'.padEnd(createdW))} ${chalk.gray('Last Used'.padEnd(usedW))}`,\n );\n console.log(chalk.gray(` ${'\u2500'.repeat(idW + nameW + prefixW + createdW + usedW + 8)}`));\n\n for (const t of tokens) {\n const created = new Date(t.createdAt).toLocaleDateString();\n const lastUsed = t.lastUsedAt ? new Date(t.lastUsedAt).toLocaleDateString() : 'Never';\n const name = t.name.length > nameW ? t.name.slice(0, nameW - 1) + '\u2026' : t.name;\n\n console.log(\n ` ${t.id.padEnd(idW)} ${name.padEnd(nameW)} ${chalk.cyan(t.prefix.padEnd(prefixW))} ${chalk.gray(created.padEnd(createdW))} ${chalk.gray(lastUsed.padEnd(usedW))}`,\n );\n }\n console.log();\n } catch (error) {\n console.error(chalk.red(`Failed to list tokens: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n token\n .command('revoke <id>')\n .description('Revoke a personal access token')\n .action(async (id: string) => {\n try {\n const client = await requireAuth();\n await client.revokeApiToken(id);\n console.log(chalk.green(`Token ${id} revoked.`));\n } catch (error) {\n console.error(chalk.red(`Failed to revoke token: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n}\n", "export const isUpKey = (key, keybindings = []) => \n// The up key\nkey.name === 'up' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'k') ||\n // Emacs keybinding: Ctrl+P means \"previous\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'p');\nexport const isDownKey = (key, keybindings = []) => \n// The down key\nkey.name === 'down' ||\n // Vim keybinding: hjkl keys map to left/down/up/right\n (keybindings.includes('vim') && key.name === 'j') ||\n // Emacs keybinding: Ctrl+N means \"next\" in Emacs navigation conventions\n (keybindings.includes('emacs') && key.ctrl && key.name === 'n');\nexport const isSpaceKey = (key) => key.name === 'space';\nexport const isBackspaceKey = (key) => key.name === 'backspace';\nexport const isTabKey = (key) => key.name === 'tab';\nexport const isNumberKey = (key) => '1234567890'.includes(key.name);\nexport const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';\n", "export class AbortPromptError extends Error {\n name = 'AbortPromptError';\n message = 'Prompt was aborted';\n constructor(options) {\n super();\n this.cause = options?.cause;\n }\n}\nexport class CancelPromptError extends Error {\n name = 'CancelPromptError';\n message = 'Prompt was canceled';\n}\nexport class ExitPromptError extends Error {\n name = 'ExitPromptError';\n}\nexport class HookError extends Error {\n name = 'HookError';\n}\nexport class ValidationError extends Error {\n name = 'ValidationError';\n}\n", "/* eslint @typescript-eslint/no-explicit-any: [\"off\"] */\nimport { AsyncLocalStorage, AsyncResource } from 'node:async_hooks';\nimport { HookError, ValidationError } from \"./errors.js\";\nconst hookStorage = new AsyncLocalStorage();\nfunction createStore(rl) {\n const store = {\n rl,\n hooks: [],\n hooksCleanup: [],\n hooksEffect: [],\n index: 0,\n handleChange() { },\n };\n return store;\n}\n// Run callback in with the hook engine setup.\nexport function withHooks(rl, cb) {\n const store = createStore(rl);\n return hookStorage.run(store, () => {\n function cycle(render) {\n store.handleChange = () => {\n store.index = 0;\n render();\n };\n store.handleChange();\n }\n return cb(cycle);\n });\n}\n// Safe getStore utility that'll return the store or throw if undefined.\nfunction getStore() {\n const store = hookStorage.getStore();\n if (!store) {\n throw new HookError('[Inquirer] Hook functions can only be called from within a prompt');\n }\n return store;\n}\nexport function readline() {\n return getStore().rl;\n}\n// Merge state updates happening within the callback function to avoid multiple renders.\nexport function withUpdates(fn) {\n const wrapped = (...args) => {\n const store = getStore();\n let shouldUpdate = false;\n const oldHandleChange = store.handleChange;\n store.handleChange = () => {\n shouldUpdate = true;\n };\n const returnValue = fn(...args);\n if (shouldUpdate) {\n oldHandleChange();\n }\n store.handleChange = oldHandleChange;\n return returnValue;\n };\n return AsyncResource.bind(wrapped);\n}\nexport function withPointer(cb) {\n const store = getStore();\n const { index } = store;\n const pointer = {\n get() {\n return store.hooks[index];\n },\n set(value) {\n store.hooks[index] = value;\n },\n initialized: index in store.hooks,\n };\n const returnValue = cb(pointer);\n store.index++;\n return returnValue;\n}\nexport function handleChange() {\n getStore().handleChange();\n}\nexport const effectScheduler = {\n queue(cb) {\n const store = getStore();\n const { index } = store;\n store.hooksEffect.push(() => {\n store.hooksCleanup[index]?.();\n const cleanFn = cb(readline());\n if (cleanFn != null && typeof cleanFn !== 'function') {\n throw new ValidationError('useEffect return value must be a cleanup function or nothing.');\n }\n store.hooksCleanup[index] = cleanFn;\n });\n },\n run() {\n const store = getStore();\n withUpdates(() => {\n store.hooksEffect.forEach((effect) => {\n effect();\n });\n // Warning: Clean the hooks before exiting the `withUpdates` block.\n // Failure to do so means an updates would hit the same effects again.\n store.hooksEffect.length = 0;\n })();\n },\n clearAll() {\n const store = getStore();\n store.hooksCleanup.forEach((cleanFn) => {\n cleanFn?.();\n });\n store.hooksEffect.length = 0;\n store.hooksCleanup.length = 0;\n },\n};\n", "import { AsyncResource } from 'node:async_hooks';\nimport { withPointer, handleChange } from \"./hook-engine.js\";\nexport function useState(defaultValue) {\n return withPointer((pointer) => {\n const setState = AsyncResource.bind(function setState(newValue) {\n // Noop if the value is still the same.\n if (pointer.get() !== newValue) {\n pointer.set(newValue);\n // Trigger re-render\n handleChange();\n }\n });\n if (pointer.initialized) {\n return [pointer.get(), setState];\n }\n const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n pointer.set(value);\n return [value, setState];\n });\n}\n", "import { withPointer, effectScheduler } from \"./hook-engine.js\";\nexport function useEffect(cb, depArray) {\n withPointer((pointer) => {\n const oldDeps = pointer.get();\n const hasChanged = !Array.isArray(oldDeps) || depArray.some((dep, i) => !Object.is(dep, oldDeps[i]));\n if (hasChanged) {\n effectScheduler.queue(cb);\n }\n pointer.set(depArray);\n });\n}\n", "const tty = require('node:tty'); // eslint-disable-line unicorn/prefer-module\n\n// eslint-disable-next-line no-warning-comments\n// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)\n// Lots of optionals here to support Deno.\nconst hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;\n\nconst format = (open, close) => {\n\tif (!hasColors) {\n\t\treturn input => input;\n\t}\n\n\tconst openCode = `\\u001B[${open}m`;\n\tconst closeCode = `\\u001B[${close}m`;\n\n\treturn input => {\n\t\tconst string = input + ''; // eslint-disable-line no-implicit-coercion -- This is faster.\n\t\tlet index = string.indexOf(closeCode);\n\n\t\tif (index === -1) {\n\t\t\t// Note: Intentionally not using string interpolation for performance reasons.\n\t\t\treturn openCode + string + closeCode;\n\t\t}\n\n\t\t// Handle nested colors.\n\n\t\t// We could have done this, but it's too slow (as of Node.js 22).\n\t\t// return openCode + string.replaceAll(closeCode, openCode) + closeCode;\n\n\t\tlet result = openCode;\n\t\tlet lastIndex = 0;\n\n\t\t// SGR 22 resets both bold (1) and dim (2). When we encounter a nested\n\t\t// close for styles that use 22, we need to re-open the outer style.\n\t\tconst reopenOnNestedClose = close === 22;\n\t\tconst replaceCode = (reopenOnNestedClose ? closeCode : '') + openCode;\n\n\t\twhile (index !== -1) {\n\t\t\tresult += string.slice(lastIndex, index) + replaceCode;\n\t\t\tlastIndex = index + closeCode.length;\n\t\t\tindex = string.indexOf(closeCode, lastIndex);\n\t\t}\n\n\t\tresult += string.slice(lastIndex) + closeCode;\n\n\t\treturn result;\n\t};\n};\n\nconst colors = {};\n\ncolors.reset = format(0, 0);\ncolors.bold = format(1, 22);\ncolors.dim = format(2, 22);\ncolors.italic = format(3, 23);\ncolors.underline = format(4, 24);\ncolors.overline = format(53, 55);\ncolors.inverse = format(7, 27);\ncolors.hidden = format(8, 28);\ncolors.strikethrough = format(9, 29);\n\ncolors.black = format(30, 39);\ncolors.red = format(31, 39);\ncolors.green = format(32, 39);\ncolors.yellow = format(33, 39);\ncolors.blue = format(34, 39);\ncolors.magenta = format(35, 39);\ncolors.cyan = format(36, 39);\ncolors.white = format(37, 39);\ncolors.gray = format(90, 39);\n\ncolors.bgBlack = format(40, 49);\ncolors.bgRed = format(41, 49);\ncolors.bgGreen = format(42, 49);\ncolors.bgYellow = format(43, 49);\ncolors.bgBlue = format(44, 49);\ncolors.bgMagenta = format(45, 49);\ncolors.bgCyan = format(46, 49);\ncolors.bgWhite = format(47, 49);\ncolors.bgGray = format(100, 49);\n\ncolors.redBright = format(91, 39);\ncolors.greenBright = format(92, 39);\ncolors.yellowBright = format(93, 39);\ncolors.blueBright = format(94, 39);\ncolors.magentaBright = format(95, 39);\ncolors.cyanBright = format(96, 39);\ncolors.whiteBright = format(97, 39);\n\ncolors.bgRedBright = format(101, 49);\ncolors.bgGreenBright = format(102, 49);\ncolors.bgYellowBright = format(103, 49);\ncolors.bgBlueBright = format(104, 49);\ncolors.bgMagentaBright = format(105, 49);\ncolors.bgCyanBright = format(106, 49);\ncolors.bgWhiteBright = format(107, 49);\n\nmodule.exports = colors; // eslint-disable-line unicorn/prefer-module\n", "// process.env dot-notation access prints:\n// Property 'TERM' comes from an index signature, so it must be accessed with ['TERM'].ts(4111)\n/* eslint dot-notation: [\"off\"] */\nimport process from 'node:process';\n// Ported from is-unicode-supported\nfunction isUnicodeSupported() {\n if (process.platform !== 'win32') {\n return process.env['TERM'] !== 'linux'; // Linux console (kernel)\n }\n return (Boolean(process.env['WT_SESSION']) || // Windows Terminal\n Boolean(process.env['TERMINUS_SUBLIME']) || // Terminus (<0.2.27)\n process.env['ConEmuTask'] === '{cmd::Cmder}' || // ConEmu and cmder\n process.env['TERM_PROGRAM'] === 'Terminus-Sublime' ||\n process.env['TERM_PROGRAM'] === 'vscode' ||\n process.env['TERM'] === 'xterm-256color' ||\n process.env['TERM'] === 'alacritty' ||\n process.env['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm');\n}\n// Ported from figures\nconst common = {\n circleQuestionMark: '(?)',\n questionMarkPrefix: '(?)',\n square: '\u2588',\n squareDarkShade: '\u2593',\n squareMediumShade: '\u2592',\n squareLightShade: '\u2591',\n squareTop: '\u2580',\n squareBottom: '\u2584',\n squareLeft: '\u258C',\n squareRight: '\u2590',\n squareCenter: '\u25A0',\n bullet: '\u25CF',\n dot: '\u2024',\n ellipsis: '\u2026',\n pointerSmall: '\u203A',\n triangleUp: '\u25B2',\n triangleUpSmall: '\u25B4',\n triangleDown: '\u25BC',\n triangleDownSmall: '\u25BE',\n triangleLeftSmall: '\u25C2',\n triangleRightSmall: '\u25B8',\n home: '\u2302',\n heart: '\u2665',\n musicNote: '\u266A',\n musicNoteBeamed: '\u266B',\n arrowUp: '\u2191',\n arrowDown: '\u2193',\n arrowLeft: '\u2190',\n arrowRight: '\u2192',\n arrowLeftRight: '\u2194',\n arrowUpDown: '\u2195',\n almostEqual: '\u2248',\n notEqual: '\u2260',\n lessOrEqual: '\u2264',\n greaterOrEqual: '\u2265',\n identical: '\u2261',\n infinity: '\u221E',\n subscriptZero: '\u2080',\n subscriptOne: '\u2081',\n subscriptTwo: '\u2082',\n subscriptThree: '\u2083',\n subscriptFour: '\u2084',\n subscriptFive: '\u2085',\n subscriptSix: '\u2086',\n subscriptSeven: '\u2087',\n subscriptEight: '\u2088',\n subscriptNine: '\u2089',\n oneHalf: '\u00BD',\n oneThird: '\u2153',\n oneQuarter: '\u00BC',\n oneFifth: '\u2155',\n oneSixth: '\u2159',\n oneEighth: '\u215B',\n twoThirds: '\u2154',\n twoFifths: '\u2156',\n threeQuarters: '\u00BE',\n threeFifths: '\u2157',\n threeEighths: '\u215C',\n fourFifths: '\u2158',\n fiveSixths: '\u215A',\n fiveEighths: '\u215D',\n sevenEighths: '\u215E',\n line: '\u2500',\n lineBold: '\u2501',\n lineDouble: '\u2550',\n lineDashed0: '\u2504',\n lineDashed1: '\u2505',\n lineDashed2: '\u2508',\n lineDashed3: '\u2509',\n lineDashed4: '\u254C',\n lineDashed5: '\u254D',\n lineDashed6: '\u2574',\n lineDashed7: '\u2576',\n lineDashed8: '\u2578',\n lineDashed9: '\u257A',\n lineDashed10: '\u257C',\n lineDashed11: '\u257E',\n lineDashed12: '\u2212',\n lineDashed13: '\u2013',\n lineDashed14: '\u2010',\n lineDashed15: '\u2043',\n lineVertical: '\u2502',\n lineVerticalBold: '\u2503',\n lineVerticalDouble: '\u2551',\n lineVerticalDashed0: '\u2506',\n lineVerticalDashed1: '\u2507',\n lineVerticalDashed2: '\u250A',\n lineVerticalDashed3: '\u250B',\n lineVerticalDashed4: '\u254E',\n lineVerticalDashed5: '\u254F',\n lineVerticalDashed6: '\u2575',\n lineVerticalDashed7: '\u2577',\n lineVerticalDashed8: '\u2579',\n lineVerticalDashed9: '\u257B',\n lineVerticalDashed10: '\u257D',\n lineVerticalDashed11: '\u257F',\n lineDownLeft: '\u2510',\n lineDownLeftArc: '\u256E',\n lineDownBoldLeftBold: '\u2513',\n lineDownBoldLeft: '\u2512',\n lineDownLeftBold: '\u2511',\n lineDownDoubleLeftDouble: '\u2557',\n lineDownDoubleLeft: '\u2556',\n lineDownLeftDouble: '\u2555',\n lineDownRight: '\u250C',\n lineDownRightArc: '\u256D',\n lineDownBoldRightBold: '\u250F',\n lineDownBoldRight: '\u250E',\n lineDownRightBold: '\u250D',\n lineDownDoubleRightDouble: '\u2554',\n lineDownDoubleRight: '\u2553',\n lineDownRightDouble: '\u2552',\n lineUpLeft: '\u2518',\n lineUpLeftArc: '\u256F',\n lineUpBoldLeftBold: '\u251B',\n lineUpBoldLeft: '\u251A',\n lineUpLeftBold: '\u2519',\n lineUpDoubleLeftDouble: '\u255D',\n lineUpDoubleLeft: '\u255C',\n lineUpLeftDouble: '\u255B',\n lineUpRight: '\u2514',\n lineUpRightArc: '\u2570',\n lineUpBoldRightBold: '\u2517',\n lineUpBoldRight: '\u2516',\n lineUpRightBold: '\u2515',\n lineUpDoubleRightDouble: '\u255A',\n lineUpDoubleRight: '\u2559',\n lineUpRightDouble: '\u2558',\n lineUpDownLeft: '\u2524',\n lineUpBoldDownBoldLeftBold: '\u252B',\n lineUpBoldDownBoldLeft: '\u2528',\n lineUpDownLeftBold: '\u2525',\n lineUpBoldDownLeftBold: '\u2529',\n lineUpDownBoldLeftBold: '\u252A',\n lineUpDownBoldLeft: '\u2527',\n lineUpBoldDownLeft: '\u2526',\n lineUpDoubleDownDoubleLeftDouble: '\u2563',\n lineUpDoubleDownDoubleLeft: '\u2562',\n lineUpDownLeftDouble: '\u2561',\n lineUpDownRight: '\u251C',\n lineUpBoldDownBoldRightBold: '\u2523',\n lineUpBoldDownBoldRight: '\u2520',\n lineUpDownRightBold: '\u251D',\n lineUpBoldDownRightBold: '\u2521',\n lineUpDownBoldRightBold: '\u2522',\n lineUpDownBoldRight: '\u251F',\n lineUpBoldDownRight: '\u251E',\n lineUpDoubleDownDoubleRightDouble: '\u2560',\n lineUpDoubleDownDoubleRight: '\u255F',\n lineUpDownRightDouble: '\u255E',\n lineDownLeftRight: '\u252C',\n lineDownBoldLeftBoldRightBold: '\u2533',\n lineDownLeftBoldRightBold: '\u252F',\n lineDownBoldLeftRight: '\u2530',\n lineDownBoldLeftBoldRight: '\u2531',\n lineDownBoldLeftRightBold: '\u2532',\n lineDownLeftRightBold: '\u252E',\n lineDownLeftBoldRight: '\u252D',\n lineDownDoubleLeftDoubleRightDouble: '\u2566',\n lineDownDoubleLeftRight: '\u2565',\n lineDownLeftDoubleRightDouble: '\u2564',\n lineUpLeftRight: '\u2534',\n lineUpBoldLeftBoldRightBold: '\u253B',\n lineUpLeftBoldRightBold: '\u2537',\n lineUpBoldLeftRight: '\u2538',\n lineUpBoldLeftBoldRight: '\u2539',\n lineUpBoldLeftRightBold: '\u253A',\n lineUpLeftRightBold: '\u2536',\n lineUpLeftBoldRight: '\u2535',\n lineUpDoubleLeftDoubleRightDouble: '\u2569',\n lineUpDoubleLeftRight: '\u2568',\n lineUpLeftDoubleRightDouble: '\u2567',\n lineUpDownLeftRight: '\u253C',\n lineUpBoldDownBoldLeftBoldRightBold: '\u254B',\n lineUpDownBoldLeftBoldRightBold: '\u2548',\n lineUpBoldDownLeftBoldRightBold: '\u2547',\n lineUpBoldDownBoldLeftRightBold: '\u254A',\n lineUpBoldDownBoldLeftBoldRight: '\u2549',\n lineUpBoldDownLeftRight: '\u2540',\n lineUpDownBoldLeftRight: '\u2541',\n lineUpDownLeftBoldRight: '\u253D',\n lineUpDownLeftRightBold: '\u253E',\n lineUpBoldDownBoldLeftRight: '\u2542',\n lineUpDownLeftBoldRightBold: '\u253F',\n lineUpBoldDownLeftBoldRight: '\u2543',\n lineUpBoldDownLeftRightBold: '\u2544',\n lineUpDownBoldLeftBoldRight: '\u2545',\n lineUpDownBoldLeftRightBold: '\u2546',\n lineUpDoubleDownDoubleLeftDoubleRightDouble: '\u256C',\n lineUpDoubleDownDoubleLeftRight: '\u256B',\n lineUpDownLeftDoubleRightDouble: '\u256A',\n lineCross: '\u2573',\n lineBackslash: '\u2572',\n lineSlash: '\u2571',\n};\nconst specialMainSymbols = {\n tick: '\u2714',\n info: '\u2139',\n warning: '\u26A0',\n cross: '\u2718',\n squareSmall: '\u25FB',\n squareSmallFilled: '\u25FC',\n circle: '\u25EF',\n circleFilled: '\u25C9',\n circleDotted: '\u25CC',\n circleDouble: '\u25CE',\n circleCircle: '\u24DE',\n circleCross: '\u24E7',\n circlePipe: '\u24BE',\n radioOn: '\u25C9',\n radioOff: '\u25EF',\n checkboxOn: '\u2612',\n checkboxOff: '\u2610',\n checkboxCircleOn: '\u24E7',\n checkboxCircleOff: '\u24BE',\n pointer: '\u276F',\n triangleUpOutline: '\u25B3',\n triangleLeft: '\u25C0',\n triangleRight: '\u25B6',\n lozenge: '\u25C6',\n lozengeOutline: '\u25C7',\n hamburger: '\u2630',\n smiley: '\u32E1',\n mustache: '\u0DF4',\n star: '\u2605',\n play: '\u25B6',\n nodejs: '\u2B22',\n oneSeventh: '\u2150',\n oneNinth: '\u2151',\n oneTenth: '\u2152',\n};\nconst specialFallbackSymbols = {\n tick: '\u221A',\n info: 'i',\n warning: '\u203C',\n cross: '\u00D7',\n squareSmall: '\u25A1',\n squareSmallFilled: '\u25A0',\n circle: '( )',\n circleFilled: '(*)',\n circleDotted: '( )',\n circleDouble: '( )',\n circleCircle: '(\u25CB)',\n circleCross: '(\u00D7)',\n circlePipe: '(\u2502)',\n radioOn: '(*)',\n radioOff: '( )',\n checkboxOn: '[\u00D7]',\n checkboxOff: '[ ]',\n checkboxCircleOn: '(\u00D7)',\n checkboxCircleOff: '( )',\n pointer: '>',\n triangleUpOutline: '\u2206',\n triangleLeft: '\u25C4',\n triangleRight: '\u25BA',\n lozenge: '\u2666',\n lozengeOutline: '\u25CA',\n hamburger: '\u2261',\n smiley: '\u263A',\n mustache: '\u250C\u2500\u2510',\n star: '\u2736',\n play: '\u25BA',\n nodejs: '\u2666',\n oneSeventh: '1/7',\n oneNinth: '1/9',\n oneTenth: '1/10',\n};\nexport const mainSymbols = {\n ...common,\n ...specialMainSymbols,\n};\nexport const fallbackSymbols = {\n ...common,\n ...specialFallbackSymbols,\n};\nconst shouldUseMain = isUnicodeSupported();\nconst figures = shouldUseMain\n ? mainSymbols\n : fallbackSymbols;\nexport default figures;\nconst replacements = Object.entries(specialMainSymbols);\n// On terminals which do not support Unicode symbols, substitute them to other symbols\nexport const replaceSymbols = (string, { useFallback = !shouldUseMain } = {}) => {\n if (useFallback) {\n for (const [key, mainSymbol] of replacements) {\n const fallbackSymbol = fallbackSymbols[key];\n if (!fallbackSymbol) {\n throw new Error(`Unable to find fallback for ${key}`);\n }\n string = string.replaceAll(mainSymbol, fallbackSymbol);\n }\n }\n return string;\n};\n", "import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nexport const defaultTheme = {\n prefix: {\n idle: colors.blue('?'),\n done: colors.green(figures.tick),\n },\n spinner: {\n interval: 80,\n frames: ['\u280B', '\u2819', '\u2839', '\u2838', '\u283C', '\u2834', '\u2826', '\u2827', '\u2807', '\u280F'].map((frame) => colors.yellow(frame)),\n },\n style: {\n answer: colors.cyan,\n message: colors.bold,\n error: (text) => colors.red(`> ${text}`),\n defaultAnswer: (text) => colors.dim(`(${text})`),\n help: colors.dim,\n highlight: colors.cyan,\n key: (text) => colors.cyan(colors.bold(`<${text}>`)),\n },\n};\n", "import { defaultTheme } from \"./theme.js\";\nfunction isPlainObject(value) {\n if (typeof value !== 'object' || value === null)\n return false;\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\nfunction deepMerge(...objects) {\n const output = {};\n for (const obj of objects) {\n for (const [key, value] of Object.entries(obj)) {\n const prevValue = output[key];\n output[key] =\n isPlainObject(prevValue) && isPlainObject(value)\n ? deepMerge(prevValue, value)\n : value;\n }\n }\n return output;\n}\nexport function makeTheme(...themes) {\n const themesToMerge = [\n defaultTheme,\n ...themes.filter((theme) => theme != null),\n ];\n return deepMerge(...themesToMerge);\n}\n", "import { useState } from \"./use-state.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { makeTheme } from \"./make-theme.js\";\nexport function usePrefix({ status = 'idle', theme, }) {\n const [showLoader, setShowLoader] = useState(false);\n const [tick, setTick] = useState(0);\n const { prefix, spinner } = makeTheme(theme);\n useEffect(() => {\n if (status === 'loading') {\n let tickInterval;\n let inc = -1;\n // Delay displaying spinner by 300ms, to avoid flickering\n const delayTimeout = setTimeout(() => {\n setShowLoader(true);\n tickInterval = setInterval(() => {\n inc = inc + 1;\n setTick(inc % spinner.frames.length);\n }, spinner.interval);\n }, 300);\n return () => {\n clearTimeout(delayTimeout);\n clearInterval(tickInterval);\n };\n }\n else {\n setShowLoader(false);\n }\n }, [status]);\n if (showLoader) {\n return spinner.frames[tick];\n }\n // There's a delay before we show the loader. So we want to ignore `loading` here, and pass idle instead.\n const iconName = status === 'loading' ? 'idle' : status;\n return typeof prefix === 'string' ? prefix : (prefix[iconName] ?? prefix['idle']);\n}\n", "import { withPointer } from \"./hook-engine.js\";\nexport function useMemo(fn, dependencies) {\n return withPointer((pointer) => {\n const prev = pointer.get();\n if (!prev ||\n prev.dependencies.length !== dependencies.length ||\n prev.dependencies.some((dep, i) => dep !== dependencies[i])) {\n const value = fn();\n pointer.set({ value, dependencies });\n return value;\n }\n return prev.value;\n });\n}\n", "import { useState } from \"./use-state.js\";\nexport function useRef(val) {\n return useState({ current: val })[0];\n}\n", "import { useRef } from \"./use-ref.js\";\nimport { useEffect } from \"./use-effect.js\";\nimport { withUpdates } from \"./hook-engine.js\";\nexport function useKeypress(userHandler) {\n const signal = useRef(userHandler);\n signal.current = userHandler;\n useEffect((rl) => {\n let ignore = false;\n const handler = withUpdates((_input, event) => {\n if (ignore)\n return;\n void signal.current(event, rl);\n });\n rl.input.on('keypress', handler);\n return () => {\n ignore = true;\n rl.input.removeListener('keypress', handler);\n };\n }, []);\n}\n", "'use strict';\n\nmodule.exports = cliWidth;\n\nfunction normalizeOpts(options) {\n const defaultOpts = {\n defaultWidth: 0,\n output: process.stdout,\n tty: require('tty'),\n };\n\n if (!options) {\n return defaultOpts;\n }\n\n Object.keys(defaultOpts).forEach(function (key) {\n if (!options[key]) {\n options[key] = defaultOpts[key];\n }\n });\n\n return options;\n}\n\nfunction cliWidth(options) {\n const opts = normalizeOpts(options);\n\n if (opts.output.getWindowSize) {\n return opts.output.getWindowSize()[0] || opts.defaultWidth;\n }\n\n if (opts.tty.getWindowSize) {\n return opts.tty.getWindowSize()[1] || opts.defaultWidth;\n }\n\n if (opts.output.columns) {\n return opts.output.columns;\n }\n\n if (process.env.CLI_WIDTH) {\n const width = parseInt(process.env.CLI_WIDTH, 10);\n\n if (!isNaN(width) && width !== 0) {\n return width;\n }\n }\n\n return opts.defaultWidth;\n}\n", "'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n", "'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n", "/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n", "\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n", "'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n", "'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n", "'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nconst stringWidth = require('string-width');\nconst stripAnsi = require('strip-ansi');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B'\n]);\n\nconst END_CODE = 39;\n\nconst wrapAnsi = code => `${ESCAPES.values().next().value}[${code}m`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = str => {\n\tconst words = str.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn str;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet pre = '';\n\tlet ret = '';\n\tlet escapeCode;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimLeft();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(stringVisibleTrimSpacesRight);\n\t}\n\n\tpre = rows.join('\\n');\n\n\tfor (const [index, character] of [...pre].entries()) {\n\t\tret += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst code = parseFloat(/\\d[^m]*/.exec(pre.slice(index, index + 4)));\n\t\t\tescapeCode = code === END_CODE ? null : code;\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (escapeCode && code) {\n\t\t\tif (pre[index + 1] === '\\n') {\n\t\t\t\tret += wrapAnsi(code);\n\t\t\t} else if (character === '\\n') {\n\t\t\t\tret += wrapAnsi(escapeCode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n// For each newline, invoke the method separately\nmodule.exports = (string, columns, options) => {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n};\n", "import cliWidth from 'cli-width';\nimport wrapAnsi from 'wrap-ansi';\nimport { readline } from \"./hook-engine.js\";\n/**\n * Force line returns at specific width. This function is ANSI code friendly and it'll\n * ignore invisible codes during width calculation.\n * @param {string} content\n * @param {number} width\n * @return {string}\n */\nexport function breakLines(content, width) {\n return content\n .split('\\n')\n .flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true })\n .split('\\n')\n .map((str) => str.trimEnd()))\n .join('\\n');\n}\n/**\n * Returns the width of the active readline, or 80 as default value.\n * @returns {number}\n */\nexport function readlineWidth() {\n return cliWidth({ defaultWidth: 80, output: readline().output });\n}\n", "import { useRef } from \"../use-ref.js\";\nimport { readlineWidth, breakLines } from \"../utils.js\";\nfunction usePointerPosition({ active, renderedItems, pageSize, loop, }) {\n const state = useRef({\n lastPointer: active,\n lastActive: undefined,\n });\n const { lastPointer, lastActive } = state.current;\n const middle = Math.floor(pageSize / 2);\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const defaultPointerPosition = renderedItems\n .slice(0, active)\n .reduce((acc, item) => acc + item.length, 0);\n let pointer = defaultPointerPosition;\n if (renderedLength > pageSize) {\n if (loop) {\n /**\n * Creates the next position for the pointer considering an infinitely\n * looping list of items to be rendered on the page.\n *\n * The goal is to progressively move the cursor to the middle position as the user move down, and then keep\n * the cursor there. When the user move up, maintain the cursor position.\n */\n // By default, keep the cursor position as-is.\n pointer = lastPointer;\n if (\n // First render, skip this logic.\n lastActive != null &&\n // Only move the pointer down when the user moves down.\n lastActive < active &&\n // Check user didn't move up across page boundary.\n active - lastActive < pageSize) {\n pointer = Math.min(\n // Furthest allowed position for the pointer is the middle of the list\n middle, Math.abs(active - lastActive) === 1\n ? Math.min(\n // Move the pointer at most the height of the last active item.\n lastPointer + (renderedItems[lastActive]?.length ?? 0), \n // If the user moved by one item, move the pointer to the natural position of the active item as\n // long as it doesn't move the cursor up.\n Math.max(defaultPointerPosition, lastPointer))\n : // Otherwise, move the pointer down by the difference between the active and last active item.\n lastPointer + active - lastActive);\n }\n }\n else {\n /**\n * Creates the next position for the pointer considering a finite list of\n * items to be rendered on a page.\n *\n * The goal is to keep the pointer in the middle of the page whenever possible, until\n * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively\n * to the bottom or top of the list.\n */\n const spaceUnderActive = renderedItems\n .slice(active)\n .reduce((acc, item) => acc + item.length, 0);\n pointer =\n spaceUnderActive < pageSize - middle\n ? // If the active item is near the end of the list, progressively move the cursor towards the end.\n pageSize - spaceUnderActive\n : // Otherwise, progressively move the pointer to the middle of the list.\n Math.min(defaultPointerPosition, middle);\n }\n }\n // Save state for the next render\n state.current.lastPointer = pointer;\n state.current.lastActive = active;\n return pointer;\n}\nexport function usePagination({ items, active, renderItem, pageSize, loop = true, }) {\n const width = readlineWidth();\n const bound = (num) => ((num % items.length) + items.length) % items.length;\n const renderedItems = items.map((item, index) => {\n if (item == null)\n return [];\n return breakLines(renderItem({ item, index, isActive: index === active }), width).split('\\n');\n });\n const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);\n const renderItemAtIndex = (index) => renderedItems[index] ?? [];\n const pointer = usePointerPosition({ active, renderedItems, pageSize, loop });\n // Render the active item to decide the position.\n // If the active item fits under the pointer, we render it there.\n // Otherwise, we need to render it to fit at the bottom of the page; moving the pointer up.\n const activeItem = renderItemAtIndex(active).slice(0, pageSize);\n const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;\n // Create an array of lines for the page, and add the lines of the active item into the page\n const pageBuffer = Array.from({ length: pageSize });\n pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);\n // Store to prevent rendering the same item twice\n const itemVisited = new Set([active]);\n // Fill the page under the active item\n let bufferPointer = activeItemPosition + activeItem.length;\n let itemPointer = bound(active + 1);\n while (bufferPointer < pageSize &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(0, pageSize - bufferPointer);\n pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer += linesToAdd.length;\n itemPointer = bound(itemPointer + 1);\n }\n // Fill the page over the active item\n bufferPointer = activeItemPosition - 1;\n itemPointer = bound(active - 1);\n while (bufferPointer >= 0 &&\n !itemVisited.has(itemPointer) &&\n (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {\n const lines = renderItemAtIndex(itemPointer);\n const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));\n pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);\n // Move pointers for next iteration\n itemVisited.add(itemPointer);\n bufferPointer -= linesToAdd.length;\n itemPointer = bound(itemPointer - 1);\n }\n return pageBuffer.filter((line) => typeof line === 'string').join('\\n');\n}\n", "const Stream = require('stream')\n\nclass MuteStream extends Stream {\n #isTTY = null\n\n constructor (opts = {}) {\n super(opts)\n this.writable = this.readable = true\n this.muted = false\n this.on('pipe', this._onpipe)\n this.replace = opts.replace\n\n // For readline-type situations\n // This much at the start of a line being redrawn after a ctrl char\n // is seen (such as backspace) won't be redrawn as the replacement\n this._prompt = opts.prompt || null\n this._hadControl = false\n }\n\n #destSrc (key, def) {\n if (this._dest) {\n return this._dest[key]\n }\n if (this._src) {\n return this._src[key]\n }\n return def\n }\n\n #proxy (method, ...args) {\n if (typeof this._dest?.[method] === 'function') {\n this._dest[method](...args)\n }\n if (typeof this._src?.[method] === 'function') {\n this._src[method](...args)\n }\n }\n\n get isTTY () {\n if (this.#isTTY !== null) {\n return this.#isTTY\n }\n return this.#destSrc('isTTY', false)\n }\n\n // basically just get replace the getter/setter with a regular value\n set isTTY (val) {\n this.#isTTY = val\n }\n\n get rows () {\n return this.#destSrc('rows')\n }\n\n get columns () {\n return this.#destSrc('columns')\n }\n\n mute () {\n this.muted = true\n }\n\n unmute () {\n this.muted = false\n }\n\n _onpipe (src) {\n this._src = src\n }\n\n pipe (dest, options) {\n this._dest = dest\n return super.pipe(dest, options)\n }\n\n pause () {\n if (this._src) {\n return this._src.pause()\n }\n }\n\n resume () {\n if (this._src) {\n return this._src.resume()\n }\n }\n\n write (c) {\n if (this.muted) {\n if (!this.replace) {\n return true\n }\n // eslint-disable-next-line no-control-regex\n if (c.match(/^\\u001b/)) {\n if (c.indexOf(this._prompt) === 0) {\n c = c.slice(this._prompt.length)\n c = c.replace(/./g, this.replace)\n c = this._prompt + c\n }\n this._hadControl = true\n return this.emit('data', c)\n } else {\n if (this._prompt && this._hadControl &&\n c.indexOf(this._prompt) === 0) {\n this._hadControl = false\n this.emit('data', this._prompt)\n c = c.slice(this._prompt.length)\n }\n c = c.toString().replace(/./g, this.replace)\n }\n }\n this.emit('data', c)\n }\n\n end (c) {\n if (this.muted) {\n if (c && this.replace) {\n c = c.toString().replace(/./g, this.replace)\n } else {\n c = null\n }\n }\n if (c) {\n this.emit('data', c)\n }\n this.emit('end')\n }\n\n destroy (...args) {\n return this.#proxy('destroy', ...args)\n }\n\n destroySoon (...args) {\n return this.#proxy('destroySoon', ...args)\n }\n\n close (...args) {\n return this.#proxy('close', ...args)\n }\n}\n\nmodule.exports = MuteStream\n", "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n", "const ESC = '\\u001B[';\n/** Move cursor to first column */\nexport const cursorLeft = ESC + 'G';\n/** Hide the cursor */\nexport const cursorHide = ESC + '?25l';\n/** Show the cursor */\nexport const cursorShow = ESC + '?25h';\n/** Move cursor up by count rows */\nexport const cursorUp = (rows = 1) => (rows > 0 ? `${ESC}${rows}A` : '');\n/** Move cursor down by count rows */\nexport const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : '';\n/** Move cursor to position (x, y) */\nexport const cursorTo = (x, y) => {\n if (typeof y === 'number' && !Number.isNaN(y)) {\n return `${ESC}${y + 1};${x + 1}H`;\n }\n return `${ESC}${x + 1}G`;\n};\nconst eraseLine = ESC + '2K';\n/** Erase the specified number of lines above the cursor */\nexport const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : '';\n", "import { stripVTControlCharacters } from 'node:util';\nimport { breakLines, readlineWidth } from \"./utils.js\";\nimport { cursorDown, cursorUp, cursorTo, cursorShow, eraseLines } from '@inquirer/ansi';\nconst height = (content) => content.split('\\n').length;\nconst lastLine = (content) => content.split('\\n').pop() ?? '';\nexport default class ScreenManager {\n // These variables are keeping information to allow correct prompt re-rendering\n height = 0;\n extraLinesUnderPrompt = 0;\n cursorPos;\n rl;\n constructor(rl) {\n this.rl = rl;\n this.cursorPos = rl.getCursorPos();\n }\n write(content) {\n this.rl.output.unmute();\n this.rl.output.write(content);\n this.rl.output.mute();\n }\n render(content, bottomContent = '') {\n // Write message to screen and setPrompt to control backspace\n const promptLine = lastLine(content);\n const rawPromptLine = stripVTControlCharacters(promptLine);\n // Remove the rl.line from our prompt. We can't rely on the content of\n // rl.line (mainly because of the password prompt), so just rely on it's\n // length.\n let prompt = rawPromptLine;\n if (this.rl.line.length > 0) {\n prompt = prompt.slice(0, -this.rl.line.length);\n }\n this.rl.setPrompt(prompt);\n // SetPrompt will change cursor position, now we can get correct value\n this.cursorPos = this.rl.getCursorPos();\n const width = readlineWidth();\n content = breakLines(content, width);\n bottomContent = breakLines(bottomContent, width);\n // Manually insert an extra line if we're at the end of the line.\n // This prevent the cursor from appearing at the beginning of the\n // current line.\n if (rawPromptLine.length % width === 0) {\n content += '\\n';\n }\n let output = content + (bottomContent ? '\\n' + bottomContent : '');\n /**\n * Re-adjust the cursor at the correct position.\n */\n // We need to consider parts of the prompt under the cursor as part of the bottom\n // content in order to correctly cleanup and re-render.\n const promptLineUpDiff = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows;\n const bottomContentHeight = promptLineUpDiff + (bottomContent ? height(bottomContent) : 0);\n // Return cursor to the input position (on top of the bottomContent)\n if (bottomContentHeight > 0)\n output += cursorUp(bottomContentHeight);\n // Return cursor to the initial left offset.\n output += cursorTo(this.cursorPos.cols);\n /**\n * Render and store state for future re-rendering\n */\n this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);\n this.extraLinesUnderPrompt = bottomContentHeight;\n this.height = height(output);\n }\n checkCursorPos() {\n const cursorPos = this.rl.getCursorPos();\n if (cursorPos.cols !== this.cursorPos.cols) {\n this.write(cursorTo(cursorPos.cols));\n this.cursorPos = cursorPos;\n }\n }\n done({ clearContent }) {\n this.rl.setPrompt('');\n let output = cursorDown(this.extraLinesUnderPrompt);\n output += clearContent ? eraseLines(this.height) : '\\n';\n output += cursorShow;\n this.write(output);\n this.rl.close();\n }\n}\n", "// TODO: Remove this class once Node 22 becomes the minimum supported version.\nexport class PromisePolyfill extends Promise {\n // Available starting from Node 22\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n static withResolver() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve, reject: reject };\n }\n}\n", "import * as readline from 'node:readline';\nimport { AsyncResource } from 'node:async_hooks';\nimport MuteStream from 'mute-stream';\nimport { onExit as onSignalExit } from 'signal-exit';\nimport ScreenManager from \"./screen-manager.js\";\nimport { PromisePolyfill } from \"./promise-polyfill.js\";\nimport { withHooks, effectScheduler } from \"./hook-engine.js\";\nimport { AbortPromptError, CancelPromptError, ExitPromptError } from \"./errors.js\";\nfunction getCallSites() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _prepareStackTrace = Error.prepareStackTrace;\n let result = [];\n try {\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1);\n result = callSitesWithoutCurrent;\n return callSitesWithoutCurrent;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n new Error().stack;\n }\n catch {\n // An error will occur if the Node flag --frozen-intrinsics is used.\n // https://nodejs.org/api/cli.html#--frozen-intrinsics\n return result;\n }\n Error.prepareStackTrace = _prepareStackTrace;\n return result;\n}\nexport function createPrompt(view) {\n const callSites = getCallSites();\n const prompt = (config, context = {}) => {\n // Default `input` to stdin\n const { input = process.stdin, signal } = context;\n const cleanups = new Set();\n // Add mute capabilities to the output\n const output = new MuteStream();\n output.pipe(context.output ?? process.stdout);\n const rl = readline.createInterface({\n terminal: true,\n input,\n output,\n });\n const screen = new ScreenManager(rl);\n const { promise, resolve, reject } = PromisePolyfill.withResolver();\n const cancel = () => reject(new CancelPromptError());\n if (signal) {\n const abort = () => reject(new AbortPromptError({ cause: signal.reason }));\n if (signal.aborted) {\n abort();\n return Object.assign(promise, { cancel });\n }\n signal.addEventListener('abort', abort);\n cleanups.add(() => signal.removeEventListener('abort', abort));\n }\n cleanups.add(onSignalExit((code, signal) => {\n reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal}`));\n }));\n // SIGINT must be explicitly handled by the prompt so the ExitPromptError can be handled.\n // Otherwise, the prompt will stop and in some scenarios never resolve.\n // Ref issue #1741\n const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));\n rl.on('SIGINT', sigint);\n cleanups.add(() => rl.removeListener('SIGINT', sigint));\n // Re-renders only happen when the state change; but the readline cursor could change position\n // and that also requires a re-render (and a manual one because we mute the streams).\n // We set the listener after the initial workLoop to avoid a double render if render triggered\n // by a state change sets the cursor to the right position.\n const checkCursorPos = () => screen.checkCursorPos();\n rl.input.on('keypress', checkCursorPos);\n cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));\n return withHooks(rl, (cycle) => {\n // The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand\n // triggers after the process is done (which happens after timeouts are done triggering.)\n // We triggers the hooks cleanup phase on rl `close` so active timeouts can be cleared.\n const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());\n rl.on('close', hooksCleanup);\n cleanups.add(() => rl.removeListener('close', hooksCleanup));\n cycle(() => {\n try {\n const nextView = view(config, (value) => {\n setImmediate(() => resolve(value));\n });\n // Typescript won't allow this, but not all users rely on typescript.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (nextView === undefined) {\n const callerFilename = callSites[1]?.getFileName();\n throw new Error(`Prompt functions must return a string.\\n at ${callerFilename}`);\n }\n const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;\n screen.render(content, bottomContent);\n effectScheduler.run();\n }\n catch (error) {\n reject(error);\n }\n });\n return Object.assign(promise\n .then((answer) => {\n effectScheduler.clearAll();\n return answer;\n }, (error) => {\n effectScheduler.clearAll();\n throw error;\n })\n // Wait for the promise to settle, then cleanup.\n .finally(() => {\n cleanups.forEach((cleanup) => cleanup());\n screen.done({ clearContent: Boolean(context.clearPromptOnDone) });\n output.end();\n })\n // Once cleanup is done, let the expose promise resolve/reject to the internal one.\n .then(() => promise), { cancel });\n });\n };\n return prompt;\n}\n", "import colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\n/**\n * Separator object\n * Used to space/separate choices group\n */\nexport class Separator {\n separator = colors.dim(Array.from({ length: 15 }).join(figures.line));\n type = 'separator';\n constructor(separator) {\n if (separator) {\n this.separator = separator;\n }\n }\n static isSeparator(choice) {\n return Boolean(choice &&\n typeof choice === 'object' &&\n 'type' in choice &&\n choice.type === 'separator');\n }\n}\n", "export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, } from \"./lib/key.js\";\nexport * from \"./lib/errors.js\";\nexport { usePrefix } from \"./lib/use-prefix.js\";\nexport { useState } from \"./lib/use-state.js\";\nexport { useEffect } from \"./lib/use-effect.js\";\nexport { useMemo } from \"./lib/use-memo.js\";\nexport { useRef } from \"./lib/use-ref.js\";\nexport { useKeypress } from \"./lib/use-keypress.js\";\nexport { makeTheme } from \"./lib/make-theme.js\";\nexport { usePagination } from \"./lib/pagination/use-pagination.js\";\nexport { createPrompt } from \"./lib/create-prompt.js\";\nexport { Separator } from \"./lib/Separator.js\";\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useMemo, makeTheme, isUpKey, isDownKey, isSpaceKey, isNumberKey, isEnterKey, ValidationError, Separator, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nconst checkboxTheme = {\n icon: {\n checked: colors.green(figures.circleFilled),\n unchecked: figures.circle,\n cursor: figures.pointer,\n },\n style: {\n disabledChoice: (text) => colors.dim(`- ${text}`),\n renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(', '),\n description: (text) => colors.cyan(text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${colors.bold(key)} ${colors.dim(action)}`)\n .join(colors.dim(' \u2022 ')),\n },\n helpMode: 'always',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction isChecked(item) {\n return isSelectable(item) && item.checked;\n}\nfunction toggle(item) {\n return isSelectable(item) ? { ...item, checked: !item.checked } : item;\n}\nfunction check(checked) {\n return function (item) {\n return isSelectable(item) ? { ...item, checked } : item;\n };\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice === 'string') {\n return {\n value: choice,\n name: choice,\n short: choice,\n checkedName: choice,\n disabled: false,\n checked: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n checkedName: choice.checkedName ?? name,\n disabled: choice.disabled ?? false,\n checked: choice.checked ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { \n // eslint-disable-next-line @typescript-eslint/no-deprecated\n instructions, pageSize = 7, loop = true, required, validate = () => true, } = config;\n const shortcuts = { all: 'a', invert: 'i', ...config.shortcuts };\n const theme = makeTheme(checkboxTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const [items, setItems] = useState(normalizeChoices(config.choices));\n const bounds = useMemo(() => {\n const first = items.findIndex(isSelectable);\n const last = items.findLastIndex(isSelectable);\n if (first === -1) {\n throw new ValidationError('[checkbox prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const [active, setActive] = useState(bounds.first);\n const [errorMsg, setError] = useState();\n useKeypress(async (key) => {\n if (isEnterKey(key)) {\n const selection = items.filter(isChecked);\n const isValid = await validate([...selection]);\n if (required && !items.some(isChecked)) {\n setError('At least one choice must be selected');\n }\n else if (isValid === true) {\n setStatus('done');\n done(selection.map((choice) => choice.value));\n }\n else {\n setError(isValid || 'You must select a valid value');\n }\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isSelectable(items[next]));\n setActive(next);\n }\n }\n else if (isSpaceKey(key)) {\n setError(undefined);\n setItems(items.map((choice, i) => (i === active ? toggle(choice) : choice)));\n }\n else if (key.name === shortcuts.all) {\n const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);\n setItems(items.map(check(selectAll)));\n }\n else if (key.name === shortcuts.invert) {\n setItems(items.map(toggle));\n }\n else if (isNumberKey(key)) {\n const selectedIndex = Number(key.name) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const selectedItem = items[position];\n if (selectedItem && isSelectable(selectedItem)) {\n setActive(position);\n setItems(items.map((choice, i) => (i === position ? toggle(choice) : choice)));\n }\n }\n });\n const message = theme.style.message(config.message, status);\n let description;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive }) {\n if (Separator.isSeparator(item)) {\n return ` ${item.separator}`;\n }\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n return theme.style.disabledChoice(`${item.name} ${disabledLabel}`);\n }\n if (isActive) {\n description = item.description;\n }\n const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked;\n const name = item.checked ? item.checkedName : item.name;\n const color = isActive ? theme.style.highlight : (x) => x;\n const cursor = isActive ? theme.icon.cursor : ' ';\n return color(`${cursor}${checkbox} ${name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n const selection = items.filter(isChecked);\n const answer = theme.style.answer(theme.style.renderSelectedChoices(selection, items));\n return [prefix, message, answer].filter(Boolean).join(' ');\n }\n let helpLine;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (theme.helpMode !== 'never' && instructions !== false) {\n if (typeof instructions === 'string') {\n helpLine = instructions;\n }\n else {\n const keys = [\n ['\u2191\u2193', 'navigate'],\n ['space', 'select'],\n ];\n if (shortcuts.all)\n keys.push([shortcuts.all, 'all']);\n if (shortcuts.invert)\n keys.push([shortcuts.invert, 'invert']);\n keys.push(['\u23CE', 'submit']);\n helpLine = theme.style.keysHelpTip(keys);\n }\n }\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n errorMsg ? theme.style.error(errorMsg) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n", null, null, null, null, null, null, null, null, null, null, "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "\"use strict\"\n\nvar BOMChar = \"\\uFEFF\"\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper (encoder, options) {\n this.encoder = encoder\n this.addBOM = true\n}\n\nPrependBOMWrapper.prototype.write = function (str) {\n if (this.addBOM) {\n str = BOMChar + str\n this.addBOM = false\n }\n\n return this.encoder.write(str)\n}\n\nPrependBOMWrapper.prototype.end = function () {\n return this.encoder.end()\n}\n\n// ------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper\nfunction StripBOMWrapper (decoder, options) {\n this.decoder = decoder\n this.pass = false\n this.options = options || {}\n}\n\nStripBOMWrapper.prototype.write = function (buf) {\n var res = this.decoder.write(buf)\n if (this.pass || !res) { return res }\n\n if (res[0] === BOMChar) {\n res = res.slice(1)\n if (typeof this.options.stripBOM === \"function\") { this.options.stripBOM() }\n }\n\n this.pass = true\n return res\n}\n\nStripBOMWrapper.prototype.end = function () {\n return this.decoder.end()\n}\n", "\"use strict\"\n\nvar hasOwn = typeof Object.hasOwn === \"undefined\" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn\n\nfunction mergeModules (target, module) {\n for (var key in module) {\n if (hasOwn(module, key)) {\n target[key] = module[key]\n }\n }\n}\n\nmodule.exports = mergeModules\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true },\n cesu8: { type: \"_internal\", bomAware: true },\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true },\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec\n}\n\n// ------------------------------------------------------------------------------\n\nfunction InternalCodec (codecOptions, iconv) {\n this.enc = codecOptions.encodingName\n this.bomAware = codecOptions.bomAware\n\n if (this.enc === \"base64\") { this.encoder = InternalEncoderBase64 } else if (this.enc === \"utf8\") { this.encoder = InternalEncoderUtf8 } else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\" // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from(\"eda0bdedb2a9\", \"hex\").toString() !== \"\uD83D\uDCA9\") {\n this.decoder = InternalDecoderCesu8\n this.defaultCharUnicode = iconv.defaultCharUnicode\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder\nInternalCodec.prototype.decoder = InternalDecoder\n\n// ------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require(\"string_decoder\").StringDecoder\n\nfunction InternalDecoder (options, codec) {\n this.decoder = new StringDecoder(codec.enc)\n}\n\nInternalDecoder.prototype.write = function (buf) {\n if (!Buffer.isBuffer(buf)) {\n buf = Buffer.from(buf)\n }\n\n return this.decoder.write(buf)\n}\n\nInternalDecoder.prototype.end = function () {\n return this.decoder.end()\n}\n\n// ------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder (options, codec) {\n this.enc = codec.enc\n}\n\nInternalEncoder.prototype.write = function (str) {\n return Buffer.from(str, this.enc)\n}\n\nInternalEncoder.prototype.end = function () {\n}\n\n// ------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64 (options, codec) {\n this.prevStr = \"\"\n}\n\nInternalEncoderBase64.prototype.write = function (str) {\n str = this.prevStr + str\n var completeQuads = str.length - (str.length % 4)\n this.prevStr = str.slice(completeQuads)\n str = str.slice(0, completeQuads)\n\n return Buffer.from(str, \"base64\")\n}\n\nInternalEncoderBase64.prototype.end = function () {\n return Buffer.from(this.prevStr, \"base64\")\n}\n\n// ------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8 (options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function (str) {\n var buf = Buffer.alloc(str.length * 3); var bufIdx = 0\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i)\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80) { buf[bufIdx++] = charCode } else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6)\n buf[bufIdx++] = 0x80 + (charCode & 0x3f)\n } else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12)\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f)\n buf[bufIdx++] = 0x80 + (charCode & 0x3f)\n }\n }\n return buf.slice(0, bufIdx)\n}\n\nInternalEncoderCesu8.prototype.end = function () {\n}\n\n// ------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8 (options, codec) {\n this.acc = 0\n this.contBytes = 0\n this.accBytes = 0\n this.defaultCharUnicode = codec.defaultCharUnicode\n}\n\nInternalDecoderCesu8.prototype.write = function (buf) {\n var acc = this.acc; var contBytes = this.contBytes; var accBytes = this.accBytes\n var res = \"\"\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i]\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode\n contBytes = 0\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte)\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F\n contBytes = 1; accBytes = 1\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F\n contBytes = 2; accBytes = 1\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f)\n contBytes--; accBytes++\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0) {\n res += this.defaultCharUnicode\n } else if (accBytes === 3 && acc < 0x800) {\n res += this.defaultCharUnicode\n } else {\n // Actually add character.\n res += String.fromCharCode(acc)\n }\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes\n return res\n}\n\nInternalDecoderCesu8.prototype.end = function () {\n var res = 0\n if (this.contBytes > 0) { res += this.defaultCharUnicode }\n return res\n}\n\n// ------------------------------------------------------------------------------\n// check the chunk boundaries for surrogate pair\n\nfunction InternalEncoderUtf8 (options, codec) {\n this.highSurrogate = \"\"\n}\n\nInternalEncoderUtf8.prototype.write = function (str) {\n if (this.highSurrogate) {\n str = this.highSurrogate + str\n this.highSurrogate = \"\"\n }\n\n if (str.length > 0) {\n var charCode = str.charCodeAt(str.length - 1)\n if (charCode >= 0xd800 && charCode < 0xdc00) {\n this.highSurrogate = str[str.length - 1]\n str = str.slice(0, str.length - 1)\n }\n }\n\n return Buffer.from(str, this.enc)\n}\n\nInternalEncoderUtf8.prototype.end = function () {\n if (this.highSurrogate) {\n var str = this.highSurrogate\n this.highSurrogate = \"\"\n return Buffer.from(str, this.enc)\n }\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec\n\nfunction Utf32Codec (codecOptions, iconv) {\n this.iconv = iconv\n this.bomAware = true\n this.isLE = codecOptions.isLE\n}\n\nexports.utf32le = { type: \"_utf32\", isLE: true }\nexports.utf32be = { type: \"_utf32\", isLE: false }\n\n// Aliases\nexports.ucs4le = \"utf32le\"\nexports.ucs4be = \"utf32be\"\n\nUtf32Codec.prototype.encoder = Utf32Encoder\nUtf32Codec.prototype.decoder = Utf32Decoder\n\n// -- Encoding\n\nfunction Utf32Encoder (options, codec) {\n this.isLE = codec.isLE\n this.highSurrogate = 0\n}\n\nUtf32Encoder.prototype.write = function (str) {\n var src = Buffer.from(str, \"ucs2\")\n // src.length * 2 covers this chunk's code units (4 bytes each); the extra 4 bytes leave room for a\n // high surrogate held over from a previous chunk, which is flushed ahead of this chunk's units.\n var dst = Buffer.alloc(src.length * 2 + 4)\n var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE\n var offset = 0\n\n for (var i = 0; i < src.length; i += 2) {\n var code = src.readUInt16LE(i)\n var isHighSurrogate = (code >= 0xD800 && code < 0xDC00)\n var isLowSurrogate = (code >= 0xDC00 && code < 0xE000)\n\n if (this.highSurrogate) {\n if (isHighSurrogate || !isLowSurrogate) {\n // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n // (technically wrong, but expected by some applications, like Windows file names).\n write32.call(dst, this.highSurrogate, offset)\n offset += 4\n } else {\n // Create 32-bit value from high and low surrogates;\n var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000\n\n write32.call(dst, codepoint, offset)\n offset += 4\n this.highSurrogate = 0\n\n continue\n }\n }\n\n if (isHighSurrogate) { this.highSurrogate = code } else {\n // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n // unpaired high surrogates.\n write32.call(dst, code, offset)\n offset += 4\n this.highSurrogate = 0\n }\n }\n\n if (offset < dst.length) { dst = dst.slice(0, offset) }\n\n return dst\n}\n\nUtf32Encoder.prototype.end = function () {\n // Treat any leftover high surrogate as a semi-valid independent character.\n if (!this.highSurrogate) { return }\n\n var buf = Buffer.alloc(4)\n\n if (this.isLE) { buf.writeUInt32LE(this.highSurrogate, 0) } else { buf.writeUInt32BE(this.highSurrogate, 0) }\n\n this.highSurrogate = 0\n\n return buf\n}\n\n// -- Decoding\n\nfunction Utf32Decoder (options, codec) {\n this.isLE = codec.isLE\n this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0)\n this.overflow = []\n}\n\nUtf32Decoder.prototype.write = function (src) {\n if (src.length === 0) { return \"\" }\n\n var i = 0\n var codepoint = 0\n var dst = Buffer.alloc(src.length + 4)\n var offset = 0\n var isLE = this.isLE\n var overflow = this.overflow\n var badChar = this.badChar\n\n if (overflow.length > 0) {\n for (; i < src.length && overflow.length < 4; i++) { overflow.push(src[i]) }\n\n if (overflow.length === 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n if (isLE) {\n codepoint = overflow[0] | (overflow[1] << 8) | (overflow[2] << 16) | (overflow[3] << 24)\n } else {\n codepoint = overflow[3] | (overflow[2] << 8) | (overflow[1] << 16) | (overflow[0] << 24)\n }\n overflow.length = 0\n\n offset = _writeCodepoint(dst, offset, codepoint, badChar)\n }\n }\n\n // Main loop. Should be as optimized as possible.\n for (; i < src.length - 3; i += 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n if (isLE) {\n codepoint = src[i] | (src[i + 1] << 8) | (src[i + 2] << 16) | (src[i + 3] << 24)\n } else {\n codepoint = src[i + 3] | (src[i + 2] << 8) | (src[i + 1] << 16) | (src[i] << 24)\n }\n offset = _writeCodepoint(dst, offset, codepoint, badChar)\n }\n\n // Keep overflowing bytes.\n for (; i < src.length; i++) {\n overflow.push(src[i])\n }\n\n return dst.slice(0, offset).toString(\"ucs2\")\n}\n\nfunction _writeCodepoint (dst, offset, codepoint, badChar) {\n // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n if (codepoint < 0 || codepoint > 0x10FFFF) {\n // Not a valid Unicode codepoint\n codepoint = badChar\n }\n\n // Ephemeral Planes: Write high surrogate.\n if (codepoint >= 0x10000) {\n codepoint -= 0x10000\n\n var high = 0xD800 | (codepoint >> 10)\n dst[offset++] = high & 0xff\n dst[offset++] = high >> 8\n\n // Low surrogate is written below.\n var codepoint = 0xDC00 | (codepoint & 0x3FF)\n }\n\n // Write BMP char or low surrogate.\n dst[offset++] = codepoint & 0xff\n dst[offset++] = codepoint >> 8\n\n return offset\n};\n\nUtf32Decoder.prototype.end = function () {\n if (this.overflow.length === 0) { return }\n\n // A leftover, incomplete 4-byte code unit at the end of the input is ill-formed. Substitute a\n // single U+FFFD (Unicode Standard conformance clause C10) instead of silently dropping the bytes.\n this.overflow.length = 0\n return String.fromCharCode(this.badChar)\n}\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec\nexports.ucs4 = \"utf32\"\n\nfunction Utf32AutoCodec (options, iconv) {\n this.iconv = iconv\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder\n\n// -- Encoding\n\nfunction Utf32AutoEncoder (options, codec) {\n options = options || {}\n\n if (options.addBOM === undefined) {\n options.addBOM = true\n }\n\n this.encoder = codec.iconv.getEncoder(options.defaultEncoding || \"utf-32le\", options)\n}\n\nUtf32AutoEncoder.prototype.write = function (str) {\n return this.encoder.write(str)\n}\n\nUtf32AutoEncoder.prototype.end = function () {\n return this.encoder.end()\n}\n\n// -- Decoding\n\nfunction Utf32AutoDecoder (options, codec) {\n this.decoder = null\n this.initialBufs = []\n this.initialBufsLen = 0\n this.options = options || {}\n this.iconv = codec.iconv\n}\n\nUtf32AutoDecoder.prototype.write = function (buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf)\n this.initialBufsLen += buf.length\n\n if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n { return \"\" }\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n var resStr = \"\"\n for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n this.initialBufs.length = this.initialBufsLen = 0\n return resStr\n }\n\n return this.decoder.write(buf)\n}\n\nUtf32AutoDecoder.prototype.end = function () {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n var resStr = \"\"\n for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n var trail = this.decoder.end()\n if (trail) { resStr += trail }\n\n this.initialBufs.length = this.initialBufsLen = 0\n return resStr\n }\n\n return this.decoder.end()\n}\n\nfunction detectEncoding (bufs, defaultEncoding) {\n var b = []\n var charsProcessed = 0\n var invalidLE = 0; var invalidBE = 0 // Number of invalid chars when decoded as LE or BE.\n var bmpCharsLE = 0; var bmpCharsBE = 0 // Number of BMP chars when decoded as LE or BE.\n\n outerLoop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i]\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j])\n if (b.length === 4) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n return \"utf-32le\"\n }\n if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n return \"utf-32be\"\n }\n }\n\n if (b[0] !== 0 || b[1] > 0x10) invalidBE++\n if (b[3] !== 0 || b[2] > 0x10) invalidLE++\n\n if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++\n if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++\n\n b.length = 0\n charsProcessed++\n\n if (charsProcessed >= 100) {\n break outerLoop\n }\n }\n }\n }\n\n // Make decisions.\n if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return \"utf-32be\"\n if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return \"utf-32le\"\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || \"utf-32le\"\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec\nfunction Utf16BECodec () {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder\nUtf16BECodec.prototype.decoder = Utf16BEDecoder\nUtf16BECodec.prototype.bomAware = true\n\n// -- Encoding\n\nfunction Utf16BEEncoder () {\n}\n\nUtf16BEEncoder.prototype.write = function (str) {\n var buf = Buffer.from(str, \"ucs2\")\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp\n }\n return buf\n}\n\nUtf16BEEncoder.prototype.end = function () {\n}\n\n// -- Decoding\n\nfunction Utf16BEDecoder () {\n this.overflowByte = -1\n}\n\nUtf16BEDecoder.prototype.write = function (buf) {\n if (buf.length == 0) { return \"\" }\n\n var buf2 = Buffer.alloc(buf.length + 1)\n var i = 0; var j = 0\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0]\n buf2[1] = this.overflowByte\n i = 1; j = 2\n }\n\n for (; i < buf.length - 1; i += 2, j += 2) {\n buf2[j] = buf[i + 1]\n buf2[j + 1] = buf[i]\n }\n\n this.overflowByte = (i == buf.length - 1) ? buf[buf.length - 1] : -1\n\n return buf2.slice(0, j).toString(\"ucs2\")\n}\n\nUtf16BEDecoder.prototype.end = function () {\n this.overflowByte = -1\n}\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec\nfunction Utf16Codec (codecOptions, iconv) {\n this.iconv = iconv\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder\nUtf16Codec.prototype.decoder = Utf16Decoder\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder (options, codec) {\n options = options || {}\n if (options.addBOM === undefined) { options.addBOM = true }\n this.encoder = codec.iconv.getEncoder(\"utf-16le\", options)\n}\n\nUtf16Encoder.prototype.write = function (str) {\n return this.encoder.write(str)\n}\n\nUtf16Encoder.prototype.end = function () {\n return this.encoder.end()\n}\n\n// -- Decoding\n\nfunction Utf16Decoder (options, codec) {\n this.decoder = null\n this.initialBufs = []\n this.initialBufsLen = 0\n\n this.options = options || {}\n this.iconv = codec.iconv\n}\n\nUtf16Decoder.prototype.write = function (buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf)\n this.initialBufsLen += buf.length\n\n if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n { return \"\" }\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n var resStr = \"\"\n for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n this.initialBufs.length = this.initialBufsLen = 0\n return resStr\n }\n\n return this.decoder.write(buf)\n}\n\nUtf16Decoder.prototype.end = function () {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n var resStr = \"\"\n for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n var trail = this.decoder.end()\n if (trail) { resStr += trail }\n\n this.initialBufs.length = this.initialBufsLen = 0\n return resStr\n }\n return this.decoder.end()\n}\n\nfunction detectEncoding (bufs, defaultEncoding) {\n var b = []\n var charsProcessed = 0\n // Number of ASCII chars when decoded as LE or BE.\n var asciiCharsLE = 0\n var asciiCharsBE = 0\n\n outerLoop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i]\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j])\n if (b.length === 2) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE) return \"utf-16le\"\n if (b[0] === 0xFE && b[1] === 0xFF) return \"utf-16be\"\n }\n\n if (b[0] === 0 && b[1] !== 0) asciiCharsBE++\n if (b[0] !== 0 && b[1] === 0) asciiCharsLE++\n\n b.length = 0\n charsProcessed++\n\n if (charsProcessed >= 100) {\n break outerLoop\n }\n }\n }\n }\n\n // Make decisions.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n if (asciiCharsBE > asciiCharsLE) return \"utf-16be\"\n if (asciiCharsBE < asciiCharsLE) return \"utf-16le\"\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || \"utf-16le\"\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec\nexports.unicode11utf7 = \"utf7\" // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec (codecOptions, iconv) {\n this.iconv = iconv\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder\nUtf7Codec.prototype.decoder = Utf7Decoder\nUtf7Codec.prototype.bomAware = true\n\n// -- Encoding\n\n// Why scape ()?./?\n// eslint-disable-next-line no-useless-escape\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g\n\nfunction Utf7Encoder (options, codec) {\n this.iconv = codec.iconv\n}\n\nUtf7Encoder.prototype.write = function (str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function (chunk) {\n return \"+\" + (chunk === \"+\"\n ? \"\"\n : this.iconv.encode(chunk, \"utf16-be\").toString(\"base64\").replace(/=+$/, \"\")) +\n \"-\"\n }.bind(this)))\n}\n\nUtf7Encoder.prototype.end = function () {\n}\n\n// -- Decoding\n\nfunction Utf7Decoder (options, codec) {\n this.iconv = codec.iconv\n this.inBase64 = false\n this.base64Accum = \"\"\n}\n\n// Why scape /?\n// eslint-disable-next-line no-useless-escape\nvar base64Regex = /[A-Za-z0-9\\/+]/\nvar base64Chars = []\nfor (var i = 0; i < 256; i++) { base64Chars[i] = base64Regex.test(String.fromCharCode(i)) }\n\nvar plusChar = \"+\".charCodeAt(0)\nvar minusChar = \"-\".charCodeAt(0)\nvar andChar = \"&\".charCodeAt(0)\n\nUtf7Decoder.prototype.write = function (buf) {\n var res = \"\"; var lastI = 0\n var inBase64 = this.inBase64\n var base64Accum = this.base64Accum\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\") // Write direct chars.\n lastI = i + 1\n inBase64 = true\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"+-\" -> \"+\"\n res += \"+\"\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\")\n res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n { i-- }\n\n lastI = i + 1\n inBase64 = false\n base64Accum = \"\"\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\") // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\")\n\n var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded)\n\n res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n }\n\n this.inBase64 = inBase64\n this.base64Accum = base64Accum\n\n return res\n}\n\nUtf7Decoder.prototype.end = function () {\n var res = \"\"\n if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, \"base64\"), \"utf16-be\") }\n\n this.inBase64 = false\n this.base64Accum = \"\"\n return res\n}\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\nexports.utf7imap = Utf7IMAPCodec\nfunction Utf7IMAPCodec (codecOptions, iconv) {\n this.iconv = iconv\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder\nUtf7IMAPCodec.prototype.bomAware = true\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder (options, codec) {\n this.iconv = codec.iconv\n this.inBase64 = false\n this.base64Accum = Buffer.alloc(6)\n this.base64AccumIdx = 0\n}\n\nUtf7IMAPEncoder.prototype.write = function (str) {\n var inBase64 = this.inBase64\n var base64Accum = this.base64Accum\n var base64AccumIdx = this.base64AccumIdx\n var buf = Buffer.alloc(str.length * 5 + 10); var bufIdx = 0\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i)\n if (uChar >= 0x20 && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString(\"base64\").replace(/\\//g, \",\").replace(/=+$/, \"\"), bufIdx)\n base64AccumIdx = 0\n }\n\n buf[bufIdx++] = minusChar // Write '-', then go to direct mode.\n inBase64 = false\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n { buf[bufIdx++] = minusChar }\n }\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar // Write '&', then go to base64 mode.\n inBase64 = true\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8\n base64Accum[base64AccumIdx++] = uChar & 0xFF\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString(\"base64\").replace(/\\//g, \",\"), bufIdx)\n base64AccumIdx = 0\n }\n }\n }\n }\n\n this.inBase64 = inBase64\n this.base64AccumIdx = base64AccumIdx\n\n return buf.slice(0, bufIdx)\n}\n\nUtf7IMAPEncoder.prototype.end = function () {\n var buf = Buffer.alloc(10); var bufIdx = 0\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString(\"base64\").replace(/\\//g, \",\").replace(/=+$/, \"\"), bufIdx)\n this.base64AccumIdx = 0\n }\n\n buf[bufIdx++] = minusChar // Write '-', then go to direct mode.\n this.inBase64 = false\n }\n\n return buf.slice(0, bufIdx)\n}\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder (options, codec) {\n this.iconv = codec.iconv\n this.inBase64 = false\n this.base64Accum = \"\"\n}\n\nvar base64IMAPChars = base64Chars.slice()\nbase64IMAPChars[\",\".charCodeAt(0)] = true\n\nUtf7IMAPDecoder.prototype.write = function (buf) {\n var res = \"\"; var lastI = 0\n var inBase64 = this.inBase64\n var base64Accum = this.base64Accum\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\") // Write direct chars.\n lastI = i + 1\n inBase64 = true\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\"\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, \"/\")\n res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n { i-- }\n\n lastI = i + 1\n inBase64 = false\n base64Accum = \"\"\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\") // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, \"/\")\n\n var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded)\n\n res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n }\n\n this.inBase64 = inBase64\n this.base64Accum = base64Accum\n\n return res\n}\n\nUtf7IMAPDecoder.prototype.end = function () {\n var res = \"\"\n if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, \"base64\"), \"utf16-be\") }\n\n this.inBase64 = false\n this.base64Accum = \"\"\n return res\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII).\n\nexports._sbcs = SBCSCodec\nfunction SBCSCodec (codecOptions, iconv) {\n if (!codecOptions) {\n throw new Error(\"SBCS codec is called without the data.\")\n }\n\n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) {\n throw new Error(\"Encoding '\" + codecOptions.type + \"' has incorrect 'chars' (must be of len 128 or 256)\")\n }\n\n if (codecOptions.chars.length === 128) {\n var asciiString = \"\"\n for (var i = 0; i < 128; i++) {\n asciiString += String.fromCharCode(i)\n }\n codecOptions.chars = asciiString + codecOptions.chars\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, \"ucs2\")\n\n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0))\n\n for (var i = 0; i < codecOptions.chars.length; i++) {\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i\n }\n\n this.encodeBuf = encodeBuf\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder\nSBCSCodec.prototype.decoder = SBCSDecoder\n\nfunction SBCSEncoder (options, codec) {\n this.encodeBuf = codec.encodeBuf\n}\n\nSBCSEncoder.prototype.write = function (str) {\n var buf = Buffer.alloc(str.length)\n for (var i = 0; i < str.length; i++) {\n buf[i] = this.encodeBuf[str.charCodeAt(i)]\n }\n\n return buf\n}\n\nSBCSEncoder.prototype.end = function () {\n}\n\nfunction SBCSDecoder (options, codec) {\n this.decodeBuf = codec.decodeBuf\n}\n\nSBCSDecoder.prototype.write = function (buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf\n var newBuf = Buffer.alloc(buf.length * 2)\n var idx1 = 0; var idx2 = 0\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i] * 2; idx2 = i * 2\n newBuf[idx2] = decodeBuf[idx1]\n newBuf[idx2 + 1] = decodeBuf[idx1 + 1]\n }\n return newBuf.toString(\"ucs2\")\n}\n\nSBCSDecoder.prototype.end = function () {\n}\n", "\"use strict\"\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n 10029: \"maccenteuro\",\n maccenteuro: {\n type: \"_sbcs\",\n chars: \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n },\n\n 808: \"cp808\",\n ibm808: \"cp808\",\n cp808: {\n type: \"_sbcs\",\n chars: \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n },\n\n mik: {\n type: \"_sbcs\",\n chars: \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n\n cp720: {\n type: \"_sbcs\",\n chars: \"\\x80\\x81\u00E9\u00E2\\x84\u00E0\\x86\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\\x8d\\x8e\\x8f\\x90\\u0651\\u0652\u00F4\u00A4\u0640\u00FB\u00F9\u0621\u0622\u0623\u0624\u00A3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\u00B5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\\u00a0\"\n },\n\n // Aliases of generated encodings.\n ascii8bit: \"ascii\",\n usascii: \"ascii\",\n ansix34: \"ascii\",\n ansix341968: \"ascii\",\n ansix341986: \"ascii\",\n csascii: \"ascii\",\n cp367: \"ascii\",\n ibm367: \"ascii\",\n isoir6: \"ascii\",\n iso646us: \"ascii\",\n iso646irv: \"ascii\",\n us: \"ascii\",\n\n latin1: \"iso88591\",\n latin2: \"iso88592\",\n latin3: \"iso88593\",\n latin4: \"iso88594\",\n latin5: \"iso88599\",\n latin6: \"iso885910\",\n latin7: \"iso885913\",\n latin8: \"iso885914\",\n latin9: \"iso885915\",\n latin10: \"iso885916\",\n\n csisolatin1: \"iso88591\",\n csisolatin2: \"iso88592\",\n csisolatin3: \"iso88593\",\n csisolatin4: \"iso88594\",\n csisolatincyrillic: \"iso88595\",\n csisolatinarabic: \"iso88596\",\n csisolatingreek: \"iso88597\",\n csisolatinhebrew: \"iso88598\",\n csisolatin5: \"iso88599\",\n csisolatin6: \"iso885910\",\n\n l1: \"iso88591\",\n l2: \"iso88592\",\n l3: \"iso88593\",\n l4: \"iso88594\",\n l5: \"iso88599\",\n l6: \"iso885910\",\n l7: \"iso885913\",\n l8: \"iso885914\",\n l9: \"iso885915\",\n l10: \"iso885916\",\n\n isoir14: \"iso646jp\",\n isoir57: \"iso646cn\",\n isoir100: \"iso88591\",\n isoir101: \"iso88592\",\n isoir109: \"iso88593\",\n isoir110: \"iso88594\",\n isoir144: \"iso88595\",\n isoir127: \"iso88596\",\n isoir126: \"iso88597\",\n isoir138: \"iso88598\",\n isoir148: \"iso88599\",\n isoir157: \"iso885910\",\n isoir166: \"tis620\",\n isoir179: \"iso885913\",\n isoir199: \"iso885914\",\n isoir203: \"iso885915\",\n isoir226: \"iso885916\",\n\n cp819: \"iso88591\",\n ibm819: \"iso88591\",\n\n cyrillic: \"iso88595\",\n\n arabic: \"iso88596\",\n arabic8: \"iso88596\",\n ecma114: \"iso88596\",\n asmo708: \"iso88596\",\n\n greek: \"iso88597\",\n greek8: \"iso88597\",\n ecma118: \"iso88597\",\n elot928: \"iso88597\",\n\n hebrew: \"iso88598\",\n hebrew8: \"iso88598\",\n iso88598i: \"iso88598\",\n iso88598e: \"iso88598\",\n\n turkish: \"iso88599\",\n turkish8: \"iso88599\",\n\n thai: \"iso885911\",\n thai8: \"iso885911\",\n\n celtic: \"iso885914\",\n celtic8: \"iso885914\",\n isoceltic: \"iso885914\",\n\n tis6200: \"tis620\",\n tis62025291: \"tis620\",\n tis62025330: \"tis620\",\n\n 10000: \"macroman\",\n 10006: \"macgreek\",\n 10007: \"maccyrillic\",\n 10079: \"maciceland\",\n 10081: \"macturkish\",\n\n cspc8codepage437: \"cp437\",\n cspc775baltic: \"cp775\",\n cspc850multilingual: \"cp850\",\n cspcp852: \"cp852\",\n cspc862latinhebrew: \"cp862\",\n cpgr: \"cp869\",\n\n msee: \"cp1250\",\n mscyrl: \"cp1251\",\n msansi: \"cp1252\",\n msgreek: \"cp1253\",\n msturk: \"cp1254\",\n mshebr: \"cp1255\",\n msarab: \"cp1256\",\n winbaltrim: \"cp1257\",\n\n cp20866: \"koi8r\",\n 20866: \"koi8r\",\n ibm878: \"koi8r\",\n cskoi8r: \"koi8r\",\n\n cp21866: \"koi8u\",\n 21866: \"koi8u\",\n ibm1168: \"koi8u\",\n\n strk10482002: \"rk1048\",\n\n tcvn5712: \"tcvn\",\n tcvn57121: \"tcvn\",\n\n gb198880: \"iso646cn\",\n cn: \"iso646cn\",\n\n csiso14jisc6220ro: \"iso646jp\",\n jisc62201969ro: \"iso646jp\",\n jp: \"iso646jp\",\n\n cshproman8: \"hproman8\",\n r8: \"hproman8\",\n roman8: \"hproman8\",\n xroman8: \"hproman8\",\n ibm1051: \"hproman8\",\n\n mac: \"macintosh\",\n csmacintosh: \"macintosh\"\n}\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n }\n}", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec\n\nvar UNASSIGNED = -1\nvar GB18030_CODE = -2\nvar SEQ_START = -10\nvar NODE_START = -1000\nvar UNASSIGNED_NODE = new Array(0x100)\nvar DEF_CHAR = -1\n\nfor (var i = 0; i < 0x100; i++) { UNASSIGNED_NODE[i] = UNASSIGNED }\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec (codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName\n if (!codecOptions) { throw new Error(\"DBCS codec is called without the data.\") }\n if (!codecOptions.table) { throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\") }\n\n // Load tables.\n var mappingTable = codecOptions.table()\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = []\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0) // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here.\n this.decodeTableSeq = []\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++) { this._addDecodeChunk(mappingTable[i]) }\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === \"function\") {\n this.gb18030 = codecOptions.gb18030() // Load GB18030 ranges.\n\n // Add GB18030 common decode nodes.\n var commonThirdByteNodeIdx = this.decodeTables.length\n this.decodeTables.push(UNASSIGNED_NODE.slice(0))\n\n var commonFourthByteNodeIdx = this.decodeTables.length\n this.decodeTables.push(UNASSIGNED_NODE.slice(0))\n\n // Fill out the tree\n var firstByteNode = this.decodeTables[0]\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]\n for (var j = 0x30; j <= 0x39; j++) {\n if (secondByteNode[j] === UNASSIGNED) {\n secondByteNode[j] = NODE_START - commonThirdByteNodeIdx\n } else if (secondByteNode[j] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 2\")\n }\n\n var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]\n for (var k = 0x81; k <= 0xFE; k++) {\n if (thirdByteNode[k] === UNASSIGNED) {\n thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx\n } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n continue\n } else if (thirdByteNode[k] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 3\")\n }\n\n var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]\n for (var l = 0x30; l <= 0x39; l++) {\n if (fourthByteNode[l] === UNASSIGNED) { fourthByteNode[l] = GB18030_CODE }\n }\n }\n }\n }\n }\n\n this.defaultCharUnicode = iconv.defaultCharUnicode\n\n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = []\n\n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = []\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {}\n if (codecOptions.encodeSkipVals) {\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i]\n if (typeof val === \"number\") { skipEncodeChars[val] = true } else {\n for (var j = val.from; j <= val.to; j++) { skipEncodeChars[j] = true }\n }\n }\n }\n\n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars)\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd) {\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]) }\n }\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0][\"?\"]\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0)\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder\nDBCSCodec.prototype.decoder = DBCSDecoder\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function (addr) {\n var bytes = []\n for (; addr > 0; addr >>>= 8) { bytes.push(addr & 0xFF) }\n if (bytes.length == 0) { bytes.push(0) }\n\n var node = this.decodeTables[0]\n for (var i = bytes.length - 1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]]\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0))\n } else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val]\n } else { throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16)) }\n }\n return node\n}\n\nDBCSCodec.prototype._addDecodeChunk = function (chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16)\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr)\n curAddr = curAddr & 0xFF\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k]\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++)\n if (code >= 0xD800 && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++)\n if (codeTrail >= 0xDC00 && codeTrail < 0xE000) { writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00) } else { throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]) }\n } else if (code > 0x0FF0 && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2\n var seq = []\n for (var m = 0; m < len; m++) { seq.push(part.charCodeAt(l++)) } // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length\n this.decodeTableSeq.push(seq)\n } else { writeTable[curAddr++] = code } // Basic char\n }\n } else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1\n for (var l = 0; l < part; l++) { writeTable[curAddr++] = charCode++ }\n } else { throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]) }\n }\n if (curAddr > 0xFF) { throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr) }\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function (uCode) {\n var high = uCode >> 8 // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined) {\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0)\n } // Create bucket on demand.\n return this.encodeTable[high]\n}\n\nDBCSCodec.prototype._setEncodeChar = function (uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode)\n var low = uCode & 0xFF\n if (bucket[low] <= SEQ_START) { this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode } // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED) { bucket[low] = dbcsCode }\n}\n\nDBCSCodec.prototype._setEncodeSequence = function (seq, dbcsCode) {\n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0]\n var bucket = this._getEncodeBucket(uCode)\n var low = uCode & 0xFF\n\n var node\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START - bucket[low]]\n } else {\n // There was no sequence object - allocate a new one.\n node = {}\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low] // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length\n this.encodeTableSeq.push(node)\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length - 1; j++) {\n var oldVal = node[uCode]\n if (typeof oldVal === \"object\") { node = oldVal } else {\n node = node[uCode] = {}\n if (oldVal !== undefined) { node[DEF_CHAR] = oldVal }\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length - 1]\n node[uCode] = dbcsCode\n}\n\nDBCSCodec.prototype._fillEncodeTable = function (nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx]\n var hasValues = false\n var subNodeEmpty = {}\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i]\n var mbCode = prefix + i\n if (skipEncodeChars[mbCode]) { continue }\n\n if (uCode >= 0) {\n this._setEncodeChar(uCode, mbCode)\n hasValues = true\n } else if (uCode <= NODE_START) {\n var subNodeIdx = NODE_START - uCode\n if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030).\n var newPrefix = (mbCode << 8) >>> 0 // NOTE: '>>> 0' keeps 32-bit num positive.\n if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { hasValues = true } else { subNodeEmpty[subNodeIdx] = true }\n }\n } else if (uCode <= SEQ_START) {\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode)\n hasValues = true\n }\n }\n return hasValues\n}\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder (options, codec) {\n // Encoder state\n this.leadSurrogate = -1\n this.seqObj = undefined\n\n // Static data\n this.encodeTable = codec.encodeTable\n this.encodeTableSeq = codec.encodeTableSeq\n this.defaultCharSingleByte = codec.defCharSB\n this.gb18030 = codec.gb18030\n}\n\nDBCSEncoder.prototype.write = function (str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3))\n var leadSurrogate = this.leadSurrogate\n var seqObj = this.seqObj\n var nextChar = -1\n var i = 0; var j = 0\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break\n var uCode = str.charCodeAt(i++)\n } else {\n var uCode = nextChar\n nextChar = -1\n }\n\n // 1. Handle surrogates.\n if (uCode >= 0xD800 && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode\n continue\n } else {\n leadSurrogate = uCode\n // Double lead surrogate found.\n uCode = UNASSIGNED\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00)\n leadSurrogate = -1\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED\n }\n }\n } else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED // Write an error, then current char.\n leadSurrogate = -1\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode]\n if (typeof resCode === \"object\") { // Sequence continues.\n seqObj = resCode\n continue\n } else if (typeof resCode === \"number\") { // Sequence finished. Write it.\n dbcsCode = resCode\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR]\n if (resCode !== undefined) {\n dbcsCode = resCode // Found. Write it.\n nextChar = uCode // Current character will be written too in the next iteration.\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined\n } else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8]\n if (subtable !== undefined) { dbcsCode = subtable[uCode & 0xFF] }\n\n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]\n continue\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode)\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx])\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10\n newBuf[j++] = 0x30 + dbcsCode\n continue\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED) { dbcsCode = this.defaultCharSingleByte }\n\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode\n } else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8 // high byte\n newBuf[j++] = dbcsCode & 0xFF // low byte\n } else if (dbcsCode < 0x1000000) {\n newBuf[j++] = dbcsCode >> 16\n newBuf[j++] = (dbcsCode >> 8) & 0xFF\n newBuf[j++] = dbcsCode & 0xFF\n } else {\n newBuf[j++] = dbcsCode >>> 24\n newBuf[j++] = (dbcsCode >>> 16) & 0xFF\n newBuf[j++] = (dbcsCode >>> 8) & 0xFF\n newBuf[j++] = dbcsCode & 0xFF\n }\n }\n\n this.seqObj = seqObj\n this.leadSurrogate = leadSurrogate\n return newBuf.slice(0, j)\n}\n\nDBCSEncoder.prototype.end = function () {\n if (this.leadSurrogate === -1 && this.seqObj === undefined) { return } // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10); var j = 0\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR]\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode\n } else {\n newBuf[j++] = dbcsCode >> 8 // high byte\n newBuf[j++] = dbcsCode & 0xFF // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte\n this.leadSurrogate = -1\n }\n\n return newBuf.slice(0, j)\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder (options, codec) {\n // Decoder state\n this.nodeIdx = 0\n this.prevBytes = []\n\n // Static data\n this.decodeTables = codec.decodeTables\n this.decodeTableSeq = codec.decodeTableSeq\n this.defaultCharUnicode = codec.defaultCharUnicode\n this.gb18030 = codec.gb18030\n}\n\nDBCSDecoder.prototype.write = function (buf) {\n var newBuf = Buffer.alloc(buf.length * 2)\n var nodeIdx = this.nodeIdx\n var prevBytes = this.prevBytes; var prevOffset = this.prevBytes.length\n var seqStart = -this.prevBytes.length // idx of the start of current parsed sequence.\n var uCode\n\n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte]\n\n if (uCode >= 0) {\n // Normal character, just use it.\n } else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n uCode = this.defaultCharUnicode.charCodeAt(0)\n i = seqStart // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n } else if (uCode === GB18030_CODE) {\n if (i >= 3) {\n var ptr = (buf[i - 3] - 0x81) * 12600 + (buf[i - 2] - 0x30) * 1260 + (buf[i - 1] - 0x81) * 10 + (curByte - 0x30)\n } else {\n var ptr = (prevBytes[i - 3 + prevOffset] - 0x81) * 12600 +\n (((i - 2 >= 0) ? buf[i - 2] : prevBytes[i - 2 + prevOffset]) - 0x30) * 1260 +\n (((i - 1 >= 0) ? buf[i - 1] : prevBytes[i - 1 + prevOffset]) - 0x81) * 10 +\n (curByte - 0x30)\n }\n var idx = findIdx(this.gb18030.gbChars, ptr)\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]\n } else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode\n continue\n } else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode]\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k]\n newBuf[j++] = uCode & 0xFF\n newBuf[j++] = uCode >> 8\n }\n uCode = seq[seq.length - 1]\n } else { throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte) }\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode >= 0x10000) {\n uCode -= 0x10000\n var uCodeLead = 0xD800 | (uCode >> 10)\n newBuf[j++] = uCodeLead & 0xFF\n newBuf[j++] = uCodeLead >> 8\n\n uCode = 0xDC00 | (uCode & 0x3FF)\n }\n newBuf[j++] = uCode & 0xFF\n newBuf[j++] = uCode >> 8\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i + 1\n }\n\n this.nodeIdx = nodeIdx\n this.prevBytes = (seqStart >= 0)\n ? Array.prototype.slice.call(buf, seqStart)\n : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf))\n\n return newBuf.slice(0, j).toString(\"ucs2\")\n}\n\nDBCSDecoder.prototype.end = function () {\n var ret = \"\"\n\n // Try to parse all remaining chars.\n while (this.prevBytes.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode\n var bytesArr = this.prevBytes.slice(1)\n\n // Parse remaining as usual.\n this.prevBytes = []\n this.nodeIdx = 0\n if (bytesArr.length > 0) { ret += this.write(bytesArr) }\n }\n\n this.prevBytes = []\n this.nodeIdx = 0\n return ret\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx (table, val) {\n if (table[0] > val) { return -1 }\n\n var l = 0; var r = table.length\n while (l < r - 1) { // always table[l] <= val < table[r]\n var mid = l + ((r - l + 1) >> 1)\n if (table[mid] <= val) { l = mid } else { r = mid }\n }\n return l\n}\n", "[\n[\"0\",\"\\u0000\",128],\n[\"a1\",\"\uFF61\",62],\n[\"8140\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\"],\n[\"8180\",\"\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"81b8\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"81c8\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"81da\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"81f0\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"81fc\",\"\u25EF\"],\n[\"824f\",\"\uFF10\",9],\n[\"8260\",\"\uFF21\",25],\n[\"8281\",\"\uFF41\",25],\n[\"829f\",\"\u3041\",82],\n[\"8340\",\"\u30A1\",62],\n[\"8380\",\"\u30E0\",22],\n[\"839f\",\"\u0391\",16,\"\u03A3\",6],\n[\"83bf\",\"\u03B1\",16,\"\u03C3\",6],\n[\"8440\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"8470\",\"\u0430\",5,\"\u0451\u0436\",7],\n[\"8480\",\"\u043E\",17],\n[\"849f\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"8740\",\"\u2460\",19,\"\u2160\",9],\n[\"875f\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"877e\",\"\u337B\"],\n[\"8780\",\"\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"889f\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"8940\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\"],\n[\"8980\",\"\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"8a40\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\"],\n[\"8a80\",\"\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"8b40\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\"],\n[\"8b80\",\"\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"8c40\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\"],\n[\"8c80\",\"\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"8d40\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\"],\n[\"8d80\",\"\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"8e40\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\"],\n[\"8e80\",\"\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"8f40\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\"],\n[\"8f80\",\"\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"9040\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\"],\n[\"9080\",\"\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"9140\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\"],\n[\"9180\",\"\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"9240\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\"],\n[\"9280\",\"\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"9340\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\"],\n[\"9380\",\"\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"9440\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\"],\n[\"9480\",\"\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"9540\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\"],\n[\"9580\",\"\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"9640\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\"],\n[\"9680\",\"\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"9740\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\"],\n[\"9780\",\"\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"9840\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"989f\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"9940\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\"],\n[\"9980\",\"\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"9a40\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\"],\n[\"9a80\",\"\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"9b40\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\"],\n[\"9b80\",\"\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"9c40\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\"],\n[\"9c80\",\"\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"9d40\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\"],\n[\"9d80\",\"\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"9e40\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\"],\n[\"9e80\",\"\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"9f40\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\"],\n[\"9f80\",\"\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"e040\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\"],\n[\"e080\",\"\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e140\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\"],\n[\"e180\",\"\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e240\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\"],\n[\"e280\",\"\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e340\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\"],\n[\"e380\",\"\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e440\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\"],\n[\"e480\",\"\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e540\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\"],\n[\"e580\",\"\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"e640\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\"],\n[\"e680\",\"\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"e740\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\"],\n[\"e780\",\"\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"e840\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\"],\n[\"e880\",\"\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"e940\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\"],\n[\"e980\",\"\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"ea40\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\"],\n[\"ea80\",\"\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"ed40\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\"],\n[\"ed80\",\"\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"ee40\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\"],\n[\"ee80\",\"\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"eeef\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"f040\",\"\uE000\",62],\n[\"f080\",\"\uE03F\",124],\n[\"f140\",\"\uE0BC\",62],\n[\"f180\",\"\uE0FB\",124],\n[\"f240\",\"\uE178\",62],\n[\"f280\",\"\uE1B7\",124],\n[\"f340\",\"\uE234\",62],\n[\"f380\",\"\uE273\",124],\n[\"f440\",\"\uE2F0\",62],\n[\"f480\",\"\uE32F\",124],\n[\"f540\",\"\uE3AC\",62],\n[\"f580\",\"\uE3EB\",124],\n[\"f640\",\"\uE468\",62],\n[\"f680\",\"\uE4A7\",124],\n[\"f740\",\"\uE524\",62],\n[\"f780\",\"\uE563\",124],\n[\"f840\",\"\uE5E0\",62],\n[\"f880\",\"\uE61F\",124],\n[\"f940\",\"\uE69C\"],\n[\"fa40\",\"\u2170\",9,\"\u2160\",9,\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\"],\n[\"fa80\",\"\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\"],\n[\"fb40\",\"\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\"],\n[\"fb80\",\"\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\"],\n[\"fc40\",\"\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"8ea1\",\"\uFF61\",62],\n[\"a1a1\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\"],\n[\"a2a1\",\"\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2ba\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"a2ca\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"a2dc\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"a2f2\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"a2fe\",\"\u25EF\"],\n[\"a3b0\",\"\uFF10\",9],\n[\"a3c1\",\"\uFF21\",25],\n[\"a3e1\",\"\uFF41\",25],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a8a1\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"ada1\",\"\u2460\",19,\"\u2160\",9],\n[\"adc0\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"addf\",\"\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"b0a1\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"b1a1\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\"],\n[\"b2a1\",\"\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"b3a1\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\"],\n[\"b4a1\",\"\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"b5a1\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\"],\n[\"b6a1\",\"\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"b7a1\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\"],\n[\"b8a1\",\"\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"b9a1\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\"],\n[\"baa1\",\"\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"bba1\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\"],\n[\"bca1\",\"\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"bda1\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\"],\n[\"bea1\",\"\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"bfa1\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\"],\n[\"c0a1\",\"\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"c1a1\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\"],\n[\"c2a1\",\"\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"c3a1\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\"],\n[\"c4a1\",\"\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"c5a1\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\"],\n[\"c6a1\",\"\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"c7a1\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\"],\n[\"c8a1\",\"\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"c9a1\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\"],\n[\"caa1\",\"\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"cba1\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\"],\n[\"cca1\",\"\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"cda1\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\"],\n[\"cea1\",\"\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"cfa1\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"d0a1\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"d1a1\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\"],\n[\"d2a1\",\"\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"d3a1\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\"],\n[\"d4a1\",\"\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"d5a1\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\"],\n[\"d6a1\",\"\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"d7a1\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\"],\n[\"d8a1\",\"\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"d9a1\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\"],\n[\"daa1\",\"\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"dba1\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\"],\n[\"dca1\",\"\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"dda1\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\"],\n[\"dea1\",\"\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"dfa1\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\"],\n[\"e0a1\",\"\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e1a1\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\"],\n[\"e2a1\",\"\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e3a1\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\"],\n[\"e4a1\",\"\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e5a1\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\"],\n[\"e6a1\",\"\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e7a1\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\"],\n[\"e8a1\",\"\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e9a1\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\"],\n[\"eaa1\",\"\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"eba1\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\"],\n[\"eca1\",\"\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"eda1\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\"],\n[\"eea1\",\"\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"efa1\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\"],\n[\"f0a1\",\"\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"f1a1\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\"],\n[\"f2a1\",\"\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"f3a1\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\"],\n[\"f4a1\",\"\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"f9a1\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\"],\n[\"faa1\",\"\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"fba1\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\"],\n[\"fca1\",\"\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"fcf1\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"8fa2af\",\"\u02D8\u02C7\u00B8\u02D9\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\"],\n[\"8fa2c2\",\"\u00A1\u00A6\u00BF\"],\n[\"8fa2eb\",\"\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\"],\n[\"8fa6e1\",\"\u0386\u0388\u0389\u038A\u03AA\"],\n[\"8fa6e7\",\"\u038C\"],\n[\"8fa6e9\",\"\u038E\u03AB\"],\n[\"8fa6ec\",\"\u038F\"],\n[\"8fa6f1\",\"\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE\"],\n[\"8fa7c2\",\"\u0402\",10,\"\u040E\u040F\"],\n[\"8fa7f2\",\"\u0452\",10,\"\u045E\u045F\"],\n[\"8fa9a1\",\"\u00C6\u0110\"],\n[\"8fa9a4\",\"\u0126\"],\n[\"8fa9a6\",\"\u0132\"],\n[\"8fa9a8\",\"\u0141\u013F\"],\n[\"8fa9ab\",\"\u014A\u00D8\u0152\"],\n[\"8fa9af\",\"\u0166\u00DE\"],\n[\"8fa9c1\",\"\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE\"],\n[\"8faaa1\",\"\u00C1\u00C0\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8\u00CB\u00CA\u011A\u0116\u0112\u0118\"],\n[\"8faaba\",\"\u011C\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD\u0178\u0176\u0179\u017D\u017B\"],\n[\"8faba1\",\"\u00E1\u00E0\u00E4\u00E2\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\"],\n[\"8fabbd\",\"\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\"],\n[\"8fabc5\",\"\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177\u017A\u017E\u017C\"],\n[\"8fb0a1\",\"\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84\"],\n[\"8fb1a1\",\"\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090\"],\n[\"8fb2a1\",\"\u5092\u5093\u5094\u5096\u509B\u509C\u509E\",4,\"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2\"],\n[\"8fb3a1\",\"\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B\"],\n[\"8fb4a1\",\"\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F\"],\n[\"8fb5a1\",\"\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\"],\n[\"8fb6a1\",\"\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D\",5,\"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4\",4,\"\u56F1\u56EB\u56ED\"],\n[\"8fb7a1\",\"\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D\",4,\"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1\"],\n[\"8fb8a1\",\"\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D\"],\n[\"8fb9a1\",\"\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\"],\n[\"8fbaa1\",\"\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\",4,\"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69\"],\n[\"8fbba1\",\"\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4\"],\n[\"8fbca1\",\"\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\",4,\"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67\"],\n[\"8fbda1\",\"\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\",4,\"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\"],\n[\"8fbea1\",\"\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110\",4,\"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5\"],\n[\"8fbfa1\",\"\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375\"],\n[\"8fc0a1\",\"\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF\"],\n[\"8fc1a1\",\"\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D\"],\n[\"8fc2a1\",\"\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D\"],\n[\"8fc3a1\",\"\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E\",4,\"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF\"],\n[\"8fc4a1\",\"\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32\"],\n[\"8fc5a1\",\"\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\"],\n[\"8fc6a1\",\"\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6\"],\n[\"8fc7a1\",\"\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E\"],\n[\"8fc8a1\",\"\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA\"],\n[\"8fc9a1\",\"\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094\",4,\"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103\",4,\"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160\"],\n[\"8fcaa1\",\"\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB\"],\n[\"8fcba1\",\"\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD\"],\n[\"8fcca1\",\"\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428\",9,\"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506\"],\n[\"8fcda1\",\"\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579\",5,\"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639\"],\n[\"8fcea1\",\"\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2\",6,\"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762\"],\n[\"8fcfa1\",\"\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3\"],\n[\"8fd0a1\",\"\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE\"],\n[\"8fd1a1\",\"\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\"],\n[\"8fd2a1\",\"\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\",5],\n[\"8fd3a1\",\"\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D\"],\n[\"8fd4a1\",\"\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2\",4,\"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D\"],\n[\"8fd5a1\",\"\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\"],\n[\"8fd6a1\",\"\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246\"],\n[\"8fd7a1\",\"\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378\"],\n[\"8fd8a1\",\"\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3\"],\n[\"8fd9a1\",\"\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F\",4,\"\u8556\u8559\u855C\",6,\"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\"],\n[\"8fdaa1\",\"\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660\",4,\"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723\"],\n[\"8fdba1\",\"\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783\",6,\"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835\"],\n[\"8fdca1\",\"\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\",4,\"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A\"],\n[\"8fdda1\",\"\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4\",4,\"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\"],\n[\"8fdea1\",\"\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42\",4,\"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86\"],\n[\"8fdfa1\",\"\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22\"],\n[\"8fe0a1\",\"\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41\"],\n[\"8fe1a1\",\"\u8F43\u8F47\u8F4F\u8F51\",4,\"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\"],\n[\"8fe2a1\",\"\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF\"],\n[\"8fe3a1\",\"\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC\",5,\"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275\",4,\"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297\"],\n[\"8fe4a1\",\"\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF\",4,\"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376\"],\n[\"8fe5a1\",\"\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9\",4,\"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579\"],\n[\"8fe6a1\",\"\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702\"],\n[\"8fe7a1\",\"\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826\"],\n[\"8fe8a1\",\"\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931\",4,\"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5\"],\n[\"8fe9a1\",\"\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF\",4],\n[\"8feaa1\",\"\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A\",4,\"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8\"],\n[\"8feba1\",\"\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\",4,\"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B\"],\n[\"8feca1\",\"\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5\"],\n[\"8feda1\",\"\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43\",4,\"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\",4,\"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5\"]\n]\n", "[\n[\"0\",\"\\u0000\",127,\"\u20AC\"],\n[\"8140\",\"\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A\",5,\"\u4E72\u4E74\",9,\"\u4E7F\",6,\"\u4E87\u4E8A\"],\n[\"8180\",\"\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02\",6,\"\u4F0B\u4F0C\u4F12\",4,\"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\",4,\"\u4F44\u4F45\u4F47\",5,\"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\"],\n[\"8240\",\"\u4FA4\u4FAB\u4FAD\u4FB0\",4,\"\u4FB6\",8,\"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2\",4,\"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF\",11],\n[\"8280\",\"\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F\",10,\"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050\",4,\"\u5056\u5057\u5058\u5059\u505B\u505D\",7,\"\u5066\",5,\"\u506D\",8,\"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E\",20,\"\u50A4\u50A6\u50AA\u50AB\u50AD\",4,\"\u50B3\",6,\"\u50BC\"],\n[\"8340\",\"\u50BD\",17,\"\u50D0\",5,\"\u50D7\u50D8\u50D9\u50DB\",10,\"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6\",4,\"\u50FC\",9,\"\u5108\"],\n[\"8380\",\"\u5109\u510A\u510C\",5,\"\u5113\",13,\"\u5122\",28,\"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D\",4,\"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6\",4,\"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\",5],\n[\"8440\",\"\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5\",5,\"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244\",5,\"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258\"],\n[\"8480\",\"\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273\",9,\"\u527E\u5280\u5283\",4,\"\u5289\",6,\"\u5291\u5292\u5294\",6,\"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\",9,\"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9\",5,\"\u52E0\u52E1\u52E2\u52E3\u52E5\",10,\"\u52F1\",7,\"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E\"],\n[\"8540\",\"\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F\",9,\"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F\"],\n[\"8580\",\"\u5390\",4,\"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\",6,\"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\",4,\"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D\",4,\"\u5463\u5465\u5467\u5469\",7,\"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1\"],\n[\"8640\",\"\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\",4,\"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4\",5,\"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A\",4,\"\u5512\u5513\u5515\",5,\"\u551C\u551D\u551E\u551F\u5521\u5525\u5526\"],\n[\"8680\",\"\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B\",4,\"\u5551\u5552\u5553\u5554\u5557\",4,\"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F\",5,\"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0\",6,\"\u55A8\",8,\"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF\",4,\"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7\",4,\"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8\",4,\"\u55FF\u5602\u5603\u5604\u5605\"],\n[\"8740\",\"\u5606\u5607\u560A\u560B\u560D\u5610\",7,\"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640\",11,\"\u564F\",4,\"\u5655\u5656\u565A\u565B\u565D\",4],\n[\"8780\",\"\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D\",7,\"\u5687\",6,\"\u5690\u5691\u5692\u5694\",14,\"\u56A4\",10,\"\u56B0\",6,\"\u56B8\u56B9\u56BA\u56BB\u56BD\",12,\"\u56CB\",8,\"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5\",5,\"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B\",6],\n[\"8840\",\"\u5712\",9,\"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734\",4,\"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752\",4,\"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780\"],\n[\"8880\",\"\u5781\u5787\u5788\u5789\u578A\u578D\",4,\"\u5794\",6,\"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9\",8,\"\u57C4\",6,\"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\",7,\"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825\",4,\"\u582B\",4,\"\u5831\u5832\u5833\u5834\u5836\",7],\n[\"8940\",\"\u583E\",5,\"\u5845\",6,\"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859\",4,\"\u585F\",5,\"\u5866\",4,\"\u586D\",16,\"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C\"],\n[\"8980\",\"\u588D\",4,\"\u5894\",4,\"\u589B\u589C\u589D\u58A0\",7,\"\u58AA\",17,\"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\",10,\"\u58D2\u58D3\u58D4\u58D6\",13,\"\u58E5\",5,\"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA\",7,\"\u5903\u5905\u5906\u5908\",4,\"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B\"],\n[\"8a40\",\"\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B\",4,\"\u5961\u5963\u5964\u5966\",12,\"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6\"],\n[\"8a80\",\"\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3\",5,\"\u59BA\u59BC\u59BD\u59BF\",6,\"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\",4,\"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED\",11,\"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A\",6,\"\u5A33\u5A35\u5A37\",4,\"\u5A3D\u5A3E\u5A3F\u5A41\",4,\"\u5A47\u5A48\u5A4B\",9,\"\u5A56\u5A57\u5A58\u5A59\u5A5B\",5],\n[\"8b40\",\"\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B\",8,\"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80\",17,\"\u5A93\",6,\"\u5A9C\",13,\"\u5AAB\u5AAC\"],\n[\"8b80\",\"\u5AAD\",4,\"\u5AB4\u5AB6\u5AB7\u5AB9\",4,\"\u5ABF\u5AC0\u5AC3\",5,\"\u5ACA\u5ACB\u5ACD\",4,\"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC\",4,\"\u5AF2\",22,\"\u5B0A\",11,\"\u5B18\",25,\"\u5B33\u5B35\u5B36\u5B38\",7,\"\u5B41\",6],\n[\"8c40\",\"\u5B48\",7,\"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF\"],\n[\"8c80\",\"\u5BD1\u5BD4\",8,\"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9\",4,\"\u5BEF\u5BF1\",6,\"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67\",6,\"\u5C70\u5C72\",6,\"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83\",4,\"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D\",4,\"\u5CA4\",4],\n[\"8d40\",\"\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5\",5,\"\u5CCC\",5,\"\u5CD3\",5,\"\u5CDA\",6,\"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1\",9,\"\u5CFC\",4],\n[\"8d80\",\"\u5D01\u5D04\u5D05\u5D08\",5,\"\u5D0F\",4,\"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F\",4,\"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F\",4,\"\u5D35\",7,\"\u5D3F\",7,\"\u5D48\u5D49\u5D4D\",10,\"\u5D59\u5D5A\u5D5C\u5D5E\",10,\"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75\",12,\"\u5D83\",21,\"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0\"],\n[\"8e40\",\"\u5DA1\",21,\"\u5DB8\",12,\"\u5DC6\",6,\"\u5DCE\",12,\"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED\"],\n[\"8e80\",\"\u5DF0\u5DF5\u5DF6\u5DF8\",4,\"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\",7,\"\u5E28\",4,\"\u5E2F\u5E30\u5E32\",4,\"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46\",5,\"\u5E4D\",6,\"\u5E56\",4,\"\u5E5C\u5E5D\u5E5F\u5E60\u5E63\",14,\"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8\",4,\"\u5EAE\",4,\"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF\",6],\n[\"8f40\",\"\u5EC6\u5EC7\u5EC8\u5ECB\",5,\"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC\",11,\"\u5EE9\u5EEB\",8,\"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24\"],\n[\"8f80\",\"\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\",6,\"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41\",14,\"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2\",5,\"\u5FA9\u5FAB\u5FAC\u5FAF\",5,\"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\",4,\"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007\"],\n[\"9040\",\"\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030\",4,\"\u6036\",4,\"\u603D\u603E\u6040\u6044\",6,\"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080\"],\n[\"9080\",\"\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD\",7,\"\u60C7\u60C8\u60C9\u60CC\",4,\"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1\",4,\"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\",4,\"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110\",4,\"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C\",18,\"\u6140\",6],\n[\"9140\",\"\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156\",6,\"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169\",6,\"\u6171\u6172\u6173\u6174\u6176\u6178\",18,\"\u618C\u618D\u618F\",4,\"\u6195\"],\n[\"9180\",\"\u6196\",6,\"\u619E\",8,\"\u61AA\u61AB\u61AD\",9,\"\u61B8\",5,\"\u61BF\u61C0\u61C1\u61C3\",4,\"\u61C9\u61CC\",4,\"\u61D3\u61D5\",16,\"\u61E7\",13,\"\u61F6\",8,\"\u6200\",5,\"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238\",4,\"\u6242\u6244\u6245\u6246\u624A\"],\n[\"9240\",\"\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C\",6,\"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B\",5,\"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1\"],\n[\"9280\",\"\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333\",5,\"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356\",7,\"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399\",6,\"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0\"],\n[\"9340\",\"\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7\",6,\"\u63DF\u63E2\u63E4\",4,\"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406\",4,\"\u640D\u640E\u6411\u6412\u6415\",5,\"\u641D\u641F\u6422\u6423\u6424\"],\n[\"9380\",\"\u6425\u6427\u6428\u6429\u642B\u642E\",5,\"\u6435\",4,\"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B\",6,\"\u6453\u6455\u6456\u6457\u6459\",4,\"\u645F\",7,\"\u6468\u646A\u646B\u646C\u646E\",9,\"\u647B\",6,\"\u6483\u6486\u6488\",8,\"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F\",4,\"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\",6,\"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA\"],\n[\"9440\",\"\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7\",24,\"\u6501\",7,\"\u650A\",7,\"\u6513\",4,\"\u6519\",8],\n[\"9480\",\"\u6522\u6523\u6524\u6526\",4,\"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540\",4,\"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578\",14,\"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\",7,\"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\",7,\"\u65E1\u65E3\u65E4\u65EA\u65EB\"],\n[\"9540\",\"\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB\",4,\"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637\",4,\"\u663D\u663F\u6640\u6642\u6644\",6,\"\u664D\u664E\u6650\u6651\u6658\"],\n[\"9580\",\"\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669\",4,\"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698\",4,\"\u669E\",8,\"\u66A9\",4,\"\u66AF\",4,\"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\",25,\"\u66DA\u66DE\",7,\"\u66E7\u66E8\u66EA\",5,\"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703\"],\n[\"9640\",\"\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720\",5,\"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757\",4,\"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776\"],\n[\"9680\",\"\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9\",7,\"\u67C2\u67C5\",9,\"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5\",7,\"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818\",4,\"\u681E\u681F\u6820\u6822\",6,\"\u682B\",6,\"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856\",5],\n[\"9740\",\"\u685C\u685D\u685E\u685F\u686A\u686C\",7,\"\u6875\u6878\",8,\"\u6882\u6884\u6887\",7,\"\u6890\u6891\u6892\u6894\u6895\u6896\u6898\",9,\"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8\"],\n[\"9780\",\"\u68B9\",6,\"\u68C1\u68C3\",5,\"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB\",4,\"\u68E1\u68E2\u68E4\",9,\"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906\",4,\"\u690C\u690F\u6911\u6913\",11,\"\u6921\u6922\u6923\u6925\",7,\"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943\",16,\"\u6955\u6956\u6958\u6959\u695B\u695C\u695F\"],\n[\"9840\",\"\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972\",4,\"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E\",5,\"\u6996\u6997\u6999\u699A\u699D\",9,\"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\"],\n[\"9880\",\"\u69BE\u69BF\u69C0\u69C2\",7,\"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5\",5,\"\u69DC\u69DD\u69DE\u69E1\",11,\"\u69EE\u69EF\u69F0\u69F1\u69F3\",9,\"\u69FE\u6A00\",9,\"\u6A0B\",11,\"\u6A19\",5,\"\u6A20\u6A22\",5,\"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36\",6,\"\u6A3F\",4,\"\u6A45\u6A46\u6A48\",7,\"\u6A51\",6,\"\u6A5A\"],\n[\"9940\",\"\u6A5C\",4,\"\u6A62\u6A63\u6A64\u6A66\",10,\"\u6A72\",6,\"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85\",8,\"\u6A8F\u6A92\",4,\"\u6A98\",7,\"\u6AA1\",5],\n[\"9980\",\"\u6AA7\u6AA8\u6AAA\u6AAD\",114,\"\u6B25\u6B26\u6B28\",6],\n[\"9a40\",\"\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D\",11,\"\u6B5A\",7,\"\u6B68\u6B69\u6B6B\",13,\"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88\"],\n[\"9a80\",\"\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C\",4,\"\u6BA2\",7,\"\u6BAB\",7,\"\u6BB6\u6BB8\",6,\"\u6BC0\u6BC3\u6BC4\u6BC6\",4,\"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC\",4,\"\u6BE2\",7,\"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\",6,\"\u6C08\",4,\"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B\",4,\"\u6C51\u6C52\u6C53\u6C56\u6C58\"],\n[\"9b40\",\"\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B\",4,\"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8\"],\n[\"9b80\",\"\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F\",5,\"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D\",4,\"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96\",4,\"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9\",5,\"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA\"],\n[\"9c40\",\"\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD\",7,\"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35\"],\n[\"9c80\",\"\u6E36\u6E37\u6E39\u6E3B\",7,\"\u6E45\",7,\"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60\",10,\"\u6E6C\u6E6D\u6E6F\",14,\"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A\",4,\"\u6E91\",6,\"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\",5],\n[\"9d40\",\"\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA\",7,\"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A\",4,\"\u6F10\u6F11\u6F12\u6F16\",9,\"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37\",6,\"\u6F3F\u6F40\u6F41\u6F42\"],\n[\"9d80\",\"\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E\",9,\"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\",5,\"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\",6,\"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F\",12,\"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2\",4,\"\u6FA8\",10,\"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\",5,\"\u6FC1\u6FC3\",5,\"\u6FCA\",6,\"\u6FD3\",10,\"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5\"],\n[\"9e40\",\"\u6FE6\",7,\"\u6FF0\",32,\"\u7012\",7,\"\u701C\",6,\"\u7024\",6],\n[\"9e80\",\"\u702B\",9,\"\u7036\u7037\u7038\u703A\",17,\"\u704D\u704E\u7050\",13,\"\u705F\",11,\"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E\",12,\"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB\",12,\"\u70DA\"],\n[\"9f40\",\"\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0\",6,\"\u70F8\u70FA\u70FB\u70FC\u70FE\",10,\"\u710B\",4,\"\u7111\u7112\u7114\u7117\u711B\",10,\"\u7127\",7,\"\u7132\u7133\u7134\"],\n[\"9f80\",\"\u7135\u7137\",13,\"\u7146\u7147\u7148\u7149\u714B\u714D\u714F\",12,\"\u715D\u715F\",4,\"\u7165\u7169\",4,\"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E\",5,\"\u7185\",4,\"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A\",4,\"\u71A1\",6,\"\u71A9\u71AA\u71AB\u71AD\",5,\"\u71B4\u71B6\u71B7\u71B8\u71BA\",8,\"\u71C4\",9,\"\u71CF\",4],\n[\"a040\",\"\u71D6\",9,\"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8\",5,\"\u71EF\",9,\"\u71FA\",11,\"\u7207\",19],\n[\"a080\",\"\u721B\u721C\u721E\",9,\"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240\",6,\"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285\",4,\"\u728C\u728E\u7290\u7291\u7293\",11,\"\u72A0\",11,\"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA\",6,\"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\"],\n[\"a1a1\",\"\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",7,\"\u3016\u3017\u3010\u3011\u00B1\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2a1\",\"\u2170\",9],\n[\"a2b1\",\"\u2488\",19,\"\u2474\",19,\"\u2460\",9],\n[\"a2e5\",\"\u3220\",9],\n[\"a2f1\",\"\u2160\",11],\n[\"a3a1\",\"\uFF01\uFF02\uFF03\uFFE5\uFF05\",88,\"\uFFE3\"],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a6e0\",\"\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\"],\n[\"a6ee\",\"\uFE3B\uFE3C\uFE37\uFE38\uFE31\"],\n[\"a6f4\",\"\uFE33\uFE34\"],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a840\",\"\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550\",35,\"\u2581\",6],\n[\"a880\",\"\u2588\",7,\"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E\"],\n[\"a8a1\",\"\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\u01DC\u00FC\u00EA\u0251\"],\n[\"a8bd\",\"\u0144\u0148\"],\n[\"a8c0\",\"\u0261\"],\n[\"a8c5\",\"\u3105\",36],\n[\"a940\",\"\u3021\",8,\"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\"],\n[\"a959\",\"\u2121\u3231\"],\n[\"a95c\",\"\u2010\"],\n[\"a960\",\"\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49\",9,\"\uFE54\uFE55\uFE56\uFE57\uFE59\",8],\n[\"a980\",\"\uFE62\",4,\"\uFE68\uFE69\uFE6A\uFE6B\"],\n[\"a996\",\"\u3007\"],\n[\"a9a4\",\"\u2500\",75],\n[\"aa40\",\"\u72DC\u72DD\u72DF\u72E2\",5,\"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304\",5,\"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340\",8],\n[\"aa80\",\"\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358\",7,\"\u7361\",10,\"\u736E\u7370\u7371\"],\n[\"ab40\",\"\u7372\",11,\"\u737F\",4,\"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3\",5,\"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3\",4],\n[\"ab80\",\"\u73CB\u73CC\u73CE\u73D2\",6,\"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3\",4],\n[\"ac40\",\"\u73F8\",10,\"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411\",8,\"\u741C\",5,\"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437\",4,\"\u743D\u743E\u743F\u7440\u7442\",11],\n[\"ac80\",\"\u744E\",6,\"\u7456\u7458\u745D\u7460\",12,\"\u746E\u746F\u7471\",4,\"\u7478\u7479\u747A\"],\n[\"ad40\",\"\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491\",10,\"\u749D\u749F\",7,\"\u74AA\",15,\"\u74BB\",12],\n[\"ad80\",\"\u74C8\",9,\"\u74D3\",8,\"\u74DD\u74DF\u74E1\u74E5\u74E7\",6,\"\u74F0\u74F1\u74F2\"],\n[\"ae40\",\"\u74F3\u74F5\u74F8\",6,\"\u7500\u7501\u7502\u7503\u7505\",7,\"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520\",4,\"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558\"],\n[\"ae80\",\"\u755D\",7,\"\u7567\u7568\u7569\u756B\",6,\"\u7573\u7575\u7576\u7577\u757A\",4,\"\u7580\u7581\u7582\u7584\u7585\u7587\"],\n[\"af40\",\"\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6\",4,\"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607\"],\n[\"af80\",\"\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644\"],\n[\"b040\",\"\u7645\",6,\"\u764E\",5,\"\u7655\u7657\",4,\"\u765D\u765F\u7660\u7661\u7662\u7664\",6,\"\u766C\u766D\u766E\u7670\",7,\"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B\"],\n[\"b080\",\"\u769C\",7,\"\u76A5\",8,\"\u76AF\u76B0\u76B3\u76B5\",9,\"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\"],\n[\"b140\",\"\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0\",4,\"\u76E6\",7,\"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E\",10,\"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B\"],\n[\"b180\",\"\u772C\u772E\u7730\",4,\"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748\",7,\"\u7752\",7,\"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\"],\n[\"b240\",\"\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D\",11,\"\u777A\u777B\u777C\u7781\u7782\u7783\u7786\",5,\"\u778F\u7790\u7793\",11,\"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6\",4],\n[\"b280\",\"\u77BC\u77BE\u77C0\",12,\"\u77CE\",8,\"\u77D8\u77D9\u77DA\u77DD\",4,\"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316\"],\n[\"b340\",\"\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803\",5,\"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A\"],\n[\"b380\",\"\u785B\u785C\u785E\",11,\"\u786F\",7,\"\u7878\u7879\u787A\u787B\u787D\",6,\"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\"],\n[\"b440\",\"\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8\",7,\"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA\",9],\n[\"b480\",\"\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED\",4,\"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\",5,\"\u7902\u7903\u7904\u7906\",6,\"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\"],\n[\"b540\",\"\u790D\",5,\"\u7914\",9,\"\u791F\",4,\"\u7925\",14,\"\u7935\",4,\"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A\",8,\"\u7954\u7955\u7958\u7959\u7961\u7963\"],\n[\"b580\",\"\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970\",6,\"\u7979\u797B\",4,\"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\"],\n[\"b640\",\"\u7993\",6,\"\u799B\",11,\"\u79A8\",10,\"\u79B4\",4,\"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\",5,\"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA\"],\n[\"b680\",\"\u79EC\u79EE\u79F1\",6,\"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F\",4,\"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\"],\n[\"b740\",\"\u7A1D\u7A1F\u7A21\u7A22\u7A24\",14,\"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40\",5,\"\u7A47\",9,\"\u7A52\",4,\"\u7A58\",16],\n[\"b780\",\"\u7A69\",6,\"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\"],\n[\"b840\",\"\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\",4,\"\u7AB4\",10,\"\u7AC0\",10,\"\u7ACC\",9,\"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\",5,\"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\"],\n[\"b880\",\"\u7AF4\",4,\"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\"],\n[\"b940\",\"\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F\",5,\"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63\",10,\"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\",6,\"\u7B8E\u7B8F\"],\n[\"b980\",\"\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\",7,\"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\"],\n[\"ba40\",\"\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4\",4,\"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\",4,\"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF\",7,\"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10\",5,\"\u7C17\u7C18\u7C19\"],\n[\"ba80\",\"\u7C1A\",4,\"\u7C20\",5,\"\u7C28\u7C29\u7C2B\",12,\"\u7C39\",5,\"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\"],\n[\"bb40\",\"\u7C43\",9,\"\u7C4E\",36,\"\u7C75\",5,\"\u7C7E\",9],\n[\"bb80\",\"\u7C88\u7C8A\",6,\"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4\",4,\"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\"],\n[\"bc40\",\"\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\",6,\"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1\",6,\"\u7CE9\",5,\"\u7CF0\",7,\"\u7CF9\u7CFA\u7CFC\",13,\"\u7D0B\",5],\n[\"bc80\",\"\u7D11\",14,\"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\",6,\"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\"],\n[\"bd40\",\"\u7D37\",54,\"\u7D6F\",7],\n[\"bd80\",\"\u7D78\",32,\"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\"],\n[\"be40\",\"\u7D99\",12,\"\u7DA7\",6,\"\u7DAF\",42],\n[\"be80\",\"\u7DDA\",32,\"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB\"],\n[\"bf40\",\"\u7DFB\",62],\n[\"bf80\",\"\u7E3A\u7E3C\",4,\"\u7E42\",4,\"\u7E48\",21,\"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\"],\n[\"c040\",\"\u7E5E\",35,\"\u7E83\",23,\"\u7E9C\u7E9D\u7E9E\"],\n[\"c080\",\"\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\",6,\"\u7F43\u7F46\",9,\"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\"],\n[\"c140\",\"\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\",4,\"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82\",7,\"\u7F8B\u7F8D\u7F8F\",4,\"\u7F95\",4,\"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\",6,\"\u7FB1\"],\n[\"c180\",\"\u7FB3\",4,\"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF\",4,\"\u7FD6\u7FD7\u7FD9\",5,\"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\"],\n[\"c240\",\"\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4\",6,\"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B\",5,\"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057\"],\n[\"c280\",\"\u8059\u805B\",13,\"\u806B\",5,\"\u8072\",11,\"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\"],\n[\"c340\",\"\u807E\u8081\u8082\u8085\u8088\u808A\u808D\",5,\"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7\",4,\"\u80CF\",6,\"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B\"],\n[\"c380\",\"\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F\",12,\"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139\",4,\"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478\"],\n[\"c440\",\"\u8140\",5,\"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B\",4,\"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183\",4,\"\u8189\u818B\u818C\u818D\u818E\u8190\u8192\",5,\"\u8199\u819A\u819E\",4,\"\u81A4\u81A5\"],\n[\"c480\",\"\u81A7\u81A9\u81AB\",7,\"\u81B4\",5,\"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\",6,\"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81\"],\n[\"c540\",\"\u81D4\",14,\"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE\",4,\"\u81F5\",5,\"\u81FD\u81FF\u8203\u8207\",4,\"\u820E\u820F\u8211\u8213\u8215\",5,\"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F\"],\n[\"c580\",\"\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250\",7,\"\u8259\u825B\u825C\u825D\u825E\u8260\",7,\"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\"],\n[\"c640\",\"\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8\"],\n[\"c680\",\"\u82FA\u82FC\",4,\"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D\",9,\"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390\"],\n[\"c740\",\"\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A\",4,\"\u8353\u8355\",4,\"\u835D\u8362\u8370\",6,\"\u8379\u837A\u837E\",6,\"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\",6,\"\u83AC\u83AD\u83AE\"],\n[\"c780\",\"\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\"],\n[\"c840\",\"\u83EE\u83EF\u83F3\",4,\"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412\",5,\"\u8419\u841A\u841B\u841E\",5,\"\u8429\",7,\"\u8432\",5,\"\u8439\u843A\u843B\u843E\",7,\"\u8447\u8448\u8449\"],\n[\"c880\",\"\u844A\",6,\"\u8452\",4,\"\u8458\u845D\u845E\u845F\u8460\u8462\u8464\",4,\"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\"],\n[\"c940\",\"\u847D\",4,\"\u8483\u8484\u8485\u8486\u848A\u848D\u848F\",7,\"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2\",12,\"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\"],\n[\"c980\",\"\u84D8\",4,\"\u84DE\u84E1\u84E2\u84E4\u84E7\",4,\"\u84ED\u84EE\u84EF\u84F1\",10,\"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3\"],\n[\"ca40\",\"\u8503\",8,\"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522\",8,\"\u852D\",9,\"\u853E\",4,\"\u8544\u8545\u8546\u8547\u854B\",10],\n[\"ca80\",\"\u8557\u8558\u855A\u855B\u855C\u855D\u855F\",4,\"\u8565\u8566\u8567\u8569\",8,\"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\"],\n[\"cb40\",\"\u8582\u8583\u8586\u8588\",6,\"\u8590\",10,\"\u859D\",6,\"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1\",5,\"\u85B8\u85BA\",6,\"\u85C2\",6,\"\u85CA\",4,\"\u85D1\u85D2\"],\n[\"cb80\",\"\u85D4\u85D6\",5,\"\u85DD\",6,\"\u85E5\u85E6\u85E7\u85E8\u85EA\",14,\"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854\"],\n[\"cc40\",\"\u85F9\u85FA\u85FC\u85FD\u85FE\u8600\",4,\"\u8606\",10,\"\u8612\u8613\u8614\u8615\u8617\",15,\"\u8628\u862A\",13,\"\u8639\u863A\u863B\u863D\u863E\u863F\u8640\"],\n[\"cc80\",\"\u8641\",11,\"\u8652\u8653\u8655\",4,\"\u865B\u865C\u865D\u865F\u8660\u8661\u8663\",7,\"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3\"],\n[\"cd40\",\"\u866D\u866F\u8670\u8672\",6,\"\u8683\",6,\"\u868E\",4,\"\u8694\u8696\",5,\"\u869E\",4,\"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB\",4,\"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC\"],\n[\"cd80\",\"\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\"],\n[\"ce40\",\"\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740\",6,\"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A\",5,\"\u8761\u8762\u8766\",7,\"\u876F\u8771\u8772\u8773\u8775\"],\n[\"ce80\",\"\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E\",4,\"\u8794\u8795\u8796\u8798\",6,\"\u87A0\",4,\"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\"],\n[\"cf40\",\"\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1\",4,\"\u87C7\u87C8\u87C9\u87CC\",4,\"\u87D4\",6,\"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\",9],\n[\"cf80\",\"\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804\",5,\"\u880B\",7,\"\u8814\u8817\u8818\u8819\u881A\u881C\",4,\"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\"],\n[\"d040\",\"\u8824\",13,\"\u8833\",5,\"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846\",5,\"\u884E\",5,\"\u8855\u8856\u8858\u885A\",6,\"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A\"],\n[\"d080\",\"\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897\",4,\"\u889D\",4,\"\u88A3\u88A5\",5,\"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\"],\n[\"d140\",\"\u88AC\u88AE\u88AF\u88B0\u88B2\",4,\"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\",4,\"\u88E0\u88E1\u88E6\u88E7\u88E9\",6,\"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903\",5],\n[\"d180\",\"\u8909\u890B\",4,\"\u8911\u8914\",4,\"\u891C\",4,\"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476\"],\n[\"d240\",\"\u8938\",8,\"\u8942\u8943\u8945\",24,\"\u8960\",5,\"\u8967\",19,\"\u897C\"],\n[\"d280\",\"\u897D\u897E\u8980\u8982\u8984\u8985\u8987\",26,\"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\"],\n[\"d340\",\"\u89A2\",30,\"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\",6],\n[\"d380\",\"\u89FB\",4,\"\u8A01\",5,\"\u8A08\",21,\"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\"],\n[\"d440\",\"\u8A1E\",31,\"\u8A3F\",8,\"\u8A49\",21],\n[\"d480\",\"\u8A5F\",25,\"\u8A7A\",6,\"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67\"],\n[\"d540\",\"\u8A81\",7,\"\u8A8B\",7,\"\u8A94\",46],\n[\"d580\",\"\u8AC3\",32,\"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\"],\n[\"d640\",\"\u8AE4\",34,\"\u8B08\",27],\n[\"d680\",\"\u8B24\u8B25\u8B27\",30,\"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\"],\n[\"d740\",\"\u8B46\",31,\"\u8B67\",4,\"\u8B6D\",25],\n[\"d780\",\"\u8B87\",24,\"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\"],\n[\"d840\",\"\u8C38\",8,\"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D\",7,\"\u8C56\u8C57\u8C58\u8C59\u8C5B\",5,\"\u8C63\",6,\"\u8C6C\",6,\"\u8C74\u8C75\u8C76\u8C77\u8C7B\",6,\"\u8C83\u8C84\u8C86\u8C87\"],\n[\"d880\",\"\u8C88\u8C8B\u8C8D\",6,\"\u8C95\u8C96\u8C97\u8C99\",20,\"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\"],\n[\"d940\",\"\u8CAE\",62],\n[\"d980\",\"\u8CED\",32,\"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\"],\n[\"da40\",\"\u8D0E\",14,\"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78\",8,\"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C\",4,\"\u8D92\u8D93\u8D95\",9,\"\u8DA0\u8DA1\"],\n[\"da80\",\"\u8DA2\u8DA4\",12,\"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA\"],\n[\"db40\",\"\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE\",6,\"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15\",7,\"\u8E20\u8E21\u8E24\",4,\"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E\"],\n[\"db80\",\"\u8E3F\u8E43\u8E45\u8E46\u8E4C\",4,\"\u8E53\",5,\"\u8E5A\",11,\"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD\"],\n[\"dc40\",\"\u8E73\u8E75\u8E77\",4,\"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88\",6,\"\u8E91\u8E92\u8E93\u8E95\",6,\"\u8E9D\u8E9F\",11,\"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\",6,\"\u8EBB\",7],\n[\"dc80\",\"\u8EC3\",10,\"\u8ECF\",21,\"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365\"],\n[\"dd40\",\"\u8EE5\",62],\n[\"dd80\",\"\u8F24\",32,\"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A\"],\n[\"de40\",\"\u8F45\",32,\"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6\"],\n[\"de80\",\"\u8FC9\",4,\"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496\"],\n[\"df40\",\"\u9019\u901C\u9023\u9024\u9025\u9027\",5,\"\u9030\",4,\"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048\",4,\"\u904E\u9054\u9055\u9056\u9059\u905A\u905C\",5,\"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F\",4,\"\u9076\",6,\"\u907E\u9081\"],\n[\"df80\",\"\u9084\u9085\u9086\u9087\u9089\u908A\u908C\",4,\"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C\"],\n[\"e040\",\"\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105\",19,\"\u911A\u911B\u911C\"],\n[\"e080\",\"\u911D\u911F\u9120\u9121\u9124\",10,\"\u9130\u9132\",6,\"\u913A\",8,\"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\"],\n[\"e140\",\"\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180\",4,\"\u9186\u9188\u918A\u918E\u918F\u9193\",6,\"\u919C\",5,\"\u91A4\",5,\"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\"],\n[\"e180\",\"\u91BC\",10,\"\u91C8\u91CB\u91D0\u91D2\",9,\"\u91DD\",8,\"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA\"],\n[\"e240\",\"\u91E6\",62],\n[\"e280\",\"\u9225\",32,\"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967\",5,\"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042\"],\n[\"e340\",\"\u9246\",45,\"\u9275\",16],\n[\"e380\",\"\u9286\",7,\"\u928F\",24,\"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE\"],\n[\"e440\",\"\u92A8\",5,\"\u92AF\",24,\"\u92C9\",31],\n[\"e480\",\"\u92E9\",32,\"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1\"],\n[\"e540\",\"\u930A\",51,\"\u933F\",10],\n[\"e580\",\"\u934A\",31,\"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3\"],\n[\"e640\",\"\u936C\",34,\"\u9390\",27],\n[\"e680\",\"\u93AC\",29,\"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9\"],\n[\"e740\",\"\u93CE\",7,\"\u93D7\",54],\n[\"e780\",\"\u940E\",32,\"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21\",6,\"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\",4,\"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C\"],\n[\"e840\",\"\u942F\",14,\"\u943F\",43,\"\u946C\u946D\u946E\u946F\"],\n[\"e880\",\"\u9470\",20,\"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\"],\n[\"e940\",\"\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577\",7,\"\u9580\",42],\n[\"e980\",\"\u95AB\",32,\"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\"],\n[\"ea40\",\"\u95CC\",27,\"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623\",6,\"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657\"],\n[\"ea80\",\"\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D\",4,\"\u9673\u9678\",12,\"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0\"],\n[\"eb40\",\"\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D\",9,\"\u96A8\",7,\"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6\",9,\"\u96E1\",6,\"\u96EB\"],\n[\"eb80\",\"\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717\",4,\"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB\"],\n[\"ec40\",\"\u9721\",8,\"\u972B\u972C\u972E\u972F\u9731\u9733\",4,\"\u973A\u973B\u973C\u973D\u973F\",18,\"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A\",7],\n[\"ec80\",\"\u9772\u9775\u9777\",4,\"\u977D\",7,\"\u9786\",4,\"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799\",4,\"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0\"],\n[\"ed40\",\"\u979E\u979F\u97A1\u97A2\u97A4\",6,\"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5\",46],\n[\"ed80\",\"\u97E4\u97E5\u97E8\u97EE\",4,\"\u97F4\u97F7\",23,\"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768\"],\n[\"ee40\",\"\u980F\",62],\n[\"ee80\",\"\u984E\",32,\"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6\",4,\"\u94BC\u94BD\u94BF\u94C4\u94C8\",6,\"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA\"],\n[\"ef40\",\"\u986F\",5,\"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8\",37,\"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0\",4],\n[\"ef80\",\"\u98E5\u98E6\u98E9\",30,\"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512\",4,\"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564\",8,\"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14\"],\n[\"f040\",\"\u9908\",4,\"\u990E\u990F\u9911\",28,\"\u992F\",26],\n[\"f080\",\"\u994A\",9,\"\u9956\",12,\"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28\",4,\"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66\",6,\"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619\"],\n[\"f140\",\"\u998C\u998E\u999A\",10,\"\u99A6\u99A7\u99A9\",47],\n[\"f180\",\"\u99D9\",32,\"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883\"],\n[\"f240\",\"\u99FA\",62],\n[\"f280\",\"\u9A39\",32,\"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2\"],\n[\"f340\",\"\u9A5A\",17,\"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9\",6,\"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6\",4,\"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC\"],\n[\"f380\",\"\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0\",8,\"\u9AFA\u9AFC\",6,\"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B\"],\n[\"f440\",\"\u9B07\u9B09\",5,\"\u9B10\u9B11\u9B12\u9B14\",10,\"\u9B20\u9B21\u9B22\u9B24\",10,\"\u9B30\u9B31\u9B33\",7,\"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\",5],\n[\"f480\",\"\u9B5B\",32,\"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164\"],\n[\"f540\",\"\u9B7C\",62],\n[\"f580\",\"\u9BBB\",32,\"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC\"],\n[\"f640\",\"\u9BDC\",62],\n[\"f680\",\"\u9C1B\",32,\"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85\",5,\"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E\",5,\"\u9CA5\",4,\"\u9CAB\u9CAD\u9CAE\u9CB0\",7,\"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB\"],\n[\"f740\",\"\u9C3C\",62],\n[\"f780\",\"\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\",4,\"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC\",4,\"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44\"],\n[\"f840\",\"\u9CE3\",62],\n[\"f880\",\"\u9D22\",32],\n[\"f940\",\"\u9D43\",62],\n[\"f980\",\"\u9D82\",32],\n[\"fa40\",\"\u9DA3\",62],\n[\"fa80\",\"\u9DE2\",32],\n[\"fb40\",\"\u9E03\",27,\"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74\",9,\"\u9E80\"],\n[\"fb80\",\"\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C\",5,\"\u9E94\",8,\"\u9E9E\u9EA0\",5,\"\u9EA7\u9EA8\u9EA9\u9EAA\"],\n[\"fc40\",\"\u9EAB\",8,\"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF\",4,\"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0\",8,\"\u9EFA\u9EFD\u9EFF\",6],\n[\"fc80\",\"\u9F06\",4,\"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A\",5,\"\u9F21\u9F23\",8,\"\u9F2D\u9F2E\u9F30\u9F31\"],\n[\"fd40\",\"\u9F32\",4,\"\u9F38\u9F3A\u9F3C\u9F3F\",4,\"\u9F45\",10,\"\u9F52\",38],\n[\"fd80\",\"\u9F79\",5,\"\u9F81\u9F82\u9F8D\",11,\"\u9F9C\u9F9D\u9F9E\u9FA1\",4,\"\uF92C\uF979\uF995\uF9E7\uF9F1\"],\n[\"fe40\",\"\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29\"]\n]\n", "[\n[\"a140\",\"\uE4C6\",62],\n[\"a180\",\"\uE505\",32],\n[\"a240\",\"\uE526\",62],\n[\"a280\",\"\uE565\",32],\n[\"a2ab\",\"\uE766\",5],\n[\"a2e3\",\"\u20AC\uE76D\"],\n[\"a2ef\",\"\uE76E\uE76F\"],\n[\"a2fd\",\"\uE770\uE771\"],\n[\"a340\",\"\uE586\",62],\n[\"a380\",\"\uE5C5\",31,\"\u3000\"],\n[\"a440\",\"\uE5E6\",62],\n[\"a480\",\"\uE625\",32],\n[\"a4f4\",\"\uE772\",10],\n[\"a540\",\"\uE646\",62],\n[\"a580\",\"\uE685\",32],\n[\"a5f7\",\"\uE77D\",7],\n[\"a640\",\"\uE6A6\",62],\n[\"a680\",\"\uE6E5\",32],\n[\"a6b9\",\"\uE785\",7],\n[\"a6d9\",\"\uE78D\",6],\n[\"a6ec\",\"\uE794\uE795\"],\n[\"a6f3\",\"\uE796\"],\n[\"a6f6\",\"\uE797\",8],\n[\"a740\",\"\uE706\",62],\n[\"a780\",\"\uE745\",32],\n[\"a7c2\",\"\uE7A0\",14],\n[\"a7f2\",\"\uE7AF\",12],\n[\"a896\",\"\uE7BC\",10],\n[\"a8bc\",\"\u1E3F\"],\n[\"a8bf\",\"\u01F9\"],\n[\"a8c1\",\"\uE7C9\uE7CA\uE7CB\uE7CC\"],\n[\"a8ea\",\"\uE7CD\",20],\n[\"a958\",\"\uE7E2\"],\n[\"a95b\",\"\uE7E3\"],\n[\"a95d\",\"\uE7E4\uE7E5\uE7E6\"],\n[\"a989\",\"\u303E\u2FF0\",11],\n[\"a997\",\"\uE7F4\",12],\n[\"a9f0\",\"\uE801\",14],\n[\"aaa1\",\"\uE000\",93],\n[\"aba1\",\"\uE05E\",93],\n[\"aca1\",\"\uE0BC\",93],\n[\"ada1\",\"\uE11A\",93],\n[\"aea1\",\"\uE178\",93],\n[\"afa1\",\"\uE1D6\",93],\n[\"d7fa\",\"\uE810\",4],\n[\"f8a1\",\"\uE234\",93],\n[\"f9a1\",\"\uE292\",93],\n[\"faa1\",\"\uE2F0\",93],\n[\"fba1\",\"\uE34E\",93],\n[\"fca1\",\"\uE3AC\",93],\n[\"fda1\",\"\uE40A\",93],\n[\"fe50\",\"\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843\"],\n[\"fe80\",\"\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13\",6,\"\u4DAE\uE864\uE468\",93],\n[\"8135f437\",\"\uE7C7\"]\n]\n", "{\"uChars\":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],\"gbChars\":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}", "[\n[\"0\",\"\\u0000\",127],\n[\"8141\",\"\uAC02\uAC03\uAC05\uAC06\uAC0B\",4,\"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25\",6,\"\uAC2E\uAC32\uAC33\uAC34\"],\n[\"8161\",\"\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41\",9,\"\uAC4C\uAC4E\",5,\"\uAC55\"],\n[\"8181\",\"\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D\",18,\"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B\",4,\"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95\",6,\"\uAC9E\uACA2\",5,\"\uACAB\uACAD\uACAE\uACB1\",6,\"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD\",7,\"\uACD6\uACD8\",7,\"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7\",4,\"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07\",4,\"\uAD0E\uAD10\uAD12\uAD13\"],\n[\"8241\",\"\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21\",7,\"\uAD2A\uAD2B\uAD2E\",5],\n[\"8261\",\"\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D\",6,\"\uAD46\uAD48\uAD4A\",5,\"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57\"],\n[\"8281\",\"\uAD59\",7,\"\uAD62\uAD64\",7,\"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83\",4,\"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91\",10,\"\uAD9E\",5,\"\uADA5\",17,\"\uADB8\",7,\"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9\",6,\"\uADD2\uADD4\",7,\"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5\",18],\n[\"8341\",\"\uADFA\uADFB\uADFD\uADFE\uAE02\",5,\"\uAE0A\uAE0C\uAE0E\",5,\"\uAE15\",7],\n[\"8361\",\"\uAE1D\",18,\"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C\"],\n[\"8381\",\"\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57\",4,\"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71\",6,\"\uAE7A\uAE7E\",5,\"\uAE86\",5,\"\uAE8D\",46,\"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5\",6,\"\uAECE\uAED2\",5,\"\uAEDA\uAEDB\uAEDD\",8],\n[\"8441\",\"\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE\",5,\"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD\",8],\n[\"8461\",\"\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11\",18],\n[\"8481\",\"\uAF24\",7,\"\uAF2E\uAF2F\uAF31\uAF33\uAF35\",6,\"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A\",5,\"\uAF51\",10,\"\uAF5E\",5,\"\uAF66\",18,\"\uAF7A\",5,\"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89\",6,\"\uAF92\uAF93\uAF94\uAF96\",5,\"\uAF9D\",26,\"\uAFBA\uAFBB\uAFBD\uAFBE\"],\n[\"8541\",\"\uAFBF\uAFC1\",5,\"\uAFCA\uAFCC\uAFCF\",4,\"\uAFD5\",6,\"\uAFDD\",4],\n[\"8561\",\"\uAFE2\",5,\"\uAFEA\",5,\"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9\",6,\"\uB002\uB003\"],\n[\"8581\",\"\uB005\",6,\"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015\",6,\"\uB01E\",9,\"\uB029\",26,\"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E\",29,\"\uB07E\uB07F\uB081\uB082\uB083\uB085\",6,\"\uB08E\uB090\uB092\",5,\"\uB09B\uB09D\uB09E\uB0A3\uB0A4\"],\n[\"8641\",\"\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD\",6,\"\uB0C6\uB0CA\",5,\"\uB0D2\"],\n[\"8661\",\"\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9\",6,\"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6\",10],\n[\"8681\",\"\uB0F1\",22,\"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E\",4,\"\uB126\uB127\uB129\uB12A\uB12B\uB12D\",6,\"\uB136\uB13A\",5,\"\uB142\uB143\uB145\uB146\uB147\uB149\",6,\"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161\",22,\"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183\",4,\"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D\"],\n[\"8741\",\"\uB19E\",9,\"\uB1A9\",15],\n[\"8761\",\"\uB1B9\",18,\"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5\"],\n[\"8781\",\"\uB1D6\",5,\"\uB1DE\uB1E0\",7,\"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1\",7,\"\uB1FA\uB1FC\uB1FE\",5,\"\uB206\uB207\uB209\uB20A\uB20D\",6,\"\uB216\uB218\uB21A\",5,\"\uB221\",18,\"\uB235\",6,\"\uB23D\",26,\"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261\",6,\"\uB26A\",4],\n[\"8841\",\"\uB26F\",4,\"\uB276\",5,\"\uB27D\",6,\"\uB286\uB287\uB288\uB28A\",4],\n[\"8861\",\"\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B\",4,\"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7\"],\n[\"8881\",\"\uB2B8\",15,\"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3\",4,\"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309\",6,\"\uB312\uB316\",5,\"\uB31D\",54,\"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363\"],\n[\"8941\",\"\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379\",6,\"\uB382\uB386\",5,\"\uB38D\"],\n[\"8961\",\"\uB38E\uB38F\uB391\uB392\uB393\uB395\",10,\"\uB3A2\",5,\"\uB3A9\uB3AA\uB3AB\uB3AD\"],\n[\"8981\",\"\uB3AE\",21,\"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9\",18,\"\uB3FD\",18,\"\uB411\",6,\"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421\",6,\"\uB42A\uB42C\",7,\"\uB435\",15],\n[\"8a41\",\"\uB445\",10,\"\uB452\uB453\uB455\uB456\uB457\uB459\",6,\"\uB462\uB464\uB466\"],\n[\"8a61\",\"\uB467\",4,\"\uB46D\",18,\"\uB481\uB482\"],\n[\"8a81\",\"\uB483\",4,\"\uB489\",19,\"\uB49E\",5,\"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD\",7,\"\uB4B6\uB4B8\uB4BA\",5,\"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9\",6,\"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6\",5,\"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7\",4,\"\uB4EE\uB4F0\uB4F2\",5,\"\uB4F9\",26,\"\uB516\uB517\uB519\uB51A\uB51D\"],\n[\"8b41\",\"\uB51E\",5,\"\uB526\uB52B\",4,\"\uB532\uB533\uB535\uB536\uB537\uB539\",6,\"\uB542\uB546\"],\n[\"8b61\",\"\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555\",6,\"\uB55E\uB562\",8],\n[\"8b81\",\"\uB56B\",52,\"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6\",4,\"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5\",6,\"\uB5CE\uB5D2\",5,\"\uB5D9\",18,\"\uB5ED\",18],\n[\"8c41\",\"\uB600\",15,\"\uB612\uB613\uB615\uB616\uB617\uB619\",4],\n[\"8c61\",\"\uB61E\",6,\"\uB626\",5,\"\uB62D\",6,\"\uB635\",5],\n[\"8c81\",\"\uB63B\",12,\"\uB649\",26,\"\uB665\uB666\uB667\uB669\",50,\"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5\",5,\"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2\",16],\n[\"8d41\",\"\uB6C3\",16,\"\uB6D5\",8],\n[\"8d61\",\"\uB6DE\",17,\"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA\"],\n[\"8d81\",\"\uB6FB\",4,\"\uB702\uB703\uB704\uB706\",33,\"\uB72A\uB72B\uB72D\uB72E\uB731\",6,\"\uB73A\uB73C\",7,\"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D\",6,\"\uB756\",9,\"\uB761\uB762\uB763\uB765\uB766\uB767\uB769\",6,\"\uB772\uB774\uB776\",5,\"\uB77E\uB77F\uB781\uB782\uB783\uB785\",6,\"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E\"],\n[\"8e41\",\"\uB79F\uB7A1\",6,\"\uB7AA\uB7AE\",5,\"\uB7B6\uB7B7\uB7B9\",8],\n[\"8e61\",\"\uB7C2\",4,\"\uB7C8\uB7CA\",19],\n[\"8e81\",\"\uB7DE\",13,\"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5\",6,\"\uB7FE\uB802\",4,\"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811\",6,\"\uB81A\uB81C\uB81E\",5,\"\uB826\uB827\uB829\uB82A\uB82B\uB82D\",6,\"\uB836\uB83A\",5,\"\uB841\uB842\uB843\uB845\",11,\"\uB852\uB854\",7,\"\uB85E\uB85F\uB861\uB862\uB863\uB865\",6,\"\uB86E\uB870\uB872\",5,\"\uB879\uB87A\uB87B\uB87D\",7],\n[\"8f41\",\"\uB885\",7,\"\uB88E\",17],\n[\"8f61\",\"\uB8A0\",7,\"\uB8A9\",6,\"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9\",4],\n[\"8f81\",\"\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6\",5,\"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5\",7,\"\uB8DE\uB8E0\uB8E2\",5,\"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1\",6,\"\uB8FA\uB8FC\uB8FE\",5,\"\uB905\",18,\"\uB919\",6,\"\uB921\",26,\"\uB93E\uB93F\uB941\uB942\uB943\uB945\",6,\"\uB94D\uB94E\uB950\uB952\",5],\n[\"9041\",\"\uB95A\uB95B\uB95D\uB95E\uB95F\uB961\",6,\"\uB96A\uB96C\uB96E\",5,\"\uB976\uB977\uB979\uB97A\uB97B\uB97D\"],\n[\"9061\",\"\uB97E\",5,\"\uB986\uB988\uB98B\uB98C\uB98F\",15],\n[\"9081\",\"\uB99F\",12,\"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5\",6,\"\uB9BE\uB9C0\uB9C2\",5,\"\uB9CA\uB9CB\uB9CD\uB9D3\",4,\"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED\",6,\"\uB9F6\uB9FB\",4,\"\uBA02\",5,\"\uBA09\",11,\"\uBA16\",33,\"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46\"],\n[\"9141\",\"\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D\",6,\"\uBA66\uBA6A\",5],\n[\"9161\",\"\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79\",9,\"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D\",5],\n[\"9181\",\"\uBA93\",20,\"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3\",4,\"\uBABA\uBABC\uBABE\",5,\"\uBAC5\uBAC6\uBAC7\uBAC9\",14,\"\uBADA\",33,\"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05\",7,\"\uBB0E\uBB10\uBB12\",5,\"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21\",6],\n[\"9241\",\"\uBB28\uBB2A\uBB2C\",7,\"\uBB37\uBB39\uBB3A\uBB3F\",4,\"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52\"],\n[\"9261\",\"\uBB53\uBB55\uBB56\uBB57\uBB59\",7,\"\uBB62\uBB64\",7,\"\uBB6D\",4],\n[\"9281\",\"\uBB72\",21,\"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91\",18,\"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD\",6,\"\uBBB5\uBBB6\uBBB8\",7,\"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9\",6,\"\uBBD1\uBBD2\uBBD4\",35,\"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01\"],\n[\"9341\",\"\uBC03\",4,\"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35\"],\n[\"9361\",\"\uBC36\uBC37\uBC39\",6,\"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51\",8],\n[\"9381\",\"\uBC5A\uBC5B\uBC5C\uBC5E\",37,\"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F\",4,\"\uBC96\uBC98\uBC9B\",4,\"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9\",6,\"\uBCB2\uBCB6\",5,\"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5\",7,\"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD\",22,\"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD\"],\n[\"9441\",\"\uBCFE\",5,\"\uBD06\uBD08\uBD0A\",5,\"\uBD11\uBD12\uBD13\uBD15\",8],\n[\"9461\",\"\uBD1E\",5,\"\uBD25\",6,\"\uBD2D\",12],\n[\"9481\",\"\uBD3A\",5,\"\uBD41\",6,\"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51\",6,\"\uBD5A\",9,\"\uBD65\uBD66\uBD67\uBD69\",22,\"\uBD82\uBD83\uBD85\uBD86\uBD8B\",4,\"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D\",6,\"\uBDA5\",10,\"\uBDB1\",6,\"\uBDB9\",24],\n[\"9541\",\"\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD\",11,\"\uBDEA\",5,\"\uBDF1\"],\n[\"9561\",\"\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9\",6,\"\uBE01\uBE02\uBE04\uBE06\",5,\"\uBE0E\uBE0F\uBE11\uBE12\uBE13\"],\n[\"9581\",\"\uBE15\",6,\"\uBE1E\uBE20\",35,\"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F\",4,\"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B\",4,\"\uBE72\uBE76\",4,\"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85\",6,\"\uBE8E\uBE92\",5,\"\uBE9A\",13,\"\uBEA9\",14],\n[\"9641\",\"\uBEB8\",23,\"\uBED2\uBED3\"],\n[\"9661\",\"\uBED5\uBED6\uBED9\",6,\"\uBEE1\uBEE2\uBEE6\",5,\"\uBEED\",8],\n[\"9681\",\"\uBEF6\",10,\"\uBF02\",5,\"\uBF0A\",13,\"\uBF1A\uBF1E\",33,\"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49\",6,\"\uBF52\uBF53\uBF54\uBF56\",44],\n[\"9741\",\"\uBF83\",16,\"\uBF95\",8],\n[\"9761\",\"\uBF9E\",17,\"\uBFB1\",7],\n[\"9781\",\"\uBFB9\",11,\"\uBFC6\",5,\"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5\",6,\"\uBFDD\uBFDE\uBFE0\uBFE2\",89,\"\uC03D\uC03E\uC03F\"],\n[\"9841\",\"\uC040\",16,\"\uC052\",5,\"\uC059\uC05A\uC05B\"],\n[\"9861\",\"\uC05D\uC05E\uC05F\uC061\",6,\"\uC06A\",15],\n[\"9881\",\"\uC07A\",21,\"\uC092\uC093\uC095\uC096\uC097\uC099\",6,\"\uC0A2\uC0A4\uC0A6\",5,\"\uC0AE\uC0B1\uC0B2\uC0B7\",4,\"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1\",6,\"\uC0DA\uC0DE\",5,\"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED\",6,\"\uC0F6\uC0F8\uC0FA\",5,\"\uC101\uC102\uC103\uC105\uC106\uC107\uC109\",6,\"\uC111\uC112\uC113\uC114\uC116\",5,\"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E\"],\n[\"9941\",\"\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141\",6,\"\uC14A\uC14E\",5,\"\uC156\uC157\"],\n[\"9961\",\"\uC159\uC15A\uC15B\uC15D\",6,\"\uC166\uC16A\",5,\"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B\"],\n[\"9981\",\"\uC17C\",8,\"\uC186\",5,\"\uC18F\uC191\uC192\uC193\uC195\uC197\",4,\"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1\",11,\"\uC1BE\",5,\"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD\",6,\"\uC1D5\uC1D6\uC1D9\",6,\"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9\",6,\"\uC1F2\uC1F4\",7,\"\uC1FE\uC1FF\uC201\uC202\uC203\uC205\",6,\"\uC20E\uC210\uC212\",5,\"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223\"],\n[\"9a41\",\"\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235\",16],\n[\"9a61\",\"\uC246\uC247\uC249\",6,\"\uC252\uC253\uC255\uC256\uC257\uC259\",6,\"\uC261\uC262\uC263\uC264\uC266\"],\n[\"9a81\",\"\uC267\",4,\"\uC26E\uC26F\uC271\uC272\uC273\uC275\",6,\"\uC27E\uC280\uC282\",5,\"\uC28A\",5,\"\uC291\",6,\"\uC299\uC29A\uC29C\uC29E\",5,\"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE\",5,\"\uC2B6\uC2B8\uC2BA\",33,\"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5\",5,\"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301\",6,\"\uC30A\uC30B\uC30E\uC30F\"],\n[\"9b41\",\"\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D\",6,\"\uC326\uC327\uC32A\",8],\n[\"9b61\",\"\uC333\",17,\"\uC346\",7],\n[\"9b81\",\"\uC34E\",25,\"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373\",4,\"\uC37A\uC37B\uC37E\",5,\"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D\",50,\"\uC3C1\",22,\"\uC3DA\"],\n[\"9c41\",\"\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3\",4,\"\uC3EA\uC3EB\uC3EC\uC3EE\",5,\"\uC3F6\uC3F7\uC3F9\",5],\n[\"9c61\",\"\uC3FF\",8,\"\uC409\",6,\"\uC411\",9],\n[\"9c81\",\"\uC41B\",8,\"\uC425\",6,\"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435\",6,\"\uC43E\",9,\"\uC449\",26,\"\uC466\uC467\uC469\uC46A\uC46B\uC46D\",6,\"\uC476\uC477\uC478\uC47A\",5,\"\uC481\",18,\"\uC495\",6,\"\uC49D\",12],\n[\"9d41\",\"\uC4AA\",13,\"\uC4B9\uC4BA\uC4BB\uC4BD\",8],\n[\"9d61\",\"\uC4C6\",25],\n[\"9d81\",\"\uC4E0\",8,\"\uC4EA\",5,\"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502\",9,\"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515\",6,\"\uC51D\",10,\"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531\",6,\"\uC53A\uC53C\uC53E\",5,\"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569\",6,\"\uC572\uC576\",5,\"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594\"],\n[\"9e41\",\"\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1\",7,\"\uC5AA\",9,\"\uC5B6\"],\n[\"9e61\",\"\uC5B7\uC5BA\uC5BF\",4,\"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9\",6,\"\uC5E2\uC5E4\uC5E6\uC5E7\"],\n[\"9e81\",\"\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611\",6,\"\uC61A\uC61D\",6,\"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649\",6,\"\uC652\uC656\",5,\"\uC65E\uC65F\uC661\",10,\"\uC66D\uC66E\uC670\uC672\",5,\"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681\",6,\"\uC68A\uC68C\uC68E\",5,\"\uC696\uC697\uC699\uC69A\uC69B\uC69D\",6,\"\uC6A6\"],\n[\"9f41\",\"\uC6A8\uC6AA\",5,\"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB\",4,\"\uC6C2\uC6C4\uC6C6\",5,\"\uC6CE\"],\n[\"9f61\",\"\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5\",6,\"\uC6DE\uC6DF\uC6E2\",5,\"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2\"],\n[\"9f81\",\"\uC6F3\",4,\"\uC6FA\uC6FB\uC6FC\uC6FE\",5,\"\uC706\uC707\uC709\uC70A\uC70B\uC70D\",6,\"\uC716\uC718\uC71A\",5,\"\uC722\uC723\uC725\uC726\uC727\uC729\",6,\"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745\",4,\"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761\",6,\"\uC769\uC76A\uC76C\",7,\"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B\",4,\"\uC7A2\uC7A7\",4,\"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7\"],\n[\"a041\",\"\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2\",5,\"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1\",6,\"\uC7D9\uC7DA\uC7DB\uC7DC\"],\n[\"a061\",\"\uC7DE\",5,\"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED\",13],\n[\"a081\",\"\uC7FB\",4,\"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B\",4,\"\uC812\uC814\uC817\",4,\"\uC81E\uC81F\uC821\uC822\uC823\uC825\",6,\"\uC82E\uC830\uC832\",5,\"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841\",6,\"\uC84A\uC84B\uC84E\",5,\"\uC855\",26,\"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B\",4,\"\uC882\uC884\uC888\uC889\uC88A\uC88E\",5,\"\uC895\",7,\"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4\"],\n[\"a141\",\"\uC8A5\uC8A6\uC8A7\uC8A9\",18,\"\uC8BE\uC8BF\uC8C0\uC8C1\"],\n[\"a161\",\"\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD\",6,\"\uC8D6\uC8D8\uC8DA\",5,\"\uC8E2\uC8E3\uC8E5\"],\n[\"a181\",\"\uC8E6\",14,\"\uC8F6\",5,\"\uC8FE\uC8FF\uC901\uC902\uC903\uC907\",4,\"\uC90E\u3000\u3001\u3002\u00B7\u2025\u2026\u00A8\u3003\u00AD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",9,\"\u00B1\u00D7\u00F7\u2260\u2264\u2265\u221E\u2234\u00B0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u00A7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2\"],\n[\"a241\",\"\uC910\uC912\",5,\"\uC919\",18],\n[\"a261\",\"\uC92D\",6,\"\uC935\",18],\n[\"a281\",\"\uC948\",7,\"\uC952\uC953\uC955\uC956\uC957\uC959\",6,\"\uC962\uC964\",7,\"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\u00B4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\u00B8\u02DB\u00A1\u00BF\u02D0\u222E\u2211\u220F\u00A4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\u00B6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\u00AE\"],\n[\"a341\",\"\uC971\uC972\uC973\uC975\",6,\"\uC97D\",10,\"\uC98A\uC98B\uC98D\uC98E\uC98F\"],\n[\"a361\",\"\uC991\",6,\"\uC99A\uC99C\uC99E\",16],\n[\"a381\",\"\uC9AF\",16,\"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB\",4,\"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01\",58,\"\uFFE6\uFF3D\",32,\"\uFFE3\"],\n[\"a441\",\"\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2\",5,\"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04\"],\n[\"a461\",\"\uCA05\uCA06\uCA07\uCA0A\uCA0E\",5,\"\uCA15\uCA16\uCA17\uCA19\",12],\n[\"a481\",\"\uCA26\uCA27\uCA28\uCA2A\",28,\"\u3131\",93],\n[\"a541\",\"\uCA47\",4,\"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55\",6,\"\uCA5E\uCA62\",5,\"\uCA69\uCA6A\"],\n[\"a561\",\"\uCA6B\",17,\"\uCA7E\",5,\"\uCA85\uCA86\"],\n[\"a581\",\"\uCA87\",16,\"\uCA99\",14,\"\u2170\",9],\n[\"a5b0\",\"\u2160\",9],\n[\"a5c1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a5e1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a641\",\"\uCAA8\",19,\"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5\"],\n[\"a661\",\"\uCAC6\",5,\"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA\",5,\"\uCAE1\",6],\n[\"a681\",\"\uCAE8\uCAE9\uCAEA\uCAEB\uCAED\",6,\"\uCAF5\",18,\"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543\",7],\n[\"a741\",\"\uCB0B\",4,\"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19\",6,\"\uCB22\",7],\n[\"a761\",\"\uCB2A\",22,\"\uCB42\uCB43\uCB44\"],\n[\"a781\",\"\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51\",6,\"\uCB5A\uCB5B\uCB5C\uCB5E\",5,\"\uCB65\",7,\"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399\",9,\"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0\",9,\"\u3380\",4,\"\u33BA\",5,\"\u3390\",4,\"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6\"],\n[\"a841\",\"\uCB6D\",10,\"\uCB7A\",14],\n[\"a861\",\"\uCB89\",18,\"\uCB9D\",6],\n[\"a881\",\"\uCBA4\",19,\"\uCBB9\",11,\"\u00C6\u00D0\u00AA\u0126\"],\n[\"a8a6\",\"\u0132\"],\n[\"a8a8\",\"\u013F\u0141\u00D8\u0152\u00BA\u00DE\u0166\u014A\"],\n[\"a8b1\",\"\u3260\",27,\"\u24D0\",25,\"\u2460\",14,\"\u00BD\u2153\u2154\u00BC\u00BE\u215B\u215C\u215D\u215E\"],\n[\"a941\",\"\uCBC5\",14,\"\uCBD5\",10],\n[\"a961\",\"\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA\",18],\n[\"a981\",\"\uCBFD\",14,\"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15\",6,\"\uCC1E\uCC1F\uCC20\uCC23\uCC24\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0140\u0142\u00F8\u0153\u00DF\u00FE\u0167\u014B\u0149\u3200\",27,\"\u249C\",25,\"\u2474\",14,\"\u00B9\u00B2\u00B3\u2074\u207F\u2081\u2082\u2083\u2084\"],\n[\"aa41\",\"\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31\",6,\"\uCC3A\uCC3F\",4,\"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E\"],\n[\"aa61\",\"\uCC4F\",4,\"\uCC56\uCC5A\",5,\"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69\",6,\"\uCC71\uCC72\"],\n[\"aa81\",\"\uCC73\uCC74\uCC76\",29,\"\u3041\",82],\n[\"ab41\",\"\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1\",6,\"\uCCAA\uCCAE\",5,\"\uCCB6\uCCB7\uCCB9\"],\n[\"ab61\",\"\uCCBA\uCCBB\uCCBD\",6,\"\uCCC6\uCCC8\uCCCA\",5,\"\uCCD1\uCCD2\uCCD3\uCCD5\",5],\n[\"ab81\",\"\uCCDB\",8,\"\uCCE5\",6,\"\uCCED\uCCEE\uCCEF\uCCF1\",12,\"\u30A1\",85],\n[\"ac41\",\"\uCCFE\uCCFF\uCD00\uCD02\",5,\"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11\",6,\"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20\"],\n[\"ac61\",\"\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D\",11,\"\uCD3A\",4],\n[\"ac81\",\"\uCD3F\",28,\"\uCD5D\uCD5E\uCD5F\u0410\",5,\"\u0401\u0416\",25],\n[\"acd1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"ad41\",\"\uCD61\uCD62\uCD63\uCD65\",6,\"\uCD6E\uCD70\uCD72\",5,\"\uCD79\",7],\n[\"ad61\",\"\uCD81\",6,\"\uCD89\",10,\"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F\"],\n[\"ad81\",\"\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA\",5,\"\uCDB1\",18,\"\uCDC5\"],\n[\"ae41\",\"\uCDC6\",5,\"\uCDCD\uCDCE\uCDCF\uCDD1\",16],\n[\"ae61\",\"\uCDE2\",5,\"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1\",6,\"\uCDFA\uCDFC\uCDFE\",4],\n[\"ae81\",\"\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D\",6,\"\uCE15\uCE16\uCE17\uCE18\uCE1A\",5,\"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B\"],\n[\"af41\",\"\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36\",19],\n[\"af61\",\"\uCE4A\",13,\"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62\",5,\"\uCE6A\uCE6C\"],\n[\"af81\",\"\uCE6E\",5,\"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D\",6,\"\uCE86\uCE88\uCE8A\",5,\"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99\"],\n[\"b041\",\"\uCE9A\",5,\"\uCEA2\uCEA6\",5,\"\uCEAE\",12],\n[\"b061\",\"\uCEBB\",5,\"\uCEC2\",19],\n[\"b081\",\"\uCED6\",13,\"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED\",6,\"\uCEF6\uCEFA\",5,\"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10\",7,\"\uAC19\",4,\"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06\"],\n[\"b141\",\"\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09\",6,\"\uCF12\uCF14\uCF16\",5,\"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23\"],\n[\"b161\",\"\uCF25\",6,\"\uCF2E\uCF32\",5,\"\uCF39\",11],\n[\"b181\",\"\uCF45\",14,\"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D\",6,\"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78\"],\n[\"b241\",\"\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79\",6,\"\uCF81\uCF82\uCF83\uCF84\uCF86\",5,\"\uCF8D\"],\n[\"b261\",\"\uCF8E\",18,\"\uCFA2\",5,\"\uCFA9\"],\n[\"b281\",\"\uCFAA\",5,\"\uCFB1\",18,\"\uCFC5\",6,\"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059\"],\n[\"b341\",\"\uCFCC\",19,\"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9\"],\n[\"b361\",\"\uCFEA\",5,\"\uCFF2\uCFF4\uCFF6\",5,\"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005\",5],\n[\"b381\",\"\uD00B\",5,\"\uD012\",5,\"\uD019\",19,\"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB\",4,\"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD\"],\n[\"b441\",\"\uD02E\",5,\"\uD036\uD037\uD039\uD03A\uD03B\uD03D\",6,\"\uD046\uD048\uD04A\",5],\n[\"b461\",\"\uD051\uD052\uD053\uD055\uD056\uD057\uD059\",6,\"\uD061\",10,\"\uD06E\uD06F\"],\n[\"b481\",\"\uD071\uD072\uD073\uD075\",6,\"\uD07E\uD07F\uD080\uD082\",18,\"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB\",4,\"\uB2F3\uB2F4\uB2F5\uB2F7\",4,\"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365\"],\n[\"b541\",\"\uD095\",14,\"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD\",5],\n[\"b561\",\"\uD0B3\uD0B6\uD0B8\uD0BA\",5,\"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA\",5,\"\uD0D2\uD0D6\",4],\n[\"b581\",\"\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5\",6,\"\uD0EE\uD0F2\",5,\"\uD0F9\",11,\"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538\"],\n[\"b641\",\"\uD105\",7,\"\uD10E\",17],\n[\"b661\",\"\uD120\",15,\"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E\"],\n[\"b681\",\"\uD13F\uD142\uD146\",5,\"\uD14E\uD14F\uD151\uD152\uD153\uD155\",6,\"\uD15E\uD160\uD162\",5,\"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797\"],\n[\"b741\",\"\uD16E\",13,\"\uD17D\",6,\"\uD185\uD186\uD187\uD189\uD18A\"],\n[\"b761\",\"\uD18B\",20,\"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7\"],\n[\"b781\",\"\uD1A9\",6,\"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1\",14,\"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969\"],\n[\"b841\",\"\uD1D0\",7,\"\uD1D9\",17],\n[\"b861\",\"\uD1EB\",8,\"\uD1F5\uD1F6\uD1F7\uD1F9\",13],\n[\"b881\",\"\uD208\uD20A\",5,\"\uD211\",24,\"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE\",4,\"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC\"],\n[\"b941\",\"\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235\",6,\"\uD23E\uD240\uD242\",5,\"\uD249\uD24A\uD24B\uD24C\"],\n[\"b961\",\"\uD24D\",14,\"\uD25D\",6,\"\uD265\uD266\uD267\uD268\"],\n[\"b981\",\"\uD269\",22,\"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14\",4,\"\uBC1B\",4,\"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97\"],\n[\"ba41\",\"\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296\",5,\"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5\",6,\"\uD2AD\"],\n[\"ba61\",\"\uD2AE\uD2AF\uD2B0\uD2B2\",5,\"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3\",4,\"\uD2CA\uD2CC\",5],\n[\"ba81\",\"\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD\",6,\"\uD2E6\",9,\"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64\"],\n[\"bb41\",\"\uD2FB\",4,\"\uD302\uD304\uD306\",5,\"\uD30F\uD311\uD312\uD313\uD315\uD317\",4,\"\uD31E\uD322\uD323\"],\n[\"bb61\",\"\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331\",6,\"\uD33A\uD33E\",5,\"\uD346\uD347\uD348\uD349\"],\n[\"bb81\",\"\uD34A\",31,\"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4\"],\n[\"bc41\",\"\uD36A\",17,\"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387\"],\n[\"bc61\",\"\uD388\uD389\uD38A\uD38B\uD38E\uD392\",5,\"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1\",6,\"\uD3AA\uD3AC\uD3AE\"],\n[\"bc81\",\"\uD3AF\",4,\"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD\",6,\"\uD3C6\uD3C7\uD3CA\",5,\"\uD3D1\",5,\"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C\",4,\"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D\"],\n[\"bd41\",\"\uD3D7\uD3D9\",7,\"\uD3E2\uD3E4\",7,\"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7\"],\n[\"bd61\",\"\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402\",5,\"\uD409\",13],\n[\"bd81\",\"\uD417\",5,\"\uD41E\",25,\"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430\"],\n[\"be41\",\"\uD438\",7,\"\uD441\uD442\uD443\uD445\",14],\n[\"be61\",\"\uD454\",7,\"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465\",7,\"\uD46E\uD470\uD471\uD472\"],\n[\"be81\",\"\uD473\",4,\"\uD47A\uD47B\uD47D\uD47E\uD481\uD483\",4,\"\uD48A\uD48C\uD48E\",5,\"\uD495\",8,\"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4\",6,\"\uC5CC\uC5CE\"],\n[\"bf41\",\"\uD49E\",10,\"\uD4AA\",14],\n[\"bf61\",\"\uD4B9\",18,\"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5\"],\n[\"bf81\",\"\uD4D6\",5,\"\uD4DD\uD4DE\uD4E0\",7,\"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1\",6,\"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC\",5,\"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8\"],\n[\"c041\",\"\uD4FE\",5,\"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D\",6,\"\uD516\uD518\",5],\n[\"c061\",\"\uD51E\",25],\n[\"c081\",\"\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545\",6,\"\uD54E\uD550\uD552\",5,\"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751\",7,\"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A\"],\n[\"c141\",\"\uD564\uD566\uD567\uD56A\uD56C\uD56E\",5,\"\uD576\uD577\uD579\uD57A\uD57B\uD57D\",6,\"\uD586\uD58A\uD58B\"],\n[\"c161\",\"\uD58C\uD58D\uD58E\uD58F\uD591\",19,\"\uD5A6\uD5A7\"],\n[\"c181\",\"\uD5A8\",31,\"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3\"],\n[\"c241\",\"\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3\",4,\"\uD5DA\uD5DC\uD5DE\",5,\"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE\"],\n[\"c261\",\"\uD5EF\",4,\"\uD5F6\uD5F8\uD5FA\",5,\"\uD602\uD603\uD605\uD606\uD607\uD609\",6,\"\uD612\"],\n[\"c281\",\"\uD616\",5,\"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625\",7,\"\uD62E\",9,\"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B\"],\n[\"c341\",\"\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D\",4],\n[\"c361\",\"\uD662\",4,\"\uD668\uD66A\",5,\"\uD672\uD673\uD675\",11],\n[\"c381\",\"\uD681\uD682\uD684\uD686\",5,\"\uD68E\uD68F\uD691\uD692\uD693\uD695\",7,\"\uD69E\uD6A0\uD6A2\",5,\"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35\"],\n[\"c441\",\"\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1\",7,\"\uD6BA\uD6BC\",7,\"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB\"],\n[\"c461\",\"\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA\",5,\"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9\",4],\n[\"c481\",\"\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6\",5,\"\uD6FE\uD6FF\uD701\uD702\uD703\uD705\",11,\"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C\"],\n[\"c541\",\"\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721\",6,\"\uD72A\uD72C\uD72E\",5,\"\uD736\uD737\uD739\"],\n[\"c561\",\"\uD73A\uD73B\uD73D\",6,\"\uD745\uD746\uD748\uD74A\",5,\"\uD752\uD753\uD755\uD75A\",4],\n[\"c581\",\"\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775\",6,\"\uD77E\uD77F\uD780\uD782\",5,\"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C\"],\n[\"c641\",\"\uD78D\uD78E\uD78F\uD791\",6,\"\uD79A\uD79C\uD79E\",5],\n[\"c6a1\",\"\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401\"],\n[\"c7a1\",\"\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620\"],\n[\"c8a1\",\"\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D\"],\n[\"caa1\",\"\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95\"],\n[\"cba1\",\"\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2\"],\n[\"cca1\",\"\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0\"],\n[\"cda1\",\"\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC\"],\n[\"cea1\",\"\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE\"],\n[\"cfa1\",\"\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4\"],\n[\"d0a1\",\"\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3\"],\n[\"d1a1\",\"\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E\",5,\"\u90A3\uF914\",4,\"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925\"],\n[\"d2a1\",\"\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928\",4,\"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933\",5,\"\u99D1\uF939\",10,\"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A\",7,\"\u5AE9\u8A25\u677B\u7D10\uF952\",5,\"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336\"],\n[\"d3a1\",\"\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843\"],\n[\"d4a1\",\"\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85\"],\n[\"d5a1\",\"\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23\"],\n[\"d6a1\",\"\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC\"],\n[\"d7a1\",\"\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C\"],\n[\"d8a1\",\"\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5\"],\n[\"d9a1\",\"\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587\"],\n[\"daa1\",\"\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51\"],\n[\"dba1\",\"\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656\"],\n[\"dca1\",\"\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66\"],\n[\"dda1\",\"\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5\"],\n[\"dea1\",\"\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A\"],\n[\"dfa1\",\"\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72\"],\n[\"e0a1\",\"\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C\"],\n[\"e1a1\",\"\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101\"],\n[\"e2a1\",\"\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27\"],\n[\"e3a1\",\"\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81\"],\n[\"e4a1\",\"\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D\"],\n[\"e5a1\",\"\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982\"],\n[\"e6a1\",\"\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2\"],\n[\"e7a1\",\"\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3\"],\n[\"e8a1\",\"\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1\"],\n[\"e9a1\",\"\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553\"],\n[\"eaa1\",\"\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB\"],\n[\"eba1\",\"\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC\"],\n[\"eca1\",\"\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344\"],\n[\"eda1\",\"\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577\"],\n[\"eea1\",\"\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1\"],\n[\"efa1\",\"\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756\"],\n[\"f0a1\",\"\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B\"],\n[\"f1a1\",\"\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA\"],\n[\"f2a1\",\"\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F\"],\n[\"f3a1\",\"\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56\"],\n[\"f4a1\",\"\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2\"],\n[\"f5a1\",\"\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403\"],\n[\"f6a1\",\"\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17\"],\n[\"f7a1\",\"\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211\"],\n[\"f8a1\",\"\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43\"],\n[\"f9a1\",\"\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A\"],\n[\"faa1\",\"\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B\"],\n[\"fba1\",\"\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575\"],\n[\"fca1\",\"\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6\"],\n[\"fda1\",\"\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"a140\",\"\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\u00B7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\"],\n[\"a1a1\",\"\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\u00AF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62\",4,\"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F\"],\n[\"a240\",\"\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581\",7,\"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D\"],\n[\"a2a1\",\"\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10\",9,\"\u2160\",9,\"\u3021\",8,\"\u5341\u5344\u5345\uFF21\",25,\"\uFF41\",21],\n[\"a340\",\"\uFF57\uFF58\uFF59\uFF5A\u0391\",16,\"\u03A3\",6,\"\u03B1\",16,\"\u03C3\",6,\"\u3105\",10],\n[\"a3a1\",\"\u3110\",25,\"\u02D9\u02C9\u02CA\u02C7\u02CB\"],\n[\"a3e1\",\"\u20AC\"],\n[\"a440\",\"\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D\"],\n[\"a4a1\",\"\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\"],\n[\"a540\",\"\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\"],\n[\"a5a1\",\"\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168\"],\n[\"a640\",\"\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74\"],\n[\"a6a1\",\"\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63\"],\n[\"a740\",\"\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D\"],\n[\"a7a1\",\"\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760\"],\n[\"a840\",\"\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\"],\n[\"a8a1\",\"\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\"],\n[\"a940\",\"\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\"],\n[\"a9a1\",\"\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A\"],\n[\"aa40\",\"\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\"],\n[\"aaa1\",\"\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644\"],\n[\"ab40\",\"\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1\"],\n[\"aba1\",\"\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7\"],\n[\"ac40\",\"\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17\"],\n[\"aca1\",\"\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004\"],\n[\"ad40\",\"\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\"],\n[\"ada1\",\"\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA\"],\n[\"ae40\",\"\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059\"],\n[\"aea1\",\"\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93\"],\n[\"af40\",\"\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\"],\n[\"afa1\",\"\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343\"],\n[\"b040\",\"\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\"],\n[\"b0a1\",\"\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\"],\n[\"b140\",\"\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\"],\n[\"b1a1\",\"\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\"],\n[\"b240\",\"\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\"],\n[\"b2a1\",\"\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C\"],\n[\"b340\",\"\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014\"],\n[\"b3a1\",\"\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960\"],\n[\"b440\",\"\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD\"],\n[\"b4a1\",\"\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\"],\n[\"b540\",\"\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\"],\n[\"b5a1\",\"\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41\"],\n[\"b640\",\"\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591\"],\n[\"b6a1\",\"\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC\"],\n[\"b740\",\"\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D\"],\n[\"b7a1\",\"\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763\"],\n[\"b840\",\"\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B\"],\n[\"b8a1\",\"\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\"],\n[\"b940\",\"\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4\"],\n[\"b9a1\",\"\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\"],\n[\"ba40\",\"\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\"],\n[\"baa1\",\"\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\"],\n[\"bb40\",\"\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4\"],\n[\"bba1\",\"\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC\"],\n[\"bc40\",\"\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182\"],\n[\"bca1\",\"\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483\"],\n[\"bd40\",\"\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\"],\n[\"bda1\",\"\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E\"],\n[\"be40\",\"\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09\"],\n[\"bea1\",\"\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1\"],\n[\"bf40\",\"\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A\"],\n[\"bfa1\",\"\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A\"],\n[\"c040\",\"\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\"],\n[\"c0a1\",\"\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\"],\n[\"c140\",\"\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA\"],\n[\"c1a1\",\"\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01\"],\n[\"c240\",\"\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658\"],\n[\"c2a1\",\"\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6\"],\n[\"c340\",\"\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378\"],\n[\"c3a1\",\"\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E\"],\n[\"c440\",\"\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C\"],\n[\"c4a1\",\"\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\"],\n[\"c540\",\"\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C\"],\n[\"c5a1\",\"\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92\"],\n[\"c640\",\"\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72\"],\n[\"c940\",\"\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\"],\n[\"c9a1\",\"\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\"],\n[\"ca40\",\"\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418\"],\n[\"caa1\",\"\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747\"],\n[\"cb40\",\"\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293\"],\n[\"cba1\",\"\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762\"],\n[\"cc40\",\"\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B\"],\n[\"cca1\",\"\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2\"],\n[\"cd40\",\"\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA\"],\n[\"cda1\",\"\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF\"],\n[\"ce40\",\"\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\"],\n[\"cea1\",\"\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA\"],\n[\"cf40\",\"\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42\"],\n[\"cfa1\",\"\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80\"],\n[\"d040\",\"\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA\"],\n[\"d0a1\",\"\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\"],\n[\"d140\",\"\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\"],\n[\"d1a1\",\"\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\"],\n[\"d240\",\"\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278\"],\n[\"d2a1\",\"\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\"],\n[\"d340\",\"\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322\"],\n[\"d3a1\",\"\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\"],\n[\"d440\",\"\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545\"],\n[\"d4a1\",\"\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F\"],\n[\"d540\",\"\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F\"],\n[\"d5a1\",\"\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9\"],\n[\"d640\",\"\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\"],\n[\"d6a1\",\"\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F\"],\n[\"d740\",\"\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7\"],\n[\"d7a1\",\"\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA\"],\n[\"d840\",\"\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837\"],\n[\"d8a1\",\"\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\"],\n[\"d940\",\"\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\"],\n[\"d9a1\",\"\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\"],\n[\"da40\",\"\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416\"],\n[\"daa1\",\"\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\"],\n[\"db40\",\"\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\"],\n[\"dba1\",\"\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\"],\n[\"dc40\",\"\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688\"],\n[\"dca1\",\"\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6\"],\n[\"dd40\",\"\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424\"],\n[\"dda1\",\"\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC\"],\n[\"de40\",\"\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153\"],\n[\"dea1\",\"\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13\"],\n[\"df40\",\"\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F\"],\n[\"dfa1\",\"\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4\"],\n[\"e040\",\"\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F\"],\n[\"e0a1\",\"\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\"],\n[\"e140\",\"\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\"],\n[\"e1a1\",\"\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\"],\n[\"e240\",\"\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\"],\n[\"e2a1\",\"\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993\"],\n[\"e340\",\"\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\"],\n[\"e3a1\",\"\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB\"],\n[\"e440\",\"\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D\"],\n[\"e4a1\",\"\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658\"],\n[\"e540\",\"\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189\"],\n[\"e5a1\",\"\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\"],\n[\"e640\",\"\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359\"],\n[\"e6a1\",\"\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F\"],\n[\"e740\",\"\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662\"],\n[\"e7a1\",\"\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27\"],\n[\"e840\",\"\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3\"],\n[\"e8a1\",\"\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\"],\n[\"e940\",\"\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\"],\n[\"e9a1\",\"\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\"],\n[\"ea40\",\"\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799\"],\n[\"eaa1\",\"\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558\"],\n[\"eb40\",\"\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0\"],\n[\"eba1\",\"\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\"],\n[\"ec40\",\"\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\"],\n[\"eca1\",\"\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E\"],\n[\"ed40\",\"\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6\"],\n[\"eda1\",\"\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E\"],\n[\"ee40\",\"\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E\"],\n[\"eea1\",\"\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C\"],\n[\"ef40\",\"\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30\"],\n[\"efa1\",\"\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376\"],\n[\"f040\",\"\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2\"],\n[\"f0a1\",\"\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67\"],\n[\"f140\",\"\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\"],\n[\"f1a1\",\"\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\"],\n[\"f240\",\"\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B\"],\n[\"f2a1\",\"\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\"],\n[\"f340\",\"\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\"],\n[\"f3a1\",\"\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2\"],\n[\"f440\",\"\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929\"],\n[\"f4a1\",\"\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF\"],\n[\"f540\",\"\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B\"],\n[\"f5a1\",\"\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625\"],\n[\"f640\",\"\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\"],\n[\"f6a1\",\"\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A\"],\n[\"f740\",\"\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A\"],\n[\"f7a1\",\"\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE\"],\n[\"f840\",\"\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F\"],\n[\"f8a1\",\"\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\"],\n[\"f940\",\"\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\"],\n[\"f9a1\",\"\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593\"]\n]\n", "[\n[\"8740\",\"\u43F0\u4C32\u4603\u45A6\u4578\uD85C\uDE67\u4D77\u45B3\uD85F\uDCB1\u4CE2\uD85F\uDCC5\u3B95\u4736\u4744\u4C47\u4C40\uD850\uDEBF\uD84D\uDE17\uD85C\uDF52\uD85B\uDE8B\uD85C\uDCD2\u4C57\uD868\uDF51\u474F\u45DA\u4C85\uD85F\uDC6C\u4D07\u4AA4\u46A1\uD85A\uDF23\u7225\uD856\uDE54\uD846\uDE63\uD84F\uDE06\uD84F\uDF61\u664D\u56FB\"],\n[\"8767\",\"\u7D95\u591D\uD862\uDFB9\u3DF4\u9734\uD85E\uDFEF\u5BDB\uD847\uDD5E\u5AA4\u3625\uD867\uDEB0\u5AD1\u5BB7\u5CFC\u676E\u8593\uD866\uDD45\u7461\u749D\u3875\uD847\uDD53\uD84D\uDE9E\uD858\uDC21\u3EEC\"],\n[\"87a1\",\"\uD856\uDCDE\u3AF5\u7AFC\u9F97\uD850\uDD61\uD862\uDD0D\uD84C\uDDEA\uD842\uDE8A\uD84C\uDE5E\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\uD857\uDDB9\u74C6\u9FC7\u57B3\u492F\u544C\u4131\uD84D\uDE8E\u5818\u7A72\uD85E\uDF65\u8B8F\u46AE\uD85B\uDE88\u4181\uD857\uDD99\u7BAE\uD849\uDCBC\u9FC8\uD849\uDCC1\uD849\uDCC9\uD849\uDCCC\u9FC9\u8504\uD84D\uDDBB\u40B4\u9FCA\u44E1\uD86B\uDDFF\u62C1\u706E\u9FCB\"],\n[\"8840\",\"\u31C0\",4,\"\uD840\uDD0C\u31C5\uD840\uDCD1\uD840\uDCCD\u31C6\u31C7\uD840\uDCCB\uD847\uDFE8\u31C8\uD840\uDCCA\u31C9\u31CA\u31CB\u31CC\uD840\uDD0E\u31CD\u31CE\u0100\u00C1\u01CD\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1\u00D2\u0FFF\u00CA\u0304\u1EBE\u0FFF\u00CA\u030C\u1EC0\u00CA\u0101\u00E1\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\"],\n[\"88a1\",\"\u01DC\u00FC\u0FFF\u00EA\u0304\u1EBF\u0FFF\u00EA\u030C\u1EC1\u00EA\u0261\u23DA\u23DB\"],\n[\"8940\",\"\uD868\uDFA9\uD844\uDD45\"],\n[\"8943\",\"\u650A\"],\n[\"8946\",\"\u4E3D\u6EDD\u9D4E\u91DF\"],\n[\"894c\",\"\uD85D\uDF35\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E\"],\n[\"89a1\",\"\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227\"],\n[\"89ab\",\"\u918C\u78B8\u915E\u80BC\"],\n[\"89b0\",\"\u8D0B\u80F6\uD842\uDDE7\"],\n[\"89b5\",\"\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\uD867\uDDF6\uD85C\uDC0E\u9E0A\uD868\uDD33\u35C1\"],\n[\"89c1\",\"\u6E9A\u823E\u7519\"],\n[\"89c5\",\"\u4911\u9A6C\u9A8F\u9F99\u7987\uD861\uDC6C\uD847\uDDCA\uD841\uDDD0\uD84A\uDEE6\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5\"],\n[\"8a40\",\"\uD85F\uDD84\u5525\"],\n[\"8a43\",\"\uD843\uDC42\uD843\uDD15\uD854\uDD2B\u5590\uD84B\uDCC6\u39EC\uD840\uDF41\u8E46\uD853\uDDB8\uD865\uDCE5\u4053\uD860\uDCBE\u777A\uD84B\uDC38\u3A34\u47D5\uD860\uDD5D\uD85A\uDDF2\uD853\uDDEA\u64DD\uD843\uDD7C\uD843\uDFB4\uD843\uDCD5\uD844\uDCF4\u648D\u8E7E\uD843\uDE96\uD843\uDC0B\uD843\uDF64\uD84B\uDCA9\uD860\uDE56\uD851\uDCD3\"],\n[\"8a64\",\"\uD843\uDD46\uD866\uDE4D\uD860\uDCE9\u47F4\uD853\uDEA7\uD84B\uDCC2\u9AB2\u3A67\uD865\uDDF4\u3FED\u3506\uD854\uDEC7\uD865\uDFD4\uD85E\uDCC8\uD84B\uDD44\u9D6E\u9815\"],\n[\"8a76\",\"\u43D9\uD858\uDCA5\u64B4\u54E3\uD84B\uDD4C\uD84A\uDFCA\uD844\uDC77\u39FB\uD844\uDC6F\"],\n[\"8aa1\",\"\uD859\uDEDA\uD859\uDF16\uD85E\uDDA0\u64EA\uD854\uDC52\uD843\uDC43\u8E68\uD848\uDDA1\uD862\uDF4C\uD841\uDF31\"],\n[\"8aac\",\"\u480B\uD840\uDDA9\u3FFA\u5873\uD84B\uDD8D\"],\n[\"8ab2\",\"\uD851\uDDC8\uD841\uDCFC\uD858\uDC97\uD843\uDF4C\uD843\uDD96\u5579\u40BB\u43BA\"],\n[\"8abb\",\"\u4AB4\uD84A\uDE66\uD844\uDC9D\u81AA\u98F5\uD843\uDD9C\u6379\u39FE\uD849\uDF75\u8DC0\u56A1\u647C\u3E43\"],\n[\"8ac9\",\"\uD869\uDE01\uD843\uDE09\uD84A\uDECF\uD84B\uDCC9\"],\n[\"8ace\",\"\uD844\uDCC8\uD84E\uDDC2\u3992\u3A06\uD860\uDE9B\u3578\uD857\uDE49\uD848\uDCC7\u5652\uD843\uDF31\uD84B\uDCB2\uD865\uDF20\u34BC\u6C3D\uD853\uDE3B\"],\n[\"8adf\",\"\uD85D\uDD74\uD84B\uDE8B\uD848\uDE08\uD869\uDE5B\uD863\uDCCD\uD843\uDE7A\uD843\uDC34\uD85A\uDC1C\u7F93\uD844\uDCCF\uD84A\uDC03\uD84A\uDD39\u35FB\uD854\uDDE3\uD843\uDE8C\uD843\uDF8D\uD843\uDEAA\u3F93\uD843\uDF30\uD843\uDD47\uD844\uDD4F\uD843\uDE4C\"],\n[\"8af6\",\"\uD843\uDEAB\uD842\uDFA9\uD843\uDD48\uD844\uDCC0\uD844\uDD3D\u3FF9\uD849\uDE96\u6432\uD843\uDFAD\"],\n[\"8b40\",\"\uD84C\uDFF4\uD85D\uDE39\uD84A\uDFCE\uD843\uDD7E\uD843\uDD7F\uD84B\uDC51\uD84B\uDC55\u3A18\uD843\uDE98\uD844\uDCC7\uD843\uDF2E\uD869\uDE32\uD85A\uDF50\uD863\uDCD2\uD863\uDD99\uD863\uDCCA\u95AA\u54CC\u82C4\u55B9\"],\n[\"8b55\",\"\uD867\uDEC3\u9C26\u9AB6\uD85D\uDF5E\uD84B\uDDEE\u7140\u816D\u80EC\u5C1C\uD859\uDD72\u8134\u3797\u535F\uD860\uDCBD\u91B6\uD843\uDEFA\uD843\uDE0F\uD843\uDE77\uD843\uDEFB\u35DD\uD853\uDDEB\u3609\uD843\uDCD6\u56AF\uD849\uDFB5\uD844\uDCC9\uD843\uDE10\uD843\uDE78\uD844\uDC78\uD844\uDD48\uD860\uDE07\uD845\uDC55\uD843\uDE79\uD853\uDE50\uD84B\uDDA4\u5A54\uD844\uDC1D\uD844\uDC1E\uD844\uDCF5\uD844\uDCF6\u579C\uD843\uDE11\"],\n[\"8ba1\",\"\uD85D\uDE94\uD860\uDECD\uD843\uDFB5\uD843\uDE7B\uD854\uDD7E\u3703\uD843\uDFB6\uD844\uDD80\uD854\uDED8\uD868\uDEBD\uD852\uDDDA\uD846\uDC3A\uD850\uDD77\uD860\uDE7C\u5899\u5268\u361A\uD855\uDF3D\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD856\uDF74\uD84C\uDD3D\u55FB\u35F2\u5689\u4E28\u5902\uD846\uDFC1\uD87E\uDC78\u9751\uD840\uDC86\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\uD852\uDCE9\u7F52\u793B\u7CF9\u7F53\uD858\uDE6A\u34C1\"],\n[\"8bde\",\"\uD858\uDF4B\u8002\u8080\uD859\uDE12\uD85A\uDD51\u535D\u8864\u89C1\uD85E\uDCB2\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\uD863\uDE0F\u97E6\u9875\u98CE\u98DE\u9963\uD866\uDC10\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD840\uDC87\u961D\u6237\u94A2\"],\n[\"8c40\",\"\u503B\u6DFE\uD867\uDC73\u9FA6\u3DC9\u888F\uD850\uDD4E\u7077\u5CF5\u4B20\uD854\uDDCD\u3559\uD857\uDD30\u6122\uD862\uDE32\u8FA7\u91F6\u7191\u6719\u73BA\uD84C\uDE81\uD868\uDD07\u3C8B\uD846\uDD80\u4B10\u78E4\u7402\u51AE\uD861\uDF0F\u4009\u6A63\uD868\uDEBA\u4223\u860F\uD842\uDE6F\u7A2A\uD866\uDD47\uD862\uDEEA\u9755\u704D\u5324\uD848\uDC7E\u93F4\u76D9\uD862\uDDE3\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\uD847\uDDB6\u5E92\u5E99\u5FC2\uD849\uDF12\u658B\"],\n[\"8ca1\",\"\uD84C\uDFF9\u6919\u6A43\uD84F\uDC63\u6CFF\"],\n[\"8ca7\",\"\u7200\uD851\uDD05\u738C\u3EDB\uD852\uDE13\u5B15\u74B9\u8B83\uD857\uDCA4\uD855\uDE95\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\uD863\uDDB9\uD845\uDC3F\u4071\u42A2\u5A1A\"],\n[\"8cc9\",\"\u9868\u676B\u4276\u573D\"],\n[\"8cce\",\"\u85D6\uD852\uDD7B\u82BF\uD85C\uDD0D\u4C81\uD85B\uDD74\u5D7B\uD85A\uDF15\uD85B\uDFBE\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\uD84C\uDE56\uD849\uDF96\u439A\u4536\"],\n[\"8ce6\",\"\u5CD5\uD84E\uDF1A\u8AF9\u5C78\u3D12\uD84D\uDD51\u5D78\u9FB2\u7157\u4558\uD850\uDCEC\uD847\uDE23\u4C77\u3978\u344A\uD840\uDDA4\uD85B\uDC41\u8ACC\u4FB4\uD840\uDE39\u59BF\u816C\u9856\uD866\uDCFA\u5F3B\"],\n[\"8d40\",\"\uD842\uDF9F\"],\n[\"8d42\",\"\uD848\uDDC1\uD862\uDD6D\u4102\u46BB\uD864\uDC79\u3F07\u9FB3\uD868\uDDB5\u40F8\u37D6\u46F7\uD85B\uDC46\u417C\uD861\uDEB2\uD85C\uDFFF\u456D\u38D4\uD855\uDC9A\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\uD852\uDF0F\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1\"],\n[\"8da1\",\"\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\uD862\uDDC0\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD84F\uDF41\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\uD840\uDF25\u43C1\u35F1\uD843\uDED8\"],\n[\"8e40\",\"\uD84F\uDED7\u57BE\uD85B\uDED3\u713E\uD855\uDFE0\u364E\u69A2\uD862\uDFE9\u5B74\u7A49\uD856\uDCE1\uD865\uDCD9\u7A65\u7A7D\uD856\uDDAC\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD859\uDC8D\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uD857\uDC01\u7B0B\u7B55\u7B29\uD854\uDF0E\uD857\uDCFE\u7BA2\u7B6F\u839C\uD856\uDFB4\uD85B\uDC7F\u7BD0\u8421\u7B92\u7BB8\uD857\uDD20\u3DAD\uD857\uDC65\u8492\u7BFA\u7C06\u7C35\uD857\uDCC1\u7C44\u7C83\uD852\uDC82\u7CA6\u667D\uD851\uDD78\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE\"],\n[\"8ea1\",\"\u7E67\u451D\uD85B\uDE44\u7D5D\uD85B\uDED6\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\uD850\uDC57\uD858\uDC29\u7DE4\u3D13\u7DF5\uD845\uDFF9\u7DE5\uD860\uDF6D\u7E1D\uD858\uDD21\uD858\uDD5A\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\uD858\uDED0\u99E1\u7F97\uD858\uDF51\u7FA3\uD845\uDE61\uD840\uDC68\u455C\uD84D\uDF66\u4503\uD860\uDF3A\u7FFA\uD859\uDC89\u8005\u8008\u801D\u8028\u802F\uD868\uDC87\uD85B\uDCC3\u803B\u803C\u8061\uD849\uDF14\u4989\uD859\uDE26\uD84F\uDDE3\uD859\uDEE8\u6725\u80A7\uD862\uDE48\u8107\u811A\u58B0\uD849\uDEF6\u6C7F\uD859\uDC98\uD853\uDFB8\u64E7\uD845\uDC8A\u8218\uD846\uDC5E\u6A53\uD852\uDE65\uD852\uDE95\u447A\u8229\uD842\uDF0D\uD85A\uDE52\uD84F\uDD7E\u4FF9\uD845\uDCFD\u84E2\u8362\uD85A\uDF0A\uD852\uDDA7\uD84D\uDD30\uD845\uDF73\uD84F\uDDF8\u82AA\u691B\uD87E\uDD94\u41DB\"],\n[\"8f40\",\"\u854B\u82D0\u831A\uD843\uDE16\uD845\uDFB4\u36C1\uD84C\uDD7D\uD84D\uDD5A\u827B\u82E2\u8318\uD84F\uDE8B\uD85B\uDDA3\uD85A\uDF05\uD85A\uDF97\uD84D\uDDCE\u3DBF\u831D\u55EC\u8385\u450B\uD85B\uDDA5\u83AC\u83C1\u83D3\u347E\uD85B\uDED4\u6A57\u855A\u3496\uD85B\uDE42\uD84B\uDEEF\u8458\uD856\uDFE4\u8471\u3DD3\u44E4\u6AA7\u844A\uD84F\uDCB5\u7958\u84A8\uD85A\uDF96\uD85B\uDE77\uD85B\uDE43\u84DE\u840F\u8391\u44A0\u8493\u84E4\uD857\uDC91\u4240\uD857\uDCC0\u4543\u8534\u5AF2\uD85B\uDE99\u4527\u8573\u4516\u67BF\u8616\"],\n[\"8fa1\",\"\uD861\uDE25\uD861\uDE3B\u85C1\uD85C\uDC88\u8602\uD845\uDD82\uD85C\uDCCD\uD87E\uDDB2\u456A\u8628\u3648\uD846\uDCA2\u53F7\uD85C\uDF9A\u867E\u8771\uD868\uDCF8\u87EE\uD84B\uDC27\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\uD85D\uDDE0\uD84F\uDDB9\uD85D\uDDE4\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\uD85D\uDF0F\u8987\u898A\u89A6\u89A9\u89A7\u89BC\uD862\uDE25\u89E7\uD85E\uDD24\uD85E\uDEBD\u8A9C\u7793\u91FE\u8A90\uD85E\uDE59\u7AE9\uD85E\uDF3A\uD84F\uDF8F\u4713\uD85E\uDF38\u717C\u8B0C\u8B1F\uD855\uDC30\uD855\uDD65\u8B3F\u8B4C\u8B4D\u8AA9\uD852\uDE7A\u8B90\u8B9B\u8AAF\uD845\uDEDF\u4615\u884F\u8C9B\uD85F\uDD54\uD85F\uDD8F\uD87E\uDDD4\u3725\uD85F\uDD53\u8CD6\uD85F\uDD98\uD85F\uDDBD\u8D12\u8D03\uD846\uDD10\u8CDB\u705C\u8D11\uD853\uDCC9\u3ED0\u8D77\"],\n[\"9040\",\"\u8DA9\uD860\uDC02\uD844\uDC14\uD852\uDD8A\u3B7C\uD860\uDDBC\uD85C\uDD0C\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD860\uDF65\uD861\uDC12\u8FA5\u9303\uD868\uDE9F\uD842\uDE50\u8FB3\u492A\uD862\uDDDE\uD861\uDD3D\uD84F\uDDBB\u5EF8\uD84C\uDE62\u8FF9\uD868\uDC14\uD861\uDEBC\uD861\uDD01\uD848\uDF25\u3980\uD85B\uDED7\u9037\uD861\uDD3C\uD85E\uDEBE\u9061\uD861\uDD6C\uD861\uDE0B\u90A8\uD861\uDF13\u90C4\uD861\uDEE6\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\uD862\uDD33\uD847\uDE89\u920E\u6C9F\u9241\u9262\uD855\uDDB9\u92B9\uD862\uDEC6\uD84F\uDC9B\uD862\uDF0C\uD855\uDDDB\"],\n[\"90a1\",\"\uD843\uDD31\u932C\u936B\uD862\uDEE1\uD862\uDFEB\u708F\u5AC3\uD862\uDEE2\uD862\uDEE5\u4965\u9244\uD862\uDFEC\uD863\uDC39\uD862\uDFFF\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD849\uDE7A\uD861\uDED8\uD844\uDE7C\uD84F\uDE2E\u49DF\u6C1C\u967B\u9696\u416C\u96A3\uD85B\uDED5\u61DA\u96B6\u78F5\uD862\uDEE0\u96BD\u53CC\u49A1\uD85B\uDCB8\uD840\uDE74\uD859\uDC10\uD864\uDCAF\uD864\uDCE5\uD852\uDED1\uD846\uDD15\uD84C\uDF0A\u9731\u8642\u9736\u4A0F\u453D\u4585\uD852\uDEE9\u7075\u5B41\u971B\u975C\uD864\uDDD5\u9757\u5B4A\uD864\uDDEB\u975F\u9425\u50D0\uD84C\uDCB7\uD84C\uDCBC\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\uD855\uDC6C\u97EE\u741C\uD865\uDC33\u97FF\u97F5\uD865\uDC1D\uD85E\uDD7A\u4AD1\u9834\u9833\u984B\u9866\u3B0E\uD85C\uDD75\u3D51\uD841\uDE30\uD850\uDD5C\"],\n[\"9140\",\"\uD855\uDF06\u98CA\u98B7\u98C8\u98C7\u4AFF\uD85B\uDD27\uD845\uDED3\u55B0\u98E1\u98E6\u98EC\u9378\u9939\uD852\uDE29\u4B72\uD866\uDC57\uD866\uDD05\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD855\uDF25\u36C4\uD864\uDCB1\uD866\uDFD5\u9AE0\u9AE2\uD866\uDF05\u9AF4\u4C0E\u9B14\u9B2D\uD861\uDE00\u5034\u9B34\uD85A\uDDA8\u38C3\uD84C\uDC7D\u9B50\u9B40\uD867\uDD3E\u5A45\uD846\uDC63\u9B8E\uD850\uDE4B\u9C02\u9BFF\u9C0C\uD867\uDE68\u9DD4\uD867\uDFB7\uD868\uDD92\uD868\uDDAB\uD868\uDCE1\uD868\uDD23\uD868\uDDDF\u9D7E\u9D83\uD868\uDD34\u9E0E\u6888\"],\n[\"91a1\",\"\u9DC4\uD848\uDD5B\uD868\uDD93\uD868\uDE20\uD846\uDD3B\uD868\uDE33\u9D39\uD868\uDCB9\uD868\uDEB4\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD850\uDF64\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD863\uDC2B\u9F02\u9F08\u4B96\u9424\uD85B\uDDA2\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\uD864\uDC8B\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\uD852\uDD75\uD852\uDDBB\u7177\uD852\uDDF8\uD850\uDF48\uD852\uDE51\u739E\uD862\uDFDA\uD846\uDCFA\u799F\uD862\uDD7E\uD863\uDE36\u9369\u93F3\uD862\uDE44\u92EC\u9381\u93CB\uD862\uDD6C\uD851\uDCB9\u7217\u3EEB\u7772\u7A43\u70D0\uD851\uDC73\uD850\uDFF8\u717E\uD845\uDFEF\u70A3\uD846\uDCBE\uD84D\uDD99\u3EC7\uD846\uDC85\uD855\uDC2F\uD845\uDFF8\u3722\uD845\uDEFB\uD846\uDC39\u36E1\uD845\uDF74\uD846\uDCD1\uD857\uDF4B\u3723\uD845\uDEC0\u575B\uD852\uDE25\uD844\uDFFE\uD844\uDEA8\"],\n[\"9240\",\"\uD844\uDFC6\uD845\uDCB6\u8503\uD84D\uDEA6\u8503\u8455\uD852\uDD94\uD85C\uDD65\uD84F\uDE31\uD855\uDD5C\uD84F\uDEFB\uD85C\uDC52\u44F4\uD84D\uDEEE\uD866\uDD9D\uD85B\uDF26\u67F9\u3733\u3C15\u3DE7\u586C\uD846\uDD22\u6810\u4057\uD84D\uDF3F\uD850\uDCE1\uD850\uDC8B\uD850\uDD0F\uD85B\uDC21\u54CB\u569E\uD859\uDEB1\u5692\uD843\uDFDF\uD842\uDFA8\uD843\uDE0D\u93C6\uD862\uDF13\u939C\u4EF8\u512B\u3819\uD851\uDC36\u4EBC\uD841\uDC65\uD840\uDF7F\u4F4B\u4F8A\uD855\uDE51\u5A68\uD840\uDDAB\uD840\uDFCB\u3999\uD840\uDF0A\uD841\uDC14\u3435\u4F29\uD840\uDEC0\uD863\uDEB3\uD840\uDE75\u8ADA\uD840\uDE0C\u4E98\"],\n[\"92a1\",\"\u50CD\u510D\u4FA2\u4F03\uD852\uDE0E\uD84F\uDE8A\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\uD84D\uDD95\uD84F\uDE39\uD84F\uDEBF\u6D72\uD846\uDC84\uD84F\uDE89\u51A8\u51C3\uD841\uDDE0\u44DD\uD841\uDCA3\uD841\uDC92\uD841\uDC91\u8D7A\uD862\uDE9C\uD841\uDF0E\u5259\u52A4\uD842\uDC73\u52E1\u936E\u467A\u718C\uD850\uDF8C\uD843\uDC20\uD852\uDDAC\uD844\uDCE4\u69D1\uD843\uDE1D\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uD852\uDEBC\uD850\uDC8D\u53D0\u3584\u720F\uD850\uDCC9\u55B4\uD840\uDF45\u54CD\uD842\uDFC6\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\uD862\uDE46\uD845\uDEFA\uD845\uDF6F\uD845\uDF10\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\uD856\uDD46\uD846\uDDF3\uD846\uDC61\uD850\uDE95\u36F5\u6D05\u7443\u5A21\uD857\uDE83\"],\n[\"9340\",\"\u5A81\uD862\uDFD7\uD841\uDC13\u93E0\u748C\uD844\uDF03\u7105\u4972\u9408\uD862\uDDFB\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uD846\uDD96\uD846\uDD7C\uD84E\uDEEE\u5ECD\u5B4F\uD846\uDD03\uD846\uDD04\u3701\uD846\uDCA0\u36DD\uD845\uDEFE\u36D3\u812A\uD862\uDE47\uD847\uDDBA\uD84D\uDC72\uD862\uDDA8\u5F0C\u5F0E\uD846\uDD27\uD845\uDFAB\u5A6B\uD845\uDF3B\u5B44\u8614\uD85D\uDDFD\u8860\u607E\uD84A\uDC60\uD849\uDE2B\u5FDB\u3EB8\uD849\uDDAF\uD849\uDDBE\uD864\uDC88\uD85B\uDF73\u61C0\uD840\uDC3E\uD840\uDC46\uD849\uDE1B\u6199\u6198\u6075\uD84B\uDC9B\uD84B\uDD07\uD851\uDED4\uD864\uDD4D\"],\n[\"93a1\",\"\u6471\uD851\uDE65\uD84A\uDF6A\u3A29\uD84A\uDF22\uD84D\uDC50\uD866\uDCEA\uD84B\uDE78\u6337\uD869\uDC5B\u64B6\u6331\u63D1\uD852\uDDE3\uD84B\uDD67\u62A4\uD84B\uDCA1\u643B\u656B\u6972\u3BF4\uD84C\uDC8E\uD84C\uDEAD\uD852\uDD89\uD84C\uDEAB\u550D\uD84C\uDEE0\uD846\uDCD9\uD865\uDC3F\u66CE\uD84C\uDE89\uD84C\uDDB3\u3AE0\u4190\uD855\uDD84\uD862\uDF22\uD855\uDD8F\uD845\uDEFC\uD855\uDD5B\uD855\uDC25\u78EE\uD84C\uDD03\uD846\uDC2A\uD84C\uDE34\u3464\uD84C\uDE0F\uD84C\uDD82\uD850\uDEC9\u668E\uD85B\uDD24\u666B\u4B93\u6630\uD85E\uDC70\uD847\uDDEB\u6663\uD84C\uDED2\uD84C\uDEE1\u661E\uD856\uDC72\u38D1\uD84E\uDC3A\uD84D\uDFBC\u3B99\uD84D\uDFA2\uD84C\uDFFE\u74D0\u3B96\u678F\uD851\uDE2A\u68B6\u681E\u3BC4\u6ABE\u3863\uD84D\uDFD5\uD851\uDC87\u6A33\u6A52\u6AC9\u6B05\uD846\uDD12\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uD84F\uDFC0\uD84F\uDC9A\u93A0\u92F2\uD862\uDFEA\uD862\uDECB\"],\n[\"9440\",\"\u9289\uD860\uDC1E\uD862\uDDDC\u9467\u6DA5\u6F0B\uD852\uDDEC\u6D67\uD84F\uDF7F\u3D8F\u6E04\uD850\uDC3C\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uD850\uDF1A\uD850\uDE76\u70F1\u7250\u7287\u7294\uD851\uDF8F\uD851\uDF25\u5179\uD852\uDEA4\uD841\uDDEB\u747A\uD84F\uDEF8\uD84D\uDE5F\uD852\uDE4A\uD852\uDD17\uD857\uDFE1\u3F06\u3EB1\uD852\uDEDF\uD863\uDC23\uD84F\uDF35\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\uD85B\uDDEA\u4551\u7583\u3F63\uD853\uDCD9\uD853\uDD06\u3F58\u7555\u7673\uD869\uDDC6\u3B19\u7468\uD862\uDECC\uD852\uDDAB\uD852\uDD8E\u3AFB\"],\n[\"94a1\",\"\u3DCD\uD852\uDE4E\u3EFF\uD852\uDDC5\uD852\uDCF3\u91FA\u5732\u9342\uD862\uDEE3\uD846\uDC64\u50DF\uD854\uDE21\uD854\uDDE7\u7778\uD84C\uDE32\u770E\u770F\u777B\uD851\uDE97\uD84D\uDF81\u3A5E\uD852\uDCF0\u7438\u749B\u3EBF\uD852\uDEBA\uD852\uDEC7\u40C8\uD852\uDE96\uD858\uDDAE\u9307\uD855\uDD81\u781E\u788D\u7888\u78D2\u73D0\u7959\uD85D\uDF41\uD855\uDEE3\u410E\u799B\u8496\u79A5\u6A2D\uD84F\uDEFA\u7A3A\u79F4\u416E\uD845\uDEE6\u4132\u9235\u79F1\uD843\uDD4C\uD852\uDD8C\uD840\uDE99\uD84F\uDDBA\uD845\uDF6E\u3597\u556B\u3570\u36AA\uD840\uDDD4\uD843\uDC0D\u7AE2\u5A59\uD849\uDEF5\uD856\uDEAF\uD856\uDE9C\u5A0D\uD840\uDE5B\u78F0\u5A2A\uD856\uDFC6\u7AFE\u41F9\u7C5D\u7C6D\u4211\uD856\uDFB3\uD857\uDEBC\uD857\uDEA6\u7CCD\uD852\uDDF9\uD845\uDFB0\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\uD858\uDE61\"],\n[\"9540\",\"\uD858\uDD5C\uD85E\uDF48\u7D97\uD857\uDE82\u426A\uD85A\uDF75\uD842\uDD16\u67D6\uD840\uDC4E\uD84D\uDDCF\u57C4\uD859\uDC12\uD858\uDFF8\uD852\uDD62\u7FDD\u7B27\uD842\uDC2C\uD856\uDEE9\uD857\uDD43\u7B0C\uD857\uDE0E\u99E6\u8645\u9A63\u6A1C\uD84D\uDC3F\u39E2\uD852\uDDF7\uD859\uDDAD\u9A1F\uD859\uDDA0\u8480\uD85C\uDD27\uD85B\uDCD1\u44EA\u8137\u4402\u80C6\u8109\u8142\uD859\uDFB4\u98C3\uD85A\uDE42\u8262\u8265\uD85A\uDE51\u8453\uD85B\uDDA7\u8610\uD85C\uDE1B\u5A86\u417F\uD846\uDC40\u5B2B\uD846\uDCA1\u5AE4\uD846\uDCD8\u86A0\uD87E\uDDBC\uD84F\uDD8F\u882D\uD85D\uDC22\u5A02\"],\n[\"95a1\",\"\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\uD855\uDE83\u8954\uD85D\uDF85\uD85D\uDF84\uD862\uDFF5\uD862\uDFD9\uD862\uDF9C\uD862\uDDF9\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\uD865\uDC48\u5F4D\u922B\uD850\uDE84\u65D4\u7129\u70C4\uD846\uDC45\u9D6D\u8C9F\u8CE9\uD85F\uDDDC\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\uD853\uDC09\u8F30\u8F4A\u42F4\u6C58\u6FBB\uD848\uDF21\u489B\u6F79\u6E8B\uD845\uDFDA\u9BE9\u36B5\uD852\uDD2F\u90BB\u9097\u5571\u4906\u91BB\u9404\uD862\uDE4B\u4062\uD862\uDEFC\u9427\uD863\uDC1D\uD863\uDC3B\u84E5\u8A2B\u9599\u95A7\u9597\u9596\uD863\uDD34\u7445\u3EC2\uD852\uDCFF\uD852\uDE42\uD850\uDFEA\u3EE7\uD84C\uDE25\u968F\uD863\uDEE7\uD863\uDE66\uD863\uDE65\u3ECC\uD852\uDDED\uD852\uDE78\uD84F\uDFEE\u7412\u746B\u3EFC\u9741\uD864\uDCB0\"],\n[\"9640\",\"\u6847\u4A1D\uD864\uDC93\uD855\uDFDF\u975D\u9368\uD862\uDD89\uD863\uDC26\uD862\uDF2F\uD858\uDFBE\u92BA\u5B11\u8B69\u493C\u73F9\uD850\uDE1B\u979B\u9771\u9938\uD843\uDF26\u5DC1\uD862\uDFC5\uD852\uDEB2\u981F\uD865\uDCDA\u92F6\uD865\uDDD7\u91E5\u44C0\uD862\uDF50\uD852\uDE67\uD862\uDF64\u98DC\uD862\uDE45\u3F00\u922A\u4925\u8414\u993B\u994D\uD85E\uDF06\u3DFD\u999B\u4B6F\u99AA\u9A5C\uD862\uDF65\uD856\uDCC8\u6A8F\u9A21\u5AFE\u9A2F\uD866\uDCF1\u4B90\uD866\uDD48\u99BC\u4BBD\u4B97\u937D\u5872\uD844\uDF02\u5822\uD852\uDDB8\"],\n[\"96a1\",\"\uD845\uDCE8\u7844\uD849\uDF1F\uD84F\uDDB8\u68C5\u3D7D\u9458\u3927\u6150\uD849\uDF81\uD84A\uDD6B\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uD867\uDE2D\u9B9F\uD868\uDDF5\uD868\uDCFE\u9D21\u4CAE\uD850\uDD04\u9E18\u4CB0\u9D0C\uD868\uDDB4\uD868\uDCED\uD868\uDCF3\uD866\uDD2F\u9DA5\u84BD\uD85B\uDE12\uD85B\uDFDF\uD85A\uDF82\u85FC\u4533\uD85B\uDDA4\uD85B\uDE84\uD85B\uDDF0\u8420\u85EE\uD85B\uDE00\uD84D\uDFD7\uD858\uDC64\u79E2\uD84D\uDD9C\uD84D\uDE40\u492D\uD852\uDDDE\u3D62\u93DB\u92BE\u9348\uD840\uDEBF\u78B9\u9277\u944D\u4FE4\u3440\u9064\uD855\uDD5D\u783D\u7854\u78B6\u784B\uD845\uDF57\uD84C\uDDC9\uD852\uDD41\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\uD850\uDDB5\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\uD850\uDDAC\u71EB\uD85B\uDC40\uD853\uDF97\u5B28\uD845\uDFB5\uD862\uDE49\"],\n[\"9740\",\"\u610C\u5ACE\u5A0B\u42BC\uD851\uDC88\u372C\u4B7B\uD862\uDDFC\u93BB\u93B8\uD846\uDCD6\uD843\uDF1D\u8472\uD85B\uDCC0\uD845\uDC13\uD850\uDEFA\uD84B\uDC26\uD850\uDFC1\u5994\uD84F\uDDB7\uD859\uDF41\u7DA8\uD858\uDD5B\uD858\uDCA4\uD852\uDDB9\uD852\uDD8B\uD862\uDDFA\u92E5\u73E2\u3EE9\u74B4\uD862\uDF63\uD846\uDC9F\u3EE1\uD852\uDEB3\u6AD8\u73F3\u73FB\u3ED6\uD852\uDE3E\uD852\uDE94\uD845\uDFD9\uD852\uDE66\uD840\uDFA7\uD845\uDC24\uD852\uDDE5\u7448\uD852\uDD16\u70A5\uD852\uDD76\u9284\u73E6\u935F\uD841\uDCFE\u9331\uD862\uDECE\uD862\uDE16\u9386\uD862\uDFE7\uD855\uDDD5\u4935\uD862\uDE82\u716B\"],\n[\"97a1\",\"\uD852\uDD43\uD843\uDCFF\u56A4\uD841\uDE1A\uD842\uDFEB\uD843\uDCB8\u5502\u79C4\uD845\uDFFA\u7DFE\uD845\uDEC2\uD852\uDE50\uD846\uDC52\u452E\u9401\u370A\uD862\uDEC0\uD852\uDDAD\u59B0\uD846\uDCBF\uD846\uDC83\uD85D\uDC84\u5AA1\u36E2\uD84F\uDD5B\u36B0\u925F\u5A79\uD862\uDE81\uD846\uDC62\u9374\u3CCD\uD842\uDEB4\u4A96\u398A\u50F4\u3D69\u3D4C\uD844\uDF9C\u7175\u42FB\uD860\uDE18\u6E0F\uD864\uDCE4\u44EB\u6D57\uD85F\uDE4F\u7067\u6CAF\u3CD6\uD84F\uDFED\uD84F\uDE2D\u6E02\u6F0C\u3D6F\uD840\uDFF5\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\uD863\uDC1C\uD85A\uDFC0\u5812\u57C8\u36D6\uD845\uDC52\u70FE\uD850\uDF62\uD852\uDE71\uD84B\uDFE3\uD844\uDEB0\uD848\uDFBD\u68B9\u6967\uD844\uDF98\uD84D\uDCE5\uD85E\uDFF4\uD84D\uDEDF\uD862\uDE83\uD84D\uDFD6\uD84C\uDFFA\uD853\uDC9F\u6A1A\uD84D\uDEAD\uD85B\uDCB7\u843E\u44DF\u44CE\"],\n[\"9840\",\"\uD85B\uDD26\uD85B\uDD51\uD85B\uDC82\uD85B\uDFDE\u6F17\uD85C\uDD09\u833D\uD845\uDF3A\u83ED\uD85B\uDC80\uD85C\uDC53\uD845\uDFDB\u5989\u5A82\uD845\uDFB3\u5A61\u5A71\uD846\uDD05\uD850\uDDFC\u372D\u59EF\uD845\uDF3C\u36C7\u718E\u9390\u669A\uD850\uDEA5\u5A6E\u5A2B\uD850\uDE93\u6A2B\uD84F\uDEF9\uD85D\uDF36\uD851\uDC5B\uD850\uDECA\u711D\uD850\uDE59\uD862\uDDE1\u4FB0\uD85B\uDD28\u5CC2\uD851\uDCCE\uD85F\uDE4D\uD850\uDFBD\u6A0C\uD850\uDE56\uD844\uDF04\u70A6\u7133\uD850\uDFE9\u3DA5\u6CDF\uD87E\uDC25\uD852\uDE4F\u7E65\u59EB\u5D2F\u3DF3\u5F5C\uD852\uDE5D\uD845\uDFDF\u7DA4\u8426\"],\n[\"98a1\",\"\u5485\uD84E\uDEFA\uD84C\uDF00\uD840\uDE14\u577E\uD842\uDCD5\uD841\uDE19\u3FE5\uD847\uDF9E\uD868\uDEB6\u7003\uD864\uDD5B\u5D70\u738F\u7CD3\uD862\uDE59\uD865\uDC20\u4FC8\u7FE7\u72CD\u7310\uD85E\uDEF4\u7338\u7339\uD855\uDEF6\u7341\u7348\u3EA9\uD85E\uDF18\u906C\u71F5\uD852\uDCF2\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uD853\uDF5C\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\uD855\uDD35\u7933\u6803\u7932\u4103\"],\n[\"9940\",\"\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uD843\uDCCF\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A\"],\n[\"99a1\",\"\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\uD85E\uDD67\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF\"],\n[\"9a40\",\"\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\uD846\uDFC2\u9D49\u9C3A\"],\n[\"9aa1\",\"\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\uD840\uDC94\uD840\uDEB7\uD840\uDFA0\u691A\u94C3\u59AC\uD841\uDCD7\u5840\u94C1\u37B9\uD841\uDDD5\uD841\uDE15\uD841\uDE76\uD845\uDEBA\u5757\u7173\uD842\uDEC2\uD842\uDECD\uD842\uDFBF\u546A\uD87E\uDC3B\uD842\uDFCB\u549E\uD842\uDFFB\uD843\uDC3B\uD843\uDC53\uD843\uDC65\uD843\uDC7C\u60E7\uD843\uDC8D\u567A\uD843\uDCB5\uD843\uDCDD\uD843\uDCED\uD843\uDD6F\uD843\uDDB2\uD843\uDDC8\u6955\u9C2F\u87A5\uD843\uDE04\uD843\uDE0E\uD843\uDED7\uD843\uDF90\uD843\uDF2D\uD843\uDE73\u5C20\uD843\uDFBC\u5E0B\uD844\uDC5C\uD844\uDC4F\uD844\uDC76\u671E\uD844\uDC7B\uD844\uDC88\uD844\uDC96\u3647\uD844\uDCBF\uD844\uDCD3\uD844\uDD2F\uD844\uDD3B\u5364\u84AD\uD844\uDEE3\uD844\uDF75\uD844\uDF36\u8B81\uD845\uDD77\uD845\uDE19\uD845\uDFC3\uD845\uDFC7\u4E78\u70BB\uD846\uDC2D\uD846\uDD6A\"],\n[\"9b40\",\"\uD846\uDE2D\uD846\uDE45\uD847\uDC2A\uD847\uDC70\uD847\uDCAC\uD847\uDEC8\u62C3\uD847\uDED5\uD847\uDF15\u7198\u6855\uD848\uDC45\u69E9\u36C8\uD848\uDE7C\uD848\uDFD7\uD848\uDFFA\uD849\uDF2A\uD84A\uDC71\uD84A\uDD4F\u82FD\uD84A\uDD67\uD84A\uDD93\uD84A\uDED5\u89A5\uD84A\uDEE8\u8FA0\uD84A\uDF0E\u97B8\uD84A\uDF3F\u9847\u9ABD\uD84B\uDC4C\"],\n[\"9b62\",\"\uD84B\uDC88\uD84B\uDCB7\uD856\uDFE8\uD84B\uDD08\uD84B\uDD12\uD84B\uDDB7\uD84B\uDD95\uD84B\uDE42\uD84B\uDF74\uD84B\uDFCC\uD84C\uDC33\uD84C\uDC66\uD84C\uDF1F\uD84C\uDFDE\u5FB1\u6648\u66BF\uD85E\uDE79\uD84D\uDD67\uD84D\uDDF3\u7201\uD852\uDDBA\u77D7\uD84D\uDE1A\uD84D\uDF16\u7E87\uD840\uDF46\u58B5\u670E\"],\n[\"9ba1\",\"\u6918\uD84E\uDEA7\uD85D\uDE57\uD857\uDFE2\uD84F\uDE11\uD84F\uDEB9\uD85D\uDDFE\uD848\uDC9A\u48D0\u4AB8\uD850\uDD19\uD862\uDE9A\uD850\uDEEE\uD850\uDF0D\uD850\uDC3B\uD850\uDF34\uD850\uDF96\uD852\uDE45\uD841\uDDCA\u51D2\uD841\uDE11\u599F\uD847\uDEA8\u3BBE\uD84F\uDCFF\uD851\uDC04\uD851\uDCD6\u5788\uD851\uDE74\u399B\uD851\uDF2F\uD861\uDDE8\uD866\uDDC9\u3762\uD848\uDDC3\u8B5E\uD862\uDF4E\u99D6\uD852\uDC12\uD852\uDCFB\uD852\uDE15\u7209\uD852\uDEC0\uD843\uDC78\u5965\uD853\uDEA5\uD853\uDF86\uD841\uDF79\u8EDA\uD854\uDC2C\u528F\u573F\u7171\uD854\uDE99\uD855\uDC19\uD84F\uDF4A\uD852\uDEA7\u55BC\uD855\uDC46\uD855\uDC6E\uD85A\uDF52\u91D4\u3473\uD855\uDD3F\uD85D\uDE32\uD855\uDD5E\u4718\uD855\uDD62\uD855\uDD66\uD855\uDFC7\uD852\uDD3F\uD856\uDC5D\u5066\u34FB\uD84C\uDFCC\u60DE\uD856\uDD03\u477C\uD862\uDD48\uD856\uDEAE\uD856\uDF89\uD857\uDC06\uD847\uDD90\u57A1\u7151\u6FB6\uD858\uDD02\uD85F\uDC12\u9056\uD858\uDDB2\uD853\uDF9A\u8B62\uD859\uDC02\uD859\uDC4A\"],\n[\"9c40\",\"\u5D5B\uD85A\uDFF7\u8F36\uD859\uDC84\uD846\uDD1C\u8AEA\uD852\uDDF6\uD859\uDC88\uD84F\uDFEF\uD859\uDD12\u4BC0\uD859\uDDBF\uD859\uDEB5\uD849\uDF1B\u9465\uD855\uDFE1\u6195\u5A27\uD87E\uDCCD\u4FBB\u56B9\uD851\uDD21\uD859\uDEFC\u4E6A\uD852\uDD34\u9656\u6D8F\uD85B\uDCBD\u3618\u8977\uD859\uDF99\uD85A\uDC6E\uD859\uDC11\uD85A\uDC5E\u71DF\uD85A\uDCC7\u7B42\uD864\uDCC0\uD842\uDE11\uD85A\uDD26\u9104\uD85A\uDD39\u7A45\u9DF0\uD85A\uDDFA\u9A26\uD85A\uDE2D\u365F\uD859\uDC69\uD840\uDC21\u7983\uD85A\uDE34\uD85A\uDF5B\u5D2C\uD84D\uDD19\u83CF\uD85A\uDF9D\u46D0\uD85B\uDCA4\u753B\u8865\uD85B\uDDAE\u58B6\"],\n[\"9ca1\",\"\u371C\uD849\uDD8D\uD85C\uDC4B\uD85C\uDDCD\u3C54\uD85C\uDE80\uD85C\uDE85\u9281\uD848\uDD7A\uD85C\uDE8B\u9330\uD85C\uDEE6\uD852\uDDD0\u6C39\u949F\uD85D\uDC50\uD843\uDEF8\u8827\u88F5\uD84A\uDD26\uD861\uDC73\uD845\uDFB1\u6EB8\uD852\uDE2A\uD846\uDC20\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\uD867\uDCAD\uD866\uDCA4\u8943\uD85D\uDFCC\uD85E\uDC58\u56D6\u40DF\uD845\uDE0A\u39A1\uD84D\uDF2F\uD860\uDCE8\uD844\uDFC5\u71AD\u8366\uD85E\uDDDD\uD864\uDDA8\u5A67\u4CB7\uD85C\uDCAF\uD862\uDDAB\uD85E\uDDFD\uD85E\uDE0A\uD85E\uDF0B\uD85F\uDD66\uD850\uDD7A\u7B43\u797E\uD860\uDC09\u6FB5\uD868\uDEDF\u6A03\uD860\uDF18\u53A2\uD85B\uDE07\u93BF\u6836\u975D\uD860\uDD6F\uD860\uDC23\uD85A\uDDB5\uD844\uDFED\uD84C\uDE2F\uD860\uDC48\u5D85\uD863\uDC30\uD860\uDC83\u5715\u9823\uD862\uDD49\u5DAB\uD852\uDD88\u65BE\u69D5\u53D2\uD852\uDEA5\uD84F\uDF81\u3C11\u6736\uD860\uDC90\uD860\uDCF4\uD860\uDD2E\uD847\uDFA1\uD860\uDD4F\"],\n[\"9d40\",\"\uD860\uDD89\uD860\uDDAF\uD860\uDE1A\uD860\uDF06\uD860\uDF2F\uD860\uDF8A\u35CA\uD861\uDC68\uD861\uDEAA\u48FA\u63E6\uD862\uDD56\u7808\u9255\uD862\uDDB8\u43F2\uD862\uDDE7\u43DF\uD862\uDDE8\uD862\uDF46\uD862\uDFD4\u59F8\uD863\uDC09\u8F0B\uD863\uDFC5\uD864\uDCEC\u7B51\uD864\uDD10\uD864\uDD3C\u3DF7\uD864\uDD5E\uD852\uDECA\u8FD0\u728F\u568B\uD865\uDCE7\uD865\uDDE9\uD865\uDDB0\uD865\uDDB8\uD865\uDF32\uD866\uDCD1\uD866\uDD49\uD866\uDD6A\uD866\uDDC3\uD866\uDE28\uD866\uDF0E\uD867\uDD5A\uD867\uDD9B\u7E9F\uD867\uDEF8\uD867\uDF23\u4CA4\u9547\uD868\uDE93\u71A2\uD868\uDEFF\u4D91\u9012\uD869\uDDCB\u4D9C\uD843\uDC9C\u8FBE\u55C1\"],\n[\"9da1\",\"\u8FBA\uD849\uDCB0\u8FB9\uD852\uDE93\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uD862\uDF2C\uD85E\uDC9D\u373A\u8E80\uD845\uDFF5\uD860\uDC24\uD862\uDF6C\uD862\uDF99\uD85E\uDE3E\uD859\uDEAF\u3DEB\uD85D\uDE55\uD84F\uDCB7\uD855\uDE35\uD856\uDD56\u4E9A\uD857\uDE81\uD858\uDE58\u56BF\uD843\uDE6D\u8E0E\u5B6D\uD84F\uDE88\uD853\uDC9E\u63DE\u62D0\uD845\uDFF6\uD846\uDC7B\u6530\u562D\uD857\uDC4A\u541A\uD854\uDF11\u3DC6\uD867\uDD98\u4C7D\u5622\u561E\u7F49\uD857\uDED8\u5975\uD84F\uDD40\u8770\u4E1C\uD843\uDFEA\uD843\uDD49\uD84D\uDEBA\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uD843\uDE9D\u35CE\u5605\u55F1\u66F1\uD860\uDEE2\u362D\u7534\u55F0\u55BA\u5497\u5572\uD843\uDC41\uD843\uDC96\u5ED0\uD854\uDD48\uD843\uDE76\uD84B\uDC62\"],\n[\"9e40\",\"\uD843\uDEA2\u9EAB\u7D5A\u55DE\uD844\uDC75\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\uD84A\uDF43\u9C72\uD84B\uDEB3\u519A\u34DF\uD843\uDDA7\u51A7\u544D\u551E\u5513\u7666\u8E2D\uD85A\uDC8A\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\uD844\uDCC1\u44EC\u7304\uD851\uDF06\u5B90\u830B\uD85A\uDC93\u567B\uD849\uDEF4\uD85F\uDD2F\uD850\uDDA3\uD85F\uDD73\uD85B\uDED0\uD85C\uDEB6\u9170\uD844\uDDD9\u9208\uD84F\uDCFC\uD869\uDEA9\uD843\uDEAC\uD843\uDEF9\u7266\uD847\uDCA2\u474E\uD853\uDFC2\uD85F\uDFF9\uD843\uDFEB\u40FA\"],\n[\"9ea1\",\"\u9C5D\u651F\uD84B\uDDA0\u48F3\uD851\uDFE0\uD867\uDD7C\uD843\uDFEC\uD843\uDE0A\u6062\uD85D\uDDA3\uD843\uDFED\"],\n[\"9ead\",\"\uD858\uDC48\uD844\uDD87\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uD851\uDE18\u589A\uD852\uDF6E\u822D\u544B\u57AA\uD856\uDE95\uD842\uDD79\"],\n[\"9ec5\",\"\u3A52\uD849\uDC65\u7374\uD867\uDEAC\u4D09\u9BED\uD84F\uDCFE\uD867\uDF30\u4C5B\uD853\uDFA9\uD865\uDD9E\uD867\uDFDE\u845C\uD84F\uDDB6\uD85C\uDEB2\uD859\uDFB3\uD84D\uDF20\u632E\u7D25\uD84F\uDEF7\uD84F\uDE2C\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\uD841\uDC8E\u7640\u5AF0\uD843\uDEB6\u787A\uD85F\uDF2E\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uD869\uDC34\u9E85\u4CE1\u75F9\u37FB\u6119\uD84C\uDCDA\uD850\uDFF2\"],\n[\"9ef5\",\"\u565D\uD844\uDEA9\u57A7\uD852\uDD63\uD867\uDE06\u5234\uD85C\uDCAE\u35AD\u6C4A\u9D7C\"],\n[\"9f40\",\"\u7C56\u9B39\u57DE\uD845\uDF6C\u5C53\u64D3\uD865\uDCD0\uD858\uDF35\uD85C\uDD64\u86AD\uD843\uDD28\uD85B\uDD22\uD852\uDEE2\uD843\uDD71\"],\n[\"9f4f\",\"\u51FE\uD847\uDF0F\u5D8E\u9703\uD847\uDDD1\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\uD852\uDD3E\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\"],\n[\"9fa1\",\"\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\uD845\uDF6D\u99DA\u5273\"],\n[\"9fae\",\"\u9159\u9681\u915C\"],\n[\"9fb2\",\"\u9151\uD863\uDE97\u637F\uD85B\uDD23\u6ACA\u5611\u918E\u757A\u6285\uD840\uDFFC\u734F\u7C70\uD857\uDC21\uD84F\uDCFD\"],\n[\"9fc1\",\"\uD852\uDD19\u76D6\u9B9D\u4E2A\uD843\uDCD4\u83BE\u8842\"],\n[\"9fc9\",\"\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\uD840\uDDF2\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3\"],\n[\"9fdb\",\"\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\"],\n[\"9fe7\",\"\u6BFA\u8818\u7F78\"],\n[\"9feb\",\"\u5620\uD869\uDE4A\u8E77\u9F53\"],\n[\"9ff0\",\"\u8DD4\u8E4F\u9E1C\u8E01\u6282\uD860\uDF7D\u8E28\u8E75\u7AD3\uD852\uDE77\u7A3E\u78D8\u6CEA\u8A67\u7607\"],\n[\"a040\",\"\uD862\uDE5A\u9F26\u6CCE\u87D6\u75C3\uD868\uDEB2\u7853\uD87E\uDC40\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uD852\uDEBB\u862F\u5FBA\u88A0\u44B7\"],\n[\"a055\",\"\uD846\uDC3B\uD85B\uDE05\"],\n[\"a058\",\"\u8A7E\uD849\uDD1B\"],\n[\"a05b\",\"\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5\"],\n[\"a063\",\"\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\uD858\uDD59\u6159\u4C04\u9E96\u617D\"],\n[\"a073\",\"\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\uD84C\uDFF5\u6364\u6802\u35D2\"],\n[\"a0a1\",\"\u5D57\uD862\uDFC2\u8FDA\uD863\uDE39\"],\n[\"a0a6\",\"\u50D9\uD847\uDD46\u7906\u5332\u9638\uD843\uDF3B\u4065\"],\n[\"a0ae\",\"\u77FE\"],\n[\"a0b0\",\"\u7CC2\uD857\uDF1A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\uD85D\uDC86\u805B\u74F0\u8103\u7724\u8989\uD859\uDFCC\u7553\uD85B\uDED1\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6\"],\n[\"a0d4\",\"\u89A9\u7468\u6DB9\u87C1\uD850\uDC11\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077\"],\n[\"a0e2\",\"\u7F71\uD862\uDF2D\u7250\u60E9\u4B7E\u5220\u3C18\uD84F\uDCC7\uD857\uDED7\uD85D\uDE56\uD855\uDD31\uD846\uDD44\uD844\uDEFE\uD866\uDD03\uD85B\uDDDC\uD85C\uDCAD\u5CC1\uD858\uDDAD\uD862\uDE0F\uD84D\uDE77\uD840\uDCEE\uD85A\uDC46\uD853\uDF0E\u4562\u5B1F\uD858\uDF4C\u9F50\u9EA6\uD858\uDE6B\"],\n[\"a3c0\",\"\u2400\",31,\"\u2421\"],\n[\"c6a1\",\"\u2460\",9,\"\u2474\",9,\"\u2170\",9,\"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\u00A8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041\",23],\n[\"c740\",\"\u3059\",58,\"\u30A1\u30A2\u30A3\u30A4\"],\n[\"c7a1\",\"\u30A5\",81,\"\u0410\",5,\"\u0401\u0416\",4],\n[\"c840\",\"\u041B\",26,\"\u0451\u0436\",25,\"\u21E7\u21B8\u21B9\u31CF\uD840\uDCCC\u4E5A\uD840\uDC8A\u5202\u4491\"],\n[\"c8a1\",\"\u9FB0\u5188\u9FB1\uD85D\uDE07\"],\n[\"c8cd\",\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\"],\n[\"c8f5\",\"\u0283\u0250\u025B\u0254\u0275\u0153\u00F8\u014B\u028A\u026A\"],\n[\"f9fe\",\"\uFFED\"],\n[\"fa40\",\"\uD841\uDD47\u92DB\uD841\uDDDF\uD84F\uDFC5\u854C\u42B5\u73EF\u51B5\u3649\uD852\uDD42\uD862\uDDE4\u9344\uD846\uDDDB\u82EE\uD84F\uDCC8\u783C\u6744\u62DF\uD852\uDD33\uD862\uDDAA\uD840\uDEA0\uD85A\uDFB3\uD844\uDF05\u4FAB\uD849\uDCED\u5008\uD85B\uDD29\uD85E\uDE84\uD84D\uDE00\uD852\uDEB1\uD849\uDD13\u5029\uD840\uDF7E\u5FA4\uD840\uDF80\uD840\uDF47\u6EDB\uD841\uDC1F\u507D\u5101\u347A\u510E\u986C\u3743\u8416\uD852\uDDA4\uD841\uDC87\u5160\uD84C\uDFB4\u516A\uD842\uDFFF\uD848\uDCFC\uD840\uDEE5\uD849\uDD30\uD841\uDD8E\uD84C\uDE33\uD846\uDD83\u5B82\u877D\uD841\uDDB3\uD84F\uDC99\u51B2\u51B8\"],\n[\"faa1\",\"\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\uD852\uDEA6\u51B3\u51E2\u5342\u51ED\u83CD\u693E\uD84D\uDF2D\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uD85A\uDF13\u5305\uD862\uDEDE\u5549\u6ED9\uD84F\uDF80\uD842\uDD54\uD84F\uDFEC\u5333\u5344\uD842\uDFE2\u6CCB\uD845\uDF26\u681B\u73D5\u604A\u3EAA\u38CC\uD845\uDEE8\u71DD\u44A2\u536D\u5374\uD861\uDEAB\u537E\u537F\uD845\uDD96\uD845\uDE13\u77E6\u5393\uD862\uDE9B\u53A0\u53AB\u53AE\u73A7\uD855\uDF72\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\uD842\uDF8F\u53E0\uD84F\uDFEB\uD84B\uDDA3\u53F6\uD843\uDC77\u5413\u7079\u552B\u6657\u6D5B\u546D\uD85A\uDF53\uD843\uDD74\u555D\u548F\u54A4\u47A6\uD845\uDF0D\uD843\uDEDD\u3DB4\uD843\uDD4D\"],\n[\"fb40\",\"\uD862\uDDBC\uD849\uDE98\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\uD846\uDCD7\uD850\uDC3A\u4552\uD851\uDC35\u66B3\uD844\uDCB4\u5637\u66CD\uD84C\uDE8A\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uD862\uDF66\u3623\uD844\uDE4F\u5746\uD850\uDDA5\u6C6E\u708B\u5742\u36B1\uD85B\uDC7E\u57E6\uD845\uDC16\u5803\uD845\uDC54\uD850\uDF63\u5826\uD852\uDFF5\u585C\u58AA\u3561\u58E0\u58DC\uD844\uDE3C\u58FB\u5BFF\u5743\uD868\uDD50\uD850\uDE78\u93D3\u35A1\u591F\u68A6\u36C3\u6E59\"],\n[\"fba1\",\"\uD845\uDE3E\u5A24\u5553\uD845\uDE92\u8505\u59C9\uD843\uDD4E\uD85B\uDC81\uD85B\uDD2A\uD845\uDFDC\u59D9\uD845\uDFFB\uD845\uDFB2\uD85B\uDDA6\u6D71\uD846\uDC28\uD845\uDED5\u59F9\uD85B\uDE45\u5AAB\u5A63\u36E6\uD852\uDDA9\u5A77\u3708\u5A96\u7465\u5AD3\uD85B\uDFA1\uD849\uDD54\u3D85\uD846\uDD11\u3732\uD845\uDEB8\u5E83\u52D0\u5B76\u6588\u5B7C\uD85E\uDE0E\u4004\u485D\uD840\uDE04\u5BD5\u6160\uD846\uDE34\uD856\uDDCC\uD841\uDDA5\u5BF3\u5B9D\u4D10\u5C05\uD846\uDF44\u5C13\u73CE\u5C14\uD847\uDCA5\uD85A\uDF28\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\uD847\uDDF9\uD847\uDE37\u5D10\u5D18\u5D46\uD847\uDEA4\u5CBA\u5DD7\u82FC\u382D\uD852\uDD01\uD848\uDC49\uD848\uDD73\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\uD851\uDCBC\uD843\uDCD3\u53A6\u4EB7\u5ED0\u53A8\uD845\uDF71\u5E09\u5EF4\uD861\uDC82\"],\n[\"fc40\",\"\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uD840\uDDC1\uD87E\uDC94\u3ADE\u48AE\uD844\uDF3A\u5F3A\uD85A\uDC88\uD848\uDFD0\u5F58\uD849\uDC71\u5F63\u97BD\uD85B\uDE6E\u5F72\u9340\uD862\uDE36\u5FA7\u5DB6\u3D5F\uD854\uDE50\uD847\uDF6A\uD85C\uDCF8\uD849\uDE68\u91D6\uD840\uDE9E\uD862\uDE29\u6031\u6685\uD846\uDC77\u3963\u3DC7\u3639\u5790\uD849\uDFB4\u7971\u3E40\u609E\u60A4\u60B3\uD852\uDD82\uD852\uDD8F\uD85E\uDE53\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uD87E\uDCA6\uD85B\uDED2\u6181\u51F4\uD841\uDE56\u6187\u5BAA\uD84F\uDFB7\"],\n[\"fca1\",\"\uD84A\uDC5F\u61D3\uD862\uDF9D\uD866\uDD5D\u61D0\u3932\uD84A\uDD80\uD84A\uDCC1\u6023\u615C\u651E\u638B\uD840\uDD18\u62C5\uD845\uDF70\u62D5\uD84B\uDE0D\u636C\uD852\uDDDF\u3A17\u6438\u63F8\uD844\uDF8E\uD845\uDFFC\u6490\u6F8A\uD84B\uDE36\u9814\uD850\uDC8C\uD855\uDF1D\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uD852\uDE28\uD852\uDE23\u6585\u656D\u655F\uD84C\uDC7E\u65B5\uD852\uDD40\u4B37\u65D1\u40D8\uD846\uDC29\u65E0\u65E3\u5FDF\uD84D\uDC00\u6618\uD84C\uDDF7\uD84C\uDDF8\u6644\uD84C\uDDA4\uD84C\uDDA5\u664B\uD843\uDE75\u6667\uD854\uDDE6\u6673\u6674\uD847\uDE3D\uD84C\uDE31\uD861\uDDF4\uD84C\uDDC8\uD854\uDF13\u77C5\uD84A\uDCF7\u99A4\u6702\uD850\uDF9C\uD852\uDE21\u3B2B\u69FA\uD84D\uDFC2\u675E\u6767\u6762\uD850\uDDCD\uD864\uDCED\u67D7\u44E9\u6822\u6E50\u923C\u6801\uD84C\uDFE6\uD85B\uDDA0\u685D\"],\n[\"fd40\",\"\uD84D\uDC6F\u69E1\u6A0B\uD862\uDEDF\u6973\u68C3\uD84D\uDDCD\u6901\u6900\u3D32\u3A01\uD84D\uDE3C\u3B80\u67AC\u6961\uD862\uDE4A\u42FC\u6936\u6998\u3BA1\uD840\uDFC9\u8363\u5090\u69F9\uD84D\uDE59\uD848\uDD2A\u6A45\uD84D\uDF03\u6A9D\u3BF3\u67B1\u6AC8\uD864\uDD9C\u3C0D\u6B1D\uD842\uDD23\u60DE\u6B35\u6B74\uD849\uDFCD\u6EB5\uD84E\uDEDB\uD840\uDFB5\uD846\uDD58\u3740\u5421\uD84E\uDF5A\u6BE1\uD84F\uDEFC\u6BDC\u6C37\uD849\uDC8B\uD852\uDCF1\uD85A\uDF51\u6C5A\u8226\u6C79\uD84F\uDDBC\u44C5\uD84F\uDDBD\uD850\uDDA4\uD852\uDD0C\uD852\uDD00\"],\n[\"fda1\",\"\uD84F\uDCC9\u36E5\u3CEB\uD843\uDD32\u9B83\uD84C\uDDF9\uD849\uDC91\u7F8F\u6837\uD85B\uDD25\uD85B\uDDA1\uD85B\uDDEB\u6D96\u6D5C\u6E7C\u6F04\uD852\uDD7F\uD850\uDC85\uD85B\uDE72\u8533\uD85B\uDF74\u51C7\u6C9C\u6E1D\u842E\uD862\uDF21\u6E2F\uD84F\uDE2F\u7453\uD84F\uDF82\u79CC\u6E4F\u5A91\uD84C\uDC4B\u6FF8\u370D\u6F9D\uD84F\uDE30\u6EFA\uD845\uDC97\uD850\uDC3D\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uD864\uDD70\u3D3B\u6F9F\uD850\uDD44\u6FD3\uD850\uDC91\uD850\uDD55\uD850\uDC39\uD84F\uDFF0\uD84F\uDFB4\uD850\uDD3F\u51DF\uD850\uDD56\uD850\uDD57\uD850\uDD40\uD858\uDDDD\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\uD850\uDE77\u712B\u7145\u5A88\u714A\u716E\u5C9C\uD850\uDF65\u714F\u9362\uD850\uDEC1\u712C\uD851\uDC5A\uD852\uDE27\uD852\uDE22\u71BA\uD862\uDFE8\u70BD\u720E\"],\n[\"fe40\",\"\u9442\u7215\u5911\u9443\u7224\u9341\uD855\uDE05\u722E\u7240\uD852\uDD74\u68BD\u7255\u7257\u3E55\uD84C\uDC44\u680D\u6F3D\u7282\u732A\u732B\uD852\uDC23\uD862\uDC2B\u48ED\uD862\uDC04\u7328\u732E\u73CF\u73AA\uD843\uDC3A\uD85A\uDE2E\u73C9\u7449\uD850\uDDE2\uD845\uDEE7\uD852\uDE24\u6623\u36C5\uD852\uDDB7\uD852\uDD8D\uD852\uDDFB\u73F7\u7415\u6903\uD852\uDE26\u7439\uD841\uDDC3\u3ED7\u745C\uD84A\uDCAD\u7460\uD863\uDEB2\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\uD852\uDE8C\"],\n[\"fea1\",\"\uD850\uDD5F\uD852\uDE79\uD862\uDF8F\u5B46\uD863\uDC03\uD846\uDC9E\u74C8\uD846\uDD88\u750E\u74E9\u751E\uD863\uDED9\uD846\uDE4B\u5BD7\uD863\uDEAC\u9385\u754D\u754A\u7567\u756E\uD853\uDF82\u3F04\uD853\uDD13\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\uD858\uDFF5\u7690\u81EF\u37F8\uD85A\uDD11\uD85A\uDD0E\u76A1\u76A5\u76B7\u76CC\uD85B\uDF9F\u8462\uD854\uDC9D\uD854\uDD7D\uD847\uDE1C\u771E\u7726\u7740\u64AF\uD854\uDE20\u7758\uD84C\uDEAC\u77AF\uD862\uDD64\uD862\uDD68\uD845\uDEC1\u77F4\u7809\uD844\uDF76\uD852\uDE12\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\uD855\uDDE0\u78D7\u7934\u78B1\uD85D\uDE0C\u8FB8\u8884\uD862\uDF2B\uD858\uDC83\uD849\uDE1C\u7986\u8900\u6902\u7980\uD856\uDC57\u799D\uD85E\uDF39\u793C\u79A9\u6E2A\uD85C\uDD26\u3EA8\u79C6\uD864\uDD0D\u79D4\"]\n]\n", "\"use strict\"\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n\n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.\n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,\n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n shiftjis: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/shiftjis.json\") },\n encodeAdd: { \"\\u00a5\": 0x5C, \"\\u203E\": 0x7E },\n encodeSkipVals: [{ from: 0xED40, to: 0xF940 }]\n },\n csshiftjis: \"shiftjis\",\n mskanji: \"shiftjis\",\n sjis: \"shiftjis\",\n windows31j: \"shiftjis\",\n ms31j: \"shiftjis\",\n xsjis: \"shiftjis\",\n windows932: \"shiftjis\",\n ms932: \"shiftjis\",\n 932: \"shiftjis\",\n cp932: \"shiftjis\",\n\n eucjp: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/eucjp.json\") },\n encodeAdd: { \"\\u00a5\": 0x5C, \"\\u203E\": 0x7E }\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n gb2312: \"cp936\",\n gb231280: \"cp936\",\n gb23121980: \"cp936\",\n csgb2312: \"cp936\",\n csiso58gb231280: \"cp936\",\n euccn: \"cp936\",\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n windows936: \"cp936\",\n ms936: \"cp936\",\n 936: \"cp936\",\n cp936: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/cp936.json\") }\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n gbk: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/cp936.json\").concat(require(\"./tables/gbk-added.json\")) }\n },\n xgbk: \"gbk\",\n isoir58: \"gbk\",\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n gb18030: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/cp936.json\").concat(require(\"./tables/gbk-added.json\")) },\n gb18030: function () { return require(\"./tables/gb18030-ranges.json\") },\n encodeSkipVals: [0x80],\n encodeAdd: { \"\u20AC\": 0xA2E3 }\n },\n\n chinese: \"gb18030\",\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n windows949: \"cp949\",\n ms949: \"cp949\",\n 949: \"cp949\",\n cp949: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/cp949.json\") }\n },\n\n cseuckr: \"cp949\",\n csksc56011987: \"cp949\",\n euckr: \"cp949\",\n isoir149: \"cp949\",\n korean: \"cp949\",\n ksc56011987: \"cp949\",\n ksc56011989: \"cp949\",\n ksc5601: \"cp949\",\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.\n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n //\n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n windows950: \"cp950\",\n ms950: \"cp950\",\n 950: \"cp950\",\n cp950: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/cp950.json\") }\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n big5: \"big5hkscs\",\n big5hkscs: {\n type: \"_dbcs\",\n table: function () { return require(\"./tables/cp950.json\").concat(require(\"./tables/big5-added.json\")) },\n encodeSkipVals: [\n // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce\n ]\n },\n\n cnbig5: \"big5hkscs\",\n csbig5: \"big5hkscs\",\n xxbig5: \"big5hkscs\"\n}\n", "\"use strict\"\n\nvar mergeModules = require(\"../lib/helpers/merge-exports\")\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf32\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\")\n]\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i]\n mergeModules(exports, module)\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments),\n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function (streamModule) {\n var Transform = streamModule.Transform\n\n // == Encoder stream =======================================================\n\n function IconvLiteEncoderStream (conv, options) {\n this.conv = conv\n options = options || {}\n options.decodeStrings = false // We accept only strings, so we don't need to decode them.\n Transform.call(this, options)\n }\n\n IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n })\n\n IconvLiteEncoderStream.prototype._transform = function (chunk, encoding, done) {\n if (typeof chunk !== \"string\") {\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"))\n }\n\n try {\n var res = this.conv.write(chunk)\n if (res && res.length) this.push(res)\n done()\n } catch (e) {\n done(e)\n }\n }\n\n IconvLiteEncoderStream.prototype._flush = function (done) {\n try {\n var res = this.conv.end()\n if (res && res.length) this.push(res)\n done()\n } catch (e) {\n done(e)\n }\n }\n\n IconvLiteEncoderStream.prototype.collect = function (cb) {\n var chunks = []\n this.on(\"error\", cb)\n this.on(\"data\", function (chunk) { chunks.push(chunk) })\n this.on(\"end\", function () {\n cb(null, Buffer.concat(chunks))\n })\n return this\n }\n\n // == Decoder stream =======================================================\n\n function IconvLiteDecoderStream (conv, options) {\n this.conv = conv\n options = options || {}\n options.encoding = this.encoding = \"utf8\" // We output strings.\n Transform.call(this, options)\n }\n\n IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n })\n\n IconvLiteDecoderStream.prototype._transform = function (chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { return done(new Error(\"Iconv decoding stream needs buffers as its input.\")) }\n try {\n var res = this.conv.write(chunk)\n if (res && res.length) this.push(res, this.encoding)\n done()\n } catch (e) {\n done(e)\n }\n }\n\n IconvLiteDecoderStream.prototype._flush = function (done) {\n try {\n var res = this.conv.end()\n if (res && res.length) this.push(res, this.encoding)\n done()\n } catch (e) {\n done(e)\n }\n }\n\n IconvLiteDecoderStream.prototype.collect = function (cb) {\n var res = \"\"\n this.on(\"error\", cb)\n this.on(\"data\", function (chunk) { res += chunk })\n this.on(\"end\", function () {\n cb(null, res)\n })\n return this\n }\n\n return {\n IconvLiteEncoderStream: IconvLiteEncoderStream,\n IconvLiteDecoderStream: IconvLiteDecoderStream\n }\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\nvar bomHandling = require(\"./bom-handling\")\nvar mergeModules = require(\"./helpers/merge-exports\")\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\n// Cannot initialize with { __proto__: null } because Boolean({ __proto__: null }) === true\nmodule.exports.encodings = null\n\n// Characters emitted in case of error.\nmodule.exports.defaultCharUnicode = \"\uFFFD\"\nmodule.exports.defaultCharSingleByte = \"?\"\n\n// Public API.\nmodule.exports.encode = function encode (str, encoding, options) {\n str = \"\" + (str || \"\") // Ensure string.\n\n var encoder = module.exports.getEncoder(encoding, options)\n\n var res = encoder.write(str)\n var trail = encoder.end()\n\n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res\n}\n\nmodule.exports.decode = function decode (buf, encoding, options) {\n if (typeof buf === \"string\") {\n if (!module.exports.skipDecodeWarning) {\n console.error(\"Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding\")\n module.exports.skipDecodeWarning = true\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\") // Ensure buffer.\n }\n\n var decoder = module.exports.getDecoder(encoding, options)\n\n var res = decoder.write(buf)\n var trail = decoder.end()\n\n return trail ? (res + trail) : res\n}\n\nmodule.exports.encodingExists = function encodingExists (enc) {\n try {\n module.exports.getCodec(enc)\n return true\n } catch (e) {\n return false\n }\n}\n\n// Legacy aliases to convert functions\nmodule.exports.toEncoding = module.exports.encode\nmodule.exports.fromEncoding = module.exports.decode\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\nmodule.exports._codecDataCache = { __proto__: null }\n\nmodule.exports.getCodec = function getCodec (encoding) {\n if (!module.exports.encodings) {\n var raw = require(\"../encodings\")\n // TODO: In future versions when old nodejs support is removed can use object.assign\n module.exports.encodings = { __proto__: null } // Initialize as empty object.\n mergeModules(module.exports.encodings, raw)\n }\n\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = module.exports._canonicalizeEncoding(encoding)\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {}\n while (true) {\n var codec = module.exports._codecDataCache[enc]\n\n if (codec) { return codec }\n\n var codecDef = module.exports.encodings[enc]\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef\n break\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef) { codecOptions[key] = codecDef[key] }\n\n if (!codecOptions.encodingName) { codecOptions.encodingName = enc }\n\n enc = codecDef.type\n break\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName) { codecOptions.encodingName = enc }\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n //\n codec = new codecDef(codecOptions, module.exports)\n\n module.exports._codecDataCache[codecOptions.encodingName] = codec // Save it to be reused later.\n return codec\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\" + enc + \"')\")\n }\n }\n}\n\nmodule.exports._canonicalizeEncoding = function (encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (\"\" + encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\")\n}\n\nmodule.exports.getEncoder = function getEncoder (encoding, options) {\n var codec = module.exports.getCodec(encoding)\n var encoder = new codec.encoder(options, codec)\n\n if (codec.bomAware && options && options.addBOM) { encoder = new bomHandling.PrependBOM(encoder, options) }\n\n return encoder\n}\n\nmodule.exports.getDecoder = function getDecoder (encoding, options) {\n var codec = module.exports.getCodec(encoding)\n var decoder = new codec.decoder(options, codec)\n\n if (codec.bomAware && !(options && options.stripBOM === false)) { decoder = new bomHandling.StripBOM(decoder, options) }\n\n return decoder\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\nmodule.exports.enableStreamingAPI = function enableStreamingAPI (streamModule) {\n if (module.exports.supportsStreams) { return }\n\n // Dependency-inject stream module to create IconvLite stream classes.\n var streams = require(\"./streams\")(streamModule)\n\n // Not public API yet, but expose the stream classes.\n module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream\n module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream\n\n // Streaming API.\n module.exports.encodeStream = function encodeStream (encoding, options) {\n return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options)\n }\n\n module.exports.decodeStream = function decodeStream (encoding, options) {\n return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options)\n }\n\n module.exports.supportsStreams = true\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar streamModule\ntry {\n streamModule = require(\"stream\")\n} catch (e) {}\n\nif (streamModule && streamModule.Transform) {\n module.exports.enableStreamingAPI(streamModule)\n} else {\n // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n module.exports.encodeStream = module.exports.decodeStream = function () {\n throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\")\n }\n}\n\n// Some environments, such as browsers, may not load JavaScript files as UTF-8\n// eslint-disable-next-line no-constant-condition\nif (\"\u0100\" !== \"\\u0100\") {\n console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\")\n}\n", "/***\n * Node External Editor\n *\n * Kevin Gravier <kevin@mrkmg.com>\n * MIT 2018\n */\nexport class CreateFileError extends Error {\n originalError;\n constructor(originalError) {\n super(`Failed to create temporary file. ${originalError.message}`);\n this.originalError = originalError;\n }\n}\n", "/***\n * Node External Editor\n *\n * Kevin Gravier <kevin@mrkmg.com>\n * MIT 2018\n */\nexport class LaunchEditorError extends Error {\n originalError;\n constructor(originalError) {\n super(`Failed to launch editor. ${originalError.message}`);\n this.originalError = originalError;\n }\n}\n", "/***\n * Node External Editor\n *\n * Kevin Gravier <kevin@mrkmg.com>\n * MIT 2018\n */\nexport class ReadFileError extends Error {\n originalError;\n constructor(originalError) {\n super(`Failed to read temporary file. ${originalError.message}`);\n this.originalError = originalError;\n }\n}\n", "/***\n * Node External Editor\n *\n * Kevin Gravier <kevin@mrkmg.com>\n * MIT 2018\n */\nexport class RemoveFileError extends Error {\n originalError;\n constructor(originalError) {\n super(`Failed to remove temporary file. ${originalError.message}`);\n this.originalError = originalError;\n }\n}\n", "import { detect } from 'chardet';\nimport { spawn, spawnSync } from 'child_process';\nimport { readFileSync, unlinkSync, writeFileSync } from 'fs';\nimport path from 'node:path';\nimport os from 'node:os';\nimport { randomUUID } from 'node:crypto';\nimport iconv from 'iconv-lite';\nimport { CreateFileError } from \"./errors/CreateFileError.js\";\nimport { LaunchEditorError } from \"./errors/LaunchEditorError.js\";\nimport { ReadFileError } from \"./errors/ReadFileError.js\";\nimport { RemoveFileError } from \"./errors/RemoveFileError.js\";\nexport { CreateFileError, LaunchEditorError, ReadFileError, RemoveFileError };\nexport function edit(text = '', fileOptions) {\n const editor = new ExternalEditor(text, fileOptions);\n editor.run();\n editor.cleanup();\n return editor.text;\n}\nexport function editAsync(text = '', callback, fileOptions) {\n const editor = new ExternalEditor(text, fileOptions);\n editor.runAsync((err, result) => {\n if (err) {\n setImmediate(callback, err, undefined);\n }\n else {\n try {\n editor.cleanup();\n setImmediate(callback, undefined, result);\n }\n catch (cleanupError) {\n setImmediate(callback, cleanupError, undefined);\n }\n }\n });\n}\nfunction sanitizeAffix(affix) {\n if (!affix)\n return '';\n return affix.replace(/[^a-zA-Z0-9_.-]/g, '_');\n}\nfunction splitStringBySpace(str) {\n const pieces = [];\n let currentString = '';\n for (let strIndex = 0; strIndex < str.length; strIndex++) {\n const currentLetter = str.charAt(strIndex);\n if (strIndex > 0 &&\n currentLetter === ' ' &&\n str[strIndex - 1] !== '\\\\' &&\n currentString.length > 0) {\n pieces.push(currentString);\n currentString = '';\n }\n else {\n currentString = `${currentString}${currentLetter}`;\n }\n }\n if (currentString.length > 0) {\n pieces.push(currentString);\n }\n return pieces;\n}\nexport class ExternalEditor {\n text = '';\n tempFile;\n editor;\n lastExitStatus = 0;\n fileOptions = {};\n get temp_file() {\n console.log('DEPRECATED: temp_file. Use tempFile moving forward.');\n return this.tempFile;\n }\n get last_exit_status() {\n console.log('DEPRECATED: last_exit_status. Use lastExitStatus moving forward.');\n return this.lastExitStatus;\n }\n constructor(text = '', fileOptions) {\n this.text = text;\n if (fileOptions) {\n this.fileOptions = fileOptions;\n }\n this.determineEditor();\n this.createTemporaryFile();\n }\n run() {\n this.launchEditor();\n this.readTemporaryFile();\n return this.text;\n }\n runAsync(callback) {\n try {\n this.launchEditorAsync(() => {\n try {\n this.readTemporaryFile();\n setImmediate(callback, undefined, this.text);\n }\n catch (readError) {\n setImmediate(callback, readError, undefined);\n }\n });\n }\n catch (launchError) {\n setImmediate(callback, launchError, undefined);\n }\n }\n cleanup() {\n this.removeTemporaryFile();\n }\n determineEditor() {\n const editor = process.env['VISUAL']\n ? process.env['VISUAL']\n : process.env['EDITOR']\n ? process.env['EDITOR']\n : process.platform.startsWith('win')\n ? 'notepad'\n : 'vim';\n const editorOpts = splitStringBySpace(editor).map((piece) => piece.replace('\\\\ ', ' '));\n const bin = editorOpts.shift();\n this.editor = { args: editorOpts, bin };\n }\n createTemporaryFile() {\n try {\n const baseDir = this.fileOptions.dir ?? os.tmpdir();\n const id = randomUUID();\n const prefix = sanitizeAffix(this.fileOptions.prefix);\n const postfix = sanitizeAffix(this.fileOptions.postfix);\n const filename = `${prefix}${id}${postfix}`;\n const candidate = path.resolve(baseDir, filename);\n const baseResolved = path.resolve(baseDir) + path.sep;\n if (!candidate.startsWith(baseResolved)) {\n throw new Error('Resolved temporary file escaped the base directory');\n }\n this.tempFile = candidate;\n const opt = { encoding: 'utf8', flag: 'wx' };\n if (Object.prototype.hasOwnProperty.call(this.fileOptions, 'mode')) {\n opt.mode = this.fileOptions.mode;\n }\n writeFileSync(this.tempFile, this.text, opt);\n }\n catch (createFileError) {\n throw new CreateFileError(createFileError);\n }\n }\n readTemporaryFile() {\n try {\n const tempFileBuffer = readFileSync(this.tempFile);\n if (tempFileBuffer.length === 0) {\n this.text = '';\n }\n else {\n let encoding = detect(tempFileBuffer) ?? 'utf8';\n if (!iconv.encodingExists(encoding)) {\n // Probably a bad idea, but will at least prevent crashing\n encoding = 'utf8';\n }\n this.text = iconv.decode(tempFileBuffer, encoding);\n }\n }\n catch (readFileError) {\n throw new ReadFileError(readFileError);\n }\n }\n removeTemporaryFile() {\n try {\n unlinkSync(this.tempFile);\n }\n catch (removeFileError) {\n throw new RemoveFileError(removeFileError);\n }\n }\n launchEditor() {\n try {\n const editorProcess = spawnSync(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: 'inherit' });\n this.lastExitStatus = editorProcess.status ?? 0;\n }\n catch (launchError) {\n throw new LaunchEditorError(launchError);\n }\n }\n launchEditorAsync(callback) {\n try {\n const editorProcess = spawn(this.editor.bin, this.editor.args.concat([this.tempFile]), { stdio: 'inherit' });\n editorProcess.on('exit', (code) => {\n this.lastExitStatus = code;\n setImmediate(callback);\n });\n }\n catch (launchError) {\n throw new LaunchEditorError(launchError);\n }\n }\n}\n", "import { editAsync } from '@inquirer/external-editor';\nimport { createPrompt, useEffect, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core';\nconst editorTheme = {\n validationFailureMode: 'keep',\n};\nexport default createPrompt((config, done) => {\n const { waitForUserInput = true, file: { postfix = config.postfix ?? '.txt', ...fileProps } = {}, validate = () => true, } = config;\n const theme = makeTheme(editorTheme, config.theme);\n const [status, setStatus] = useState('idle');\n const [value = '', setValue] = useState(config.default);\n const [errorMsg, setError] = useState();\n const prefix = usePrefix({ status, theme });\n function startEditor(rl) {\n rl.pause();\n const editCallback = async (error, answer) => {\n rl.resume();\n if (error) {\n setError(error.toString());\n }\n else {\n setStatus('loading');\n const finalAnswer = answer ?? '';\n const isValid = await validate(finalAnswer);\n if (isValid === true) {\n setError(undefined);\n setStatus('done');\n done(finalAnswer);\n }\n else {\n if (theme.validationFailureMode === 'clear') {\n setValue(config.default);\n }\n else {\n setValue(finalAnswer);\n }\n setError(isValid || 'You must provide a valid value');\n setStatus('idle');\n }\n }\n };\n editAsync(value, (error, answer) => void editCallback(error, answer), {\n postfix,\n ...fileProps,\n });\n }\n useEffect((rl) => {\n if (!waitForUserInput) {\n startEditor(rl);\n }\n }, []);\n useKeypress((key, rl) => {\n // Ignore keypress while our prompt is doing other processing.\n if (status !== 'idle') {\n return;\n }\n if (isEnterKey(key)) {\n startEditor(rl);\n }\n });\n const message = theme.style.message(config.message, status);\n let helpTip = '';\n if (status === 'loading') {\n helpTip = theme.style.help('Received');\n }\n else if (status === 'idle') {\n const enterKey = theme.style.key('enter');\n helpTip = theme.style.help(`Press ${enterKey} to launch your preferred editor.`);\n }\n let error = '';\n if (errorMsg) {\n error = theme.style.error(errorMsg);\n }\n return [[prefix, message, helpTip].filter(Boolean).join(' '), error];\n});\n", "import { createPrompt, useState, useKeypress, isEnterKey, isTabKey, usePrefix, makeTheme, } from '@inquirer/core';\nfunction getBooleanValue(value, defaultValue) {\n let answer = defaultValue !== false;\n if (/^(y|yes)/i.test(value))\n answer = true;\n else if (/^(n|no)/i.test(value))\n answer = false;\n return answer;\n}\nfunction boolToString(value) {\n return value ? 'Yes' : 'No';\n}\nexport default createPrompt((config, done) => {\n const { transformer = boolToString } = config;\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState('');\n const theme = makeTheme(config.theme);\n const prefix = usePrefix({ status, theme });\n useKeypress((key, rl) => {\n if (status !== 'idle')\n return;\n if (isEnterKey(key)) {\n const answer = getBooleanValue(value, config.default);\n setValue(transformer(answer));\n setStatus('done');\n done(answer);\n }\n else if (isTabKey(key)) {\n const answer = boolToString(!getBooleanValue(value, config.default));\n rl.clearLine(0); // Remove the tab character.\n rl.write(answer);\n setValue(answer);\n }\n else {\n setValue(rl.line);\n }\n });\n let formattedValue = value;\n let defaultValue = '';\n if (status === 'done') {\n formattedValue = theme.style.answer(value);\n }\n else {\n defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`;\n }\n const message = theme.style.message(config.message, status);\n return `${prefix} ${message}${defaultValue} ${formattedValue}`;\n});\n", "import { createPrompt, useState, useKeypress, useEffect, usePrefix, isBackspaceKey, isEnterKey, isTabKey, makeTheme, } from '@inquirer/core';\nconst inputTheme = {\n validationFailureMode: 'keep',\n};\nexport default createPrompt((config, done) => {\n const { prefill = 'tab' } = config;\n const theme = makeTheme(inputTheme, config.theme);\n const [status, setStatus] = useState('idle');\n const [defaultValue = '', setDefaultValue] = useState(config.default);\n const [errorMsg, setError] = useState();\n const [value, setValue] = useState('');\n const prefix = usePrefix({ status, theme });\n async function validate(value) {\n const { required, pattern, patternError = 'Invalid input' } = config;\n if (required && !value) {\n return 'You must provide a value';\n }\n if (pattern && !pattern.test(value)) {\n return patternError;\n }\n if (typeof config.validate === 'function') {\n return (await config.validate(value)) || 'You must provide a valid value';\n }\n return true;\n }\n useKeypress(async (key, rl) => {\n // Ignore keypress while our prompt is doing other processing.\n if (status !== 'idle') {\n return;\n }\n if (isEnterKey(key)) {\n const answer = value || defaultValue;\n setStatus('loading');\n const isValid = await validate(answer);\n if (isValid === true) {\n setValue(answer);\n setStatus('done');\n done(answer);\n }\n else {\n if (theme.validationFailureMode === 'clear') {\n setValue('');\n }\n else {\n // Reset the readline line value to the previous value. On line event, the value\n // get cleared, forcing the user to re-enter the value instead of fixing it.\n rl.write(value);\n }\n setError(isValid);\n setStatus('idle');\n }\n }\n else if (isBackspaceKey(key) && !value) {\n setDefaultValue(undefined);\n }\n else if (isTabKey(key) && !value) {\n setDefaultValue(undefined);\n rl.clearLine(0); // Remove the tab character.\n rl.write(defaultValue);\n setValue(defaultValue);\n }\n else {\n setValue(rl.line);\n setError(undefined);\n }\n });\n // If prefill is set to 'editable' cut out the default value and paste into current state and the user's cli buffer\n // They can edit the value immediately instead of needing to press 'tab'\n useEffect((rl) => {\n if (prefill === 'editable' && defaultValue) {\n rl.write(defaultValue);\n setValue(defaultValue);\n }\n }, []);\n const message = theme.style.message(config.message, status);\n let formattedValue = value;\n if (typeof config.transformer === 'function') {\n formattedValue = config.transformer(value, { isFinal: status === 'done' });\n }\n else if (status === 'done') {\n formattedValue = theme.style.answer(value);\n }\n let defaultStr;\n if (defaultValue && status !== 'done' && !value) {\n defaultStr = theme.style.defaultAnswer(defaultValue);\n }\n let error = '';\n if (errorMsg) {\n error = theme.style.error(errorMsg);\n }\n return [\n [prefix, message, defaultStr, formattedValue]\n .filter((v) => v !== undefined)\n .join(' '),\n error,\n ];\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, isBackspaceKey, isEnterKey, isTabKey, makeTheme, } from '@inquirer/core';\nfunction isStepOf(value, step, min) {\n const valuePow = value * Math.pow(10, 6);\n const stepPow = step * Math.pow(10, 6);\n const minPow = min * Math.pow(10, 6);\n return (valuePow - (Number.isFinite(min) ? minPow : 0)) % stepPow === 0;\n}\nfunction validateNumber(value, { min, max, step, }) {\n if (value == null || Number.isNaN(value)) {\n return false;\n }\n else if (value < min || value > max) {\n return `Value must be between ${min} and ${max}`;\n }\n else if (step !== 'any' && !isStepOf(value, step, min)) {\n return `Value must be a multiple of ${step}${Number.isFinite(min) ? ` starting from ${min}` : ''}`;\n }\n return true;\n}\nexport default createPrompt((config, done) => {\n const { validate = () => true, min = -Infinity, max = Infinity, step = 1, required = false, } = config;\n const theme = makeTheme(config.theme);\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState(''); // store the input value as string and convert to number on \"Enter\"\n // Ignore default if not valid.\n const validDefault = validateNumber(config.default, { min, max, step }) === true\n ? config.default?.toString()\n : undefined;\n const [defaultValue = '', setDefaultValue] = useState(validDefault);\n const [errorMsg, setError] = useState();\n const prefix = usePrefix({ status, theme });\n useKeypress(async (key, rl) => {\n // Ignore keypress while our prompt is doing other processing.\n if (status !== 'idle') {\n return;\n }\n if (isEnterKey(key)) {\n const input = value || defaultValue;\n const answer = input === '' ? undefined : Number(input);\n setStatus('loading');\n let isValid = true;\n if (required || answer != null) {\n isValid = validateNumber(answer, { min, max, step });\n }\n if (isValid === true) {\n isValid = await validate(answer);\n }\n if (isValid === true) {\n setValue(String(answer ?? ''));\n setStatus('done');\n done(answer);\n }\n else {\n // Reset the readline line value to the previous value. On line event, the value\n // get cleared, forcing the user to re-enter the value instead of fixing it.\n rl.write(value);\n setError(isValid || 'You must provide a valid numeric value');\n setStatus('idle');\n }\n }\n else if (isBackspaceKey(key) && !value) {\n setDefaultValue(undefined);\n }\n else if (isTabKey(key) && !value) {\n setDefaultValue(undefined);\n rl.clearLine(0); // Remove the tab character.\n rl.write(defaultValue);\n setValue(defaultValue);\n }\n else {\n setValue(rl.line);\n setError(undefined);\n }\n });\n const message = theme.style.message(config.message, status);\n let formattedValue = value;\n if (status === 'done') {\n formattedValue = theme.style.answer(value);\n }\n let defaultStr;\n if (defaultValue && status !== 'done' && !value) {\n defaultStr = theme.style.defaultAnswer(defaultValue);\n }\n let error = '';\n if (errorMsg) {\n error = theme.style.error(errorMsg);\n }\n return [\n [prefix, message, defaultStr, formattedValue]\n .filter((v) => v !== undefined)\n .join(' '),\n error,\n ];\n});\n", "import { createPrompt, useMemo, useState, useKeypress, usePrefix, isEnterKey, makeTheme, Separator, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice)) {\n return choice;\n }\n const name = 'name' in choice ? choice.name : String(choice.value);\n const value = 'value' in choice ? choice.value : name;\n return {\n value: value,\n name,\n key: choice.key.toLowerCase(),\n };\n });\n}\nconst helpChoice = {\n key: 'h',\n name: 'Help, list all options',\n value: undefined,\n};\nexport default createPrompt((config, done) => {\n const { default: defaultKey = 'h' } = config;\n const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState('');\n const [expanded, setExpanded] = useState(config.expanded ?? false);\n const [errorMsg, setError] = useState();\n const theme = makeTheme(config.theme);\n const prefix = usePrefix({ theme, status });\n useKeypress((event, rl) => {\n if (isEnterKey(event)) {\n const answer = (value || defaultKey).toLowerCase();\n if (answer === 'h' && !expanded) {\n setExpanded(true);\n }\n else {\n const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === answer);\n if (selectedChoice) {\n setStatus('done');\n // Set the value as we might've selected the default one.\n setValue(answer);\n done(selectedChoice.value);\n }\n else if (value === '') {\n setError('Please input a value');\n }\n else {\n setError(`\"${colors.red(value)}\" isn't an available option`);\n }\n }\n }\n else {\n setValue(rl.line);\n setError(undefined);\n }\n });\n const message = theme.style.message(config.message, status);\n if (status === 'done') {\n // If the prompt is done, it's safe to assume there is a selected value.\n const selectedChoice = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase());\n return `${prefix} ${message} ${theme.style.answer(selectedChoice.name)}`;\n }\n const allChoices = expanded ? choices : [...choices, helpChoice];\n // Collapsed display style\n let longChoices = '';\n let shortChoices = allChoices\n .map((choice) => {\n if (Separator.isSeparator(choice))\n return '';\n if (choice.key === defaultKey) {\n return choice.key.toUpperCase();\n }\n return choice.key;\n })\n .join('');\n shortChoices = ` ${theme.style.defaultAnswer(shortChoices)}`;\n // Expanded display style\n if (expanded) {\n shortChoices = '';\n longChoices = allChoices\n .map((choice) => {\n if (Separator.isSeparator(choice)) {\n return ` ${choice.separator}`;\n }\n const line = ` ${choice.key}) ${choice.name}`;\n if (choice.key === value.toLowerCase()) {\n return theme.style.highlight(line);\n }\n return line;\n })\n .join('\\n');\n }\n let helpTip = '';\n const currentOption = choices.find((choice) => !Separator.isSeparator(choice) && choice.key === value.toLowerCase());\n if (currentOption) {\n helpTip = `${colors.cyan('>>')} ${currentOption.name}`;\n }\n let error = '';\n if (errorMsg) {\n error = theme.style.error(errorMsg);\n }\n return [\n `${prefix} ${message}${shortChoices} ${value}`,\n [longChoices, helpTip, error].filter(Boolean).join('\\n'),\n ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useMemo, useState, useKeypress, usePrefix, isDownKey, isEnterKey, isUpKey, Separator, makeTheme, ValidationError, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nconst numberRegex = /\\d+/;\nfunction isSelectableChoice(choice) {\n return choice != null && !Separator.isSeparator(choice);\n}\nfunction normalizeChoices(choices) {\n let index = 0;\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n index += 1;\n if (typeof choice === 'string') {\n return {\n value: choice,\n name: choice,\n short: choice,\n key: String(index),\n };\n }\n const name = choice.name ?? String(choice.value);\n return {\n value: choice.value,\n name,\n short: choice.short ?? name,\n key: choice.key ?? String(index),\n };\n });\n}\nfunction getSelectedChoice(input, choices) {\n let selectedChoice;\n const selectableChoices = choices.filter(isSelectableChoice);\n // First, try to match by custom key (exact match)\n selectedChoice = selectableChoices.find((choice) => choice.key === input);\n // If no custom key match and input is numeric, try 1-based index\n if (!selectedChoice && numberRegex.test(input)) {\n const answer = Number.parseInt(input, 10) - 1;\n selectedChoice = selectableChoices[answer];\n }\n return selectedChoice\n ? [selectedChoice, choices.indexOf(selectedChoice)]\n : [undefined, undefined];\n}\nexport default createPrompt((config, done) => {\n const { loop = true } = config;\n const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const [status, setStatus] = useState('idle');\n const [value, setValue] = useState('');\n const [errorMsg, setError] = useState();\n const theme = makeTheme(config.theme);\n const prefix = usePrefix({ status, theme });\n const bounds = useMemo(() => {\n const first = choices.findIndex(isSelectableChoice);\n const last = choices.findLastIndex(isSelectableChoice);\n if (first === -1) {\n throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [choices]);\n useKeypress((key, rl) => {\n if (isEnterKey(key)) {\n const [selectedChoice] = getSelectedChoice(value, choices);\n if (isSelectableChoice(selectedChoice)) {\n setValue(selectedChoice.short);\n setStatus('done');\n done(selectedChoice.value);\n }\n else if (value === '') {\n setError('Please input a value');\n }\n else {\n setError(`\"${colors.red(value)}\" isn't an available option`);\n }\n }\n else if (isUpKey(key) || isDownKey(key)) {\n rl.clearLine(0);\n const [selectedChoice, active] = getSelectedChoice(value, choices);\n if (!selectedChoice) {\n const firstChoice = isDownKey(key)\n ? choices.find(isSelectableChoice)\n : choices.findLast(isSelectableChoice);\n setValue(firstChoice.key);\n }\n else if (loop ||\n (isUpKey(key) && active !== bounds.first) ||\n (isDownKey(key) && active !== bounds.last)) {\n const offset = isUpKey(key) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + choices.length) % choices.length;\n } while (!isSelectableChoice(choices[next]));\n setValue(choices[next].key);\n }\n }\n else {\n setValue(rl.line);\n setError(undefined);\n }\n });\n const message = theme.style.message(config.message, status);\n if (status === 'done') {\n return `${prefix} ${message} ${theme.style.answer(value)}`;\n }\n const choicesStr = choices\n .map((choice) => {\n if (Separator.isSeparator(choice)) {\n return ` ${choice.separator}`;\n }\n const line = ` ${choice.key}) ${choice.name}`;\n if (choice.key === value.toLowerCase()) {\n return theme.style.highlight(line);\n }\n return line;\n })\n .join('\\n');\n let error = '';\n if (errorMsg) {\n error = theme.style.error(errorMsg);\n }\n return [\n `${prefix} ${message} ${value}`,\n [choicesStr, error].filter(Boolean).join('\\n'),\n ];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nexport default createPrompt((config, done) => {\n const { validate = () => true } = config;\n const theme = makeTheme(config.theme);\n const [status, setStatus] = useState('idle');\n const [errorMsg, setError] = useState();\n const [value, setValue] = useState('');\n const prefix = usePrefix({ status, theme });\n useKeypress(async (key, rl) => {\n // Ignore keypress while our prompt is doing other processing.\n if (status !== 'idle') {\n return;\n }\n if (isEnterKey(key)) {\n const answer = value;\n setStatus('loading');\n const isValid = await validate(answer);\n if (isValid === true) {\n setValue(answer);\n setStatus('done');\n done(answer);\n }\n else {\n // Reset the readline line value to the previous value. On line event, the value\n // get cleared, forcing the user to re-enter the value instead of fixing it.\n rl.write(value);\n setError(isValid || 'You must provide a valid value');\n setStatus('idle');\n }\n }\n else {\n setValue(rl.line);\n setError(undefined);\n }\n });\n const message = theme.style.message(config.message, status);\n let formattedValue = '';\n let helpTip;\n if (config.mask) {\n const maskChar = typeof config.mask === 'string' ? config.mask : '*';\n formattedValue = maskChar.repeat(value.length);\n }\n else if (status !== 'done') {\n helpTip = `${theme.style.help('[input is masked]')}${cursorHide}`;\n }\n if (status === 'done') {\n formattedValue = theme.style.answer(formattedValue);\n }\n let error = '';\n if (errorMsg) {\n error = theme.style.error(errorMsg);\n }\n return [[prefix, message, config.mask ? formattedValue : helpTip].join(' '), error];\n});\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useEffect, useMemo, isDownKey, isEnterKey, isTabKey, isUpKey, Separator, makeTheme, } from '@inquirer/core';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nconst searchTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => colors.dim(`- ${text}`),\n searchTerm: (text) => colors.cyan(text),\n description: (text) => colors.cyan(text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${colors.bold(key)} ${colors.dim(action)}`)\n .join(colors.dim(' \u2022 ')),\n },\n helpMode: 'always',\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice === 'string') {\n return {\n value: choice,\n name: choice,\n short: choice,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { pageSize = 7, validate = () => true } = config;\n const theme = makeTheme(searchTheme, config.theme);\n const [status, setStatus] = useState('loading');\n const [searchTerm, setSearchTerm] = useState('');\n const [searchResults, setSearchResults] = useState([]);\n const [searchError, setSearchError] = useState();\n const prefix = usePrefix({ status, theme });\n const bounds = useMemo(() => {\n const first = searchResults.findIndex(isSelectable);\n const last = searchResults.findLastIndex(isSelectable);\n return { first, last };\n }, [searchResults]);\n const [active = bounds.first, setActive] = useState();\n useEffect(() => {\n const controller = new AbortController();\n setStatus('loading');\n setSearchError(undefined);\n const fetchResults = async () => {\n try {\n const results = await config.source(searchTerm || undefined, {\n signal: controller.signal,\n });\n if (!controller.signal.aborted) {\n // Reset the pointer\n setActive(undefined);\n setSearchError(undefined);\n setSearchResults(normalizeChoices(results));\n setStatus('idle');\n }\n }\n catch (error) {\n if (!controller.signal.aborted && error instanceof Error) {\n setSearchError(error.message);\n }\n }\n };\n void fetchResults();\n return () => {\n controller.abort();\n };\n }, [searchTerm]);\n // Safe to assume the cursor position never points to a Separator.\n const selectedChoice = searchResults[active];\n useKeypress(async (key, rl) => {\n if (isEnterKey(key)) {\n if (selectedChoice) {\n setStatus('loading');\n const isValid = await validate(selectedChoice.value);\n setStatus('idle');\n if (isValid === true) {\n setStatus('done');\n done(selectedChoice.value);\n }\n else if (selectedChoice.name === searchTerm) {\n setSearchError(isValid || 'You must provide a valid value');\n }\n else {\n // Reset line with new search term\n rl.write(selectedChoice.name);\n setSearchTerm(selectedChoice.name);\n }\n }\n else {\n // Reset the readline line value to the previous value. On line event, the value\n // get cleared, forcing the user to re-enter the value instead of fixing it.\n rl.write(searchTerm);\n }\n }\n else if (isTabKey(key) && selectedChoice) {\n rl.clearLine(0); // Remove the tab character.\n rl.write(selectedChoice.name);\n setSearchTerm(selectedChoice.name);\n }\n else if (status !== 'loading' && (isUpKey(key) || isDownKey(key))) {\n rl.clearLine(0);\n if ((isUpKey(key) && active !== bounds.first) ||\n (isDownKey(key) && active !== bounds.last)) {\n const offset = isUpKey(key) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + searchResults.length) % searchResults.length;\n } while (!isSelectable(searchResults[next]));\n setActive(next);\n }\n }\n else {\n setSearchTerm(rl.line);\n }\n });\n const message = theme.style.message(config.message, status);\n let helpLine;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (theme.helpMode !== 'never') {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (config.instructions) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { pager, navigation } = config.instructions;\n helpLine = theme.style.help(searchResults.length > pageSize ? pager : navigation);\n }\n else {\n helpLine = theme.style.keysHelpTip([\n ['\u2191\u2193', 'navigate'],\n ['\u23CE', 'select'],\n ]);\n }\n }\n const page = usePagination({\n items: searchResults,\n active,\n renderItem({ item, isActive }) {\n if (Separator.isSeparator(item)) {\n return ` ${item.separator}`;\n }\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n return theme.style.disabled(`${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n const cursor = isActive ? theme.icon.cursor : ` `;\n return color(`${cursor} ${item.name}`);\n },\n pageSize,\n loop: false,\n });\n let error;\n if (searchError) {\n error = theme.style.error(searchError);\n }\n else if (searchResults.length === 0 && searchTerm !== '' && status === 'idle') {\n error = theme.style.error('No results found');\n }\n let searchStr;\n if (status === 'done' && selectedChoice) {\n return [prefix, message, theme.style.answer(selectedChoice.short)]\n .filter(Boolean)\n .join(' ')\n .trimEnd();\n }\n else {\n searchStr = theme.style.searchTerm(searchTerm);\n }\n const description = selectedChoice?.description;\n const header = [prefix, message, searchStr].filter(Boolean).join(' ').trimEnd();\n const body = [\n error ?? page,\n ' ',\n description ? theme.style.description(description) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return [header, body];\n});\nexport { Separator } from '@inquirer/core';\n", "import { createPrompt, useState, useKeypress, usePrefix, usePagination, useRef, useMemo, useEffect, isBackspaceKey, isEnterKey, isUpKey, isDownKey, isNumberKey, Separator, ValidationError, makeTheme, } from '@inquirer/core';\nimport { cursorHide } from '@inquirer/ansi';\nimport colors from 'yoctocolors-cjs';\nimport figures from '@inquirer/figures';\nconst selectTheme = {\n icon: { cursor: figures.pointer },\n style: {\n disabled: (text) => colors.dim(`- ${text}`),\n description: (text) => colors.cyan(text),\n keysHelpTip: (keys) => keys\n .map(([key, action]) => `${colors.bold(key)} ${colors.dim(action)}`)\n .join(colors.dim(' \u2022 ')),\n },\n helpMode: 'always',\n indexMode: 'hidden',\n keybindings: [],\n};\nfunction isSelectable(item) {\n return !Separator.isSeparator(item) && !item.disabled;\n}\nfunction normalizeChoices(choices) {\n return choices.map((choice) => {\n if (Separator.isSeparator(choice))\n return choice;\n if (typeof choice === 'string') {\n return {\n value: choice,\n name: choice,\n short: choice,\n disabled: false,\n };\n }\n const name = choice.name ?? String(choice.value);\n const normalizedChoice = {\n value: choice.value,\n name,\n short: choice.short ?? name,\n disabled: choice.disabled ?? false,\n };\n if (choice.description) {\n normalizedChoice.description = choice.description;\n }\n return normalizedChoice;\n });\n}\nexport default createPrompt((config, done) => {\n const { loop = true, pageSize = 7 } = config;\n const theme = makeTheme(selectTheme, config.theme);\n const { keybindings } = theme;\n const [status, setStatus] = useState('idle');\n const prefix = usePrefix({ status, theme });\n const searchTimeoutRef = useRef();\n // Vim keybindings (j/k) conflict with typing those letters in search,\n // so search must be disabled when vim bindings are enabled\n const searchEnabled = !keybindings.includes('vim');\n const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);\n const bounds = useMemo(() => {\n const first = items.findIndex(isSelectable);\n const last = items.findLastIndex(isSelectable);\n if (first === -1) {\n throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');\n }\n return { first, last };\n }, [items]);\n const defaultItemIndex = useMemo(() => {\n if (!('default' in config))\n return -1;\n return items.findIndex((item) => isSelectable(item) && item.value === config.default);\n }, [config.default, items]);\n const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);\n // Safe to assume the cursor position always point to a Choice.\n const selectedChoice = items[active];\n useKeypress((key, rl) => {\n clearTimeout(searchTimeoutRef.current);\n if (isEnterKey(key)) {\n setStatus('done');\n done(selectedChoice.value);\n }\n else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {\n rl.clearLine(0);\n if (loop ||\n (isUpKey(key, keybindings) && active !== bounds.first) ||\n (isDownKey(key, keybindings) && active !== bounds.last)) {\n const offset = isUpKey(key, keybindings) ? -1 : 1;\n let next = active;\n do {\n next = (next + offset + items.length) % items.length;\n } while (!isSelectable(items[next]));\n setActive(next);\n }\n }\n else if (isNumberKey(key) && !Number.isNaN(Number(rl.line))) {\n const selectedIndex = Number(rl.line) - 1;\n // Find the nth item (ignoring separators)\n let selectableIndex = -1;\n const position = items.findIndex((item) => {\n if (Separator.isSeparator(item))\n return false;\n selectableIndex++;\n return selectableIndex === selectedIndex;\n });\n const item = items[position];\n if (item != null && isSelectable(item)) {\n setActive(position);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n else if (isBackspaceKey(key)) {\n rl.clearLine(0);\n }\n else if (searchEnabled) {\n const searchTerm = rl.line.toLowerCase();\n const matchIndex = items.findIndex((item) => {\n if (Separator.isSeparator(item) || !isSelectable(item))\n return false;\n return item.name.toLowerCase().startsWith(searchTerm);\n });\n if (matchIndex !== -1) {\n setActive(matchIndex);\n }\n searchTimeoutRef.current = setTimeout(() => {\n rl.clearLine(0);\n }, 700);\n }\n });\n useEffect(() => () => {\n clearTimeout(searchTimeoutRef.current);\n }, []);\n const message = theme.style.message(config.message, status);\n let helpLine;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (theme.helpMode !== 'never') {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (config.instructions) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const { pager, navigation } = config.instructions;\n helpLine = theme.style.help(items.length > pageSize ? pager : navigation);\n }\n else {\n helpLine = theme.style.keysHelpTip([\n ['\u2191\u2193', 'navigate'],\n ['\u23CE', 'select'],\n ]);\n }\n }\n let separatorCount = 0;\n const page = usePagination({\n items,\n active,\n renderItem({ item, isActive, index }) {\n if (Separator.isSeparator(item)) {\n separatorCount++;\n return ` ${item.separator}`;\n }\n const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';\n if (item.disabled) {\n const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';\n return theme.style.disabled(`${indexLabel}${item.name} ${disabledLabel}`);\n }\n const color = isActive ? theme.style.highlight : (x) => x;\n const cursor = isActive ? theme.icon.cursor : ` `;\n return color(`${cursor} ${indexLabel}${item.name}`);\n },\n pageSize,\n loop,\n });\n if (status === 'done') {\n return [prefix, message, theme.style.answer(selectedChoice.short)]\n .filter(Boolean)\n .join(' ');\n }\n const { description } = selectedChoice;\n const lines = [\n [prefix, message].filter(Boolean).join(' '),\n page,\n ' ',\n description ? theme.style.description(description) : '',\n helpLine,\n ]\n .filter(Boolean)\n .join('\\n')\n .trimEnd();\n return `${lines}${cursorHide}`;\n});\nexport { Separator } from '@inquirer/core';\n", "export { default as checkbox, Separator } from '@inquirer/checkbox';\nexport { default as editor } from '@inquirer/editor';\nexport { default as confirm } from '@inquirer/confirm';\nexport { default as input } from '@inquirer/input';\nexport { default as number } from '@inquirer/number';\nexport { default as expand } from '@inquirer/expand';\nexport { default as rawlist } from '@inquirer/rawlist';\nexport { default as password } from '@inquirer/password';\nexport { default as search } from '@inquirer/search';\nexport { default as select } from '@inquirer/select';\n", "/**\n * Sentry integration commands: auth, connect, projects, issues, fix, fix-all, webhook.\n *\n * All commands call backend /api/sentry/* endpoints via the authenticated API client.\n * Sentry credentials stay server-side \u2014 the CLI never touches the Sentry API directly.\n *\n * Usage:\n * spacecode sentry auth --org <slug> --token <token> # Manual token auth\n * spacecode sentry auth # OAuth (opens browser)\n * spacecode sentry auth --remove # Remove credentials\n * spacecode sentry connect -R <repo> # Auto-detect project + webhook\n * spacecode sentry projects\n * spacecode sentry issues [project] [--limit N]\n * spacecode sentry fix <issue-id> -R <repo> [-b branch]\n * spacecode sentry fix-all -R <repo> --project <slug> [--limit N]\n * spacecode sentry webhook add --project <slug> -R <repo>\n * spacecode sentry webhook list\n * spacecode sentry webhook remove <id>\n */\n\nimport type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { requireAuth } from './auth.js';\n\nexport function registerSentryCommand(program: Command): void {\n const sentry = program\n .command('sentry')\n .description('Sentry integration \u2014 auto-fix bugs from Sentry issues');\n\n sentry\n .command('auth')\n .description('Authenticate with Sentry (token or OAuth)')\n .option('--org <slug>', 'Sentry organization slug')\n .option('--token <token>', 'Sentry auth token (with project:read, project:write, event:read scopes)')\n .option('--remove', 'Remove stored Sentry credentials')\n .action(async (options: { org?: string; token?: string; remove?: boolean }) => {\n try {\n const client = await requireAuth();\n\n if (options.remove) {\n await client.deleteSentryCredentials();\n console.log(chalk.green('Sentry credentials removed.'));\n return;\n }\n\n if (options.token && options.org) {\n // Manual token auth\n await client.setSentryCredentials(options.token, options.org);\n const { projects } = await client.listSentryProjects();\n console.log(chalk.green(`\\nAuthenticated with Sentry org \"${options.org}\" (${projects.length} projects found)`));\n return;\n }\n\n if (options.token || options.org) {\n console.error(chalk.red('Both --org and --token are required for manual auth.'));\n process.exit(1);\n }\n\n // OAuth flow\n console.log(chalk.cyan('Starting Sentry OAuth flow...'));\n const { url, state } = await client.startSentryOAuth();\n\n const open = (await import('open')).default;\n await open(url);\n console.log(chalk.gray(`\\n Opened browser for Sentry authorization.`));\n console.log(chalk.gray(` Waiting for authorization...\\n`));\n\n // Poll for completion\n const maxAttempts = 60;\n for (let i = 0; i < maxAttempts; i++) {\n await new Promise((r) => setTimeout(r, 2000));\n const status = await client.pollSentryOAuth(state);\n if (status.completed) {\n console.log(chalk.green(`\\nAuthenticated with Sentry org \"${status.orgSlug}\"`));\n return;\n }\n if (status.error) {\n console.error(chalk.red(`\\nOAuth failed: ${status.error}`));\n process.exit(1);\n }\n }\n\n console.error(chalk.red('\\nOAuth timed out. Please try again.'));\n process.exit(1);\n } catch (error) {\n console.error(chalk.red(`Failed: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n sentry\n .command('connect')\n .description('Connect a Sentry project to a GitHub repo with auto-fix')\n .requiredOption('-R, --repo <repo>', 'GitHub repository (owner/repo)')\n .option('--project <slug>', 'Sentry project slug (auto-detected if only one)')\n .action(async (options: { repo: string; project?: string }) => {\n try {\n const client = await requireAuth();\n const result = await client.sentryConnect(options.repo, options.project) as any;\n\n if (result.needsSelection) {\n // Multiple projects \u2014 interactive picker\n const { select } = await import('@inquirer/prompts');\n const projectSlug = await select<string>({\n message: 'Which Sentry project maps to this repo?',\n choices: result.projects.map((p: any) => ({\n name: `${p.slug}${p.platform ? ` [${p.platform}]` : ''} \u2014 ${p.name}`,\n value: p.slug as string,\n })),\n });\n\n const retryResult = await client.sentryConnect(options.repo, projectSlug) as any;\n printConnectResult(retryResult);\n } else {\n printConnectResult(result);\n }\n } catch (error) {\n console.error(chalk.red(`Failed to connect: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n sentry\n .command('projects')\n .description('List Sentry projects in your organization')\n .action(async () => {\n try {\n const client = await requireAuth();\n const { projects } = await client.listSentryProjects();\n\n if (projects.length === 0) {\n console.log(chalk.gray('No projects found in your Sentry organization.'));\n return;\n }\n\n console.log(chalk.bold(`\\n Sentry Projects (${projects.length}):\\n`));\n for (const p of projects) {\n const platform = p.platform ? chalk.gray(` [${p.platform}]`) : '';\n console.log(` ${chalk.cyan(p.slug)}${platform} ${p.name}`);\n }\n console.log();\n } catch (error) {\n console.error(chalk.red(`Failed to list projects: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n sentry\n .command('issues')\n .description('List unresolved Sentry issues')\n .argument('[project]', 'Project slug to filter issues')\n .option('--limit <n>', 'Max issues to return', '25')\n .action(async (project: string | undefined, options: { limit: string }) => {\n try {\n const client = await requireAuth();\n const limit = parseInt(options.limit, 10) || 25;\n const { issues } = await client.listSentryIssues(project, limit);\n\n if (issues.length === 0) {\n console.log(chalk.gray('No unresolved issues found.'));\n return;\n }\n\n console.log(chalk.bold(`\\n Unresolved Issues (${issues.length}):\\n`));\n for (const i of issues as any[]) {\n const levelColor = i.level === 'error' ? chalk.red : i.level === 'warning' ? chalk.yellow : chalk.gray;\n console.log(` ${chalk.cyan(i.shortId)} ${levelColor(`[${i.level}]`)} ${i.title}`);\n console.log(` ${chalk.gray(`${i.count} events | last seen: ${i.lastSeen}`)}`);\n if (i.culprit) console.log(` ${chalk.gray(i.culprit)}`);\n console.log();\n }\n } catch (error) {\n console.error(chalk.red(`Failed to list issues: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n sentry\n .command('fix')\n .description('Fix a single Sentry issue using a cloud sandbox')\n .argument('<issue-id>', 'Sentry issue ID or short ID')\n .requiredOption('-R, --repo <repo>', 'GitHub repository (owner/repo or URL)')\n .option('-b, --branch <branch>', 'Branch name for the fix')\n .action(async (issueId: string, options: { repo: string; branch?: string }) => {\n try {\n const client = await requireAuth();\n console.log(chalk.cyan(`Dispatching fix for issue ${issueId}...`));\n\n const result = await client.fixSentryIssue(issueId, options.repo, {\n branch: options.branch,\n });\n\n if ((result as any).success) {\n console.log(chalk.green(`\\nFix dispatched successfully!`));\n if ((result as any).taskId) console.log(` Task ID: ${(result as any).taskId}`);\n if ((result as any).diff) {\n console.log(chalk.bold('\\n--- Diff ---'));\n console.log((result as any).diff);\n }\n } else {\n console.error(chalk.red(`Fix failed: ${(result as any).error ?? 'Unknown error'}`));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red(`Failed to fix issue: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n sentry\n .command('fix-all')\n .description('Batch fix unresolved issues for a project')\n .requiredOption('-R, --repo <repo>', 'GitHub repository (owner/repo or URL)')\n .requiredOption('--project <slug>', 'Sentry project slug')\n .option('--limit <n>', 'Max issues to fix', '10')\n .action(async (options: { repo: string; project: string; limit: string }) => {\n try {\n const client = await requireAuth();\n const limit = parseInt(options.limit, 10) || 10;\n\n // Fetch issues first\n const { issues } = await client.listSentryIssues(options.project, limit);\n\n if (issues.length === 0) {\n console.log(chalk.gray('No unresolved issues found.'));\n return;\n }\n\n console.log(chalk.bold(`\\nFound ${issues.length} issues. Dispatching fixes...\\n`));\n for (const i of issues as any[]) {\n console.log(` ${chalk.cyan(i.shortId)} ${i.title}`);\n }\n\n const issueIds = (issues as any[]).map((i) => i.id);\n const { results } = await client.fixSentryBatch(issueIds, options.repo);\n\n console.log(chalk.bold(`\\nBatch complete:\\n`));\n for (const r of results as any[]) {\n const icon = r.status === 'dispatched' ? chalk.green('OK') : chalk.red('FAIL');\n console.log(` [${icon}] ${r.issueId} ${r.branch ?? ''}`);\n if (r.error) console.log(chalk.red(` ${r.error}`));\n }\n } catch (error) {\n console.error(chalk.red(`Failed to batch fix: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n // -------------------------------------------------------------------------\n // Webhook auto-fix subcommands\n // -------------------------------------------------------------------------\n\n const webhook = sentry\n .command('webhook')\n .description('Manage Sentry webhook auto-fix configs');\n\n webhook\n .command('add')\n .description('Create a webhook config that auto-fixes new Sentry issues')\n .requiredOption('--project <slug>', 'Sentry project slug')\n .requiredOption('-R, --repo <repo>', 'GitHub repository (owner/repo)')\n .action(async (options: { project: string; repo: string }) => {\n try {\n const client = await requireAuth();\n const result = await client.createSentryWebhook(options.project, options.repo) as any;\n\n console.log(chalk.green('\\nWebhook config created!'));\n\n if (result.webhook.autoRegistered) {\n console.log(chalk.green('\\n Auto-registered in Sentry \u2014 no manual setup needed.'));\n console.log(` ${chalk.bold('Webhook URL:')} ${chalk.cyan(result.webhook.webhookUrl)}`);\n } else {\n console.log(`\\n ${chalk.bold('Webhook URL:')} ${chalk.cyan(result.webhook.webhookUrl)}`);\n console.log(` ${chalk.bold('Secret:')} ${result.webhookSecret}`);\n console.log(chalk.gray(`\\n Configure this URL and secret in your Sentry project's webhook settings.`));\n console.log(chalk.gray(` Events to enable: issue.created, issue.regression`));\n console.log(chalk.gray(` Tip: add project:write scope to your Sentry token to auto-register.\\n`));\n }\n } catch (error) {\n console.error(chalk.red(`Failed to create webhook: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n webhook\n .command('list')\n .description('List configured Sentry webhooks')\n .action(async () => {\n try {\n const client = await requireAuth();\n const { webhooks } = await client.listSentryWebhooks();\n\n if (webhooks.length === 0) {\n console.log(chalk.gray('No webhook configs found. Use `spacecode sentry webhook add` to create one.'));\n return;\n }\n\n console.log(chalk.bold(`\\n Sentry Webhooks (${webhooks.length}):\\n`));\n for (const w of webhooks as any[]) {\n const status = w.autoFixEnabled ? chalk.green('active') : chalk.gray('paused');\n const reg = w.autoRegistered ? chalk.cyan('auto') : chalk.yellow('manual');\n console.log(` ${chalk.cyan(w.id.slice(0, 8))} ${status} [${reg}] ${w.sentryProjectSlug} \u2192 ${w.githubRepo}`);\n console.log(` ${chalk.gray(w.webhookUrl)}`);\n console.log();\n }\n } catch (error) {\n console.error(chalk.red(`Failed to list webhooks: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n webhook\n .command('remove')\n .description('Remove a webhook config')\n .argument('<id>', 'Webhook config ID')\n .action(async (id: string) => {\n try {\n const client = await requireAuth();\n await client.deleteSentryWebhook(id);\n console.log(chalk.green(`Webhook ${id.slice(0, 8)} removed.`));\n } catch (error) {\n console.error(chalk.red(`Failed to remove webhook: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n webhook\n .command('pause')\n .description('Pause auto-fix for a webhook')\n .argument('<id>', 'Webhook config ID')\n .action(async (id: string) => {\n try {\n const client = await requireAuth();\n await client.toggleSentryWebhook(id, false);\n console.log(chalk.yellow(`Webhook ${id.slice(0, 8)} paused.`));\n } catch (error) {\n console.error(chalk.red(`Failed to pause: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n webhook\n .command('resume')\n .description('Resume auto-fix for a webhook')\n .argument('<id>', 'Webhook config ID')\n .action(async (id: string) => {\n try {\n const client = await requireAuth();\n await client.toggleSentryWebhook(id, true);\n console.log(chalk.green(`Webhook ${id.slice(0, 8)} resumed.`));\n } catch (error) {\n console.error(chalk.red(`Failed to resume: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\n webhook\n .command('deliveries')\n .description('List recent deliveries for a webhook')\n .argument('<id>', 'Webhook config ID')\n .option('--limit <n>', 'Max deliveries to return', '20')\n .action(async (id: string, options: { limit: string }) => {\n try {\n const client = await requireAuth();\n const limit = parseInt(options.limit, 10) || 20;\n const { deliveries } = await client.getSentryWebhookDeliveries(id, limit);\n\n if (deliveries.length === 0) {\n console.log(chalk.gray('No deliveries yet.'));\n return;\n }\n\n console.log(chalk.bold(`\\n Deliveries (${deliveries.length}):\\n`));\n for (const d of deliveries as any[]) {\n console.log(` ${chalk.gray(d.created_at)} ${d.action} issue:${chalk.cyan(d.issue_id)} [${d.status}]`);\n }\n console.log();\n } catch (error) {\n console.error(chalk.red(`Failed to list deliveries: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n}\n\nfunction printConnectResult(result: any): void {\n if (result.alreadyExists) {\n console.log(chalk.green(`\\nAlready connected: ${result.project.slug} \u2192 ${result.webhook.githubRepo}`));\n return;\n }\n\n const project = result.project?.slug ?? result.webhook?.sentryProjectSlug ?? 'unknown';\n const repo = result.webhook?.githubRepo ?? 'unknown';\n\n console.log(chalk.green(`\\nConnected: ${project} \u2192 ${repo}`));\n\n if (result.webhook?.autoRegistered) {\n console.log(chalk.green(' Auto-registered in Sentry \u2014 auto-fix is live.'));\n } else if (result.webhookSecret) {\n console.log(`\\n ${chalk.bold('Webhook URL:')} ${chalk.cyan(result.webhook.webhookUrl)}`);\n console.log(` ${chalk.bold('Secret:')} ${result.webhookSecret}`);\n console.log(chalk.gray(`\\n Configure in Sentry project settings to enable auto-fix.`));\n console.log(chalk.gray(` Tip: add project:write scope to auto-register.\\n`));\n }\n}\n", "/**\n * Config management commands\n *\n * Manage user configs stored in backend KV that auto-sync to VMs\n */\n\nimport { readFile } from 'fs/promises';\nimport { requireAuth } from './auth.js';\nimport { loadConfig, saveConfig } from '../config.js';\nimport type { ConfigKey } from '../api/types.js';\nimport chalk from 'chalk';\n\n/**\n * Set API URL in config\n */\nexport async function setApiUrl(apiUrl: string): Promise<void> {\n const config = await loadConfig();\n config.apiUrl = apiUrl;\n await saveConfig(config);\n console.log(chalk.green('\u2713 API URL saved to config'));\n console.log(chalk.gray(` URL: ${apiUrl}`));\n}\n\n/**\n * Show current local config\n */\nexport async function showLocalConfig(): Promise<void> {\n const config = await loadConfig();\n\n console.log(chalk.cyan('\uD83D\uDCCB Local Configuration:\\n'));\n\n const entries = Object.entries(config);\n if (entries.length === 0) {\n console.log(chalk.gray('No local configuration found.'));\n return;\n }\n\n for (const [key, value] of entries) {\n const displayKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n const displayValue = String(value ?? '(not set)');\n console.log(` ${chalk.green(displayKey.padEnd(15))} ${chalk.gray(displayValue)}`);\n }\n}\n\n/**\n * List all stored configs\n */\nexport async function listConfigs(): Promise<void> {\n const apiClient = await requireAuth();\n\n const response = await apiClient.getConfigs();\n\n console.log(chalk.cyan('\uD83D\uDCCB Stored Configs:\\n'));\n\n const configEntries = Object.entries(response.config);\n if (configEntries.length === 0) {\n console.log(chalk.gray('No configs stored yet.'));\n console.log(chalk.gray('Use: spacecode config --set <key> < <file>'));\n return;\n }\n\n const configPaths: Record<ConfigKey, string> = {\n claudeMd: '~/.claude/CLAUDE.md',\n settingsJson: '~/.claude/settings.json',\n settingsLocal: '~/.claude/settings.local.json',\n prd: '~/workspace/PRD.md',\n progress: '~/workspace/docs/PROGRESS.md',\n };\n\n for (const [key, value] of configEntries) {\n if (value !== null) {\n const lines = value.split('\\n').length;\n const path = configPaths[key as ConfigKey] ?? key;\n console.log(` ${chalk.green(key.padEnd(15))} ${chalk.gray(`\u2192 ${path}`)} ${chalk.gray(`(${lines} lines)`)}`);\n }\n }\n}\n\n/**\n * Get a specific config value\n */\nexport async function getConfig(key: ConfigKey): Promise<void> {\n const apiClient = await requireAuth();\n\n const response = await apiClient.getConfig(key);\n\n if (response.value === null) {\n console.log(chalk.yellow(`No config stored for '${key}'`));\n console.log(chalk.gray('Use: spacecode config --set <key> < <file>'));\n return;\n }\n\n console.log(response.value);\n}\n\n/**\n * Set a config value from a file\n */\nexport async function setConfig(key: ConfigKey, filePath: string): Promise<void> {\n const apiClient = await requireAuth();\n\n // Read content from stdin or file\n let content: string;\n if (filePath === '-') {\n // Read from stdin\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(chunk as Buffer);\n }\n content = Buffer.concat(chunks).toString('utf-8');\n } else {\n // Read from file\n try {\n content = await readFile(filePath, 'utf-8');\n } catch (error) {\n console.error(chalk.red(`\u2717 Failed to read file: ${filePath}`));\n throw error;\n }\n }\n\n const response = await apiClient.setConfig(key, content);\n\n console.log(chalk.green(`\u2713 Config '${response.key}' saved to backend`));\n console.log(chalk.gray(` Sync path: ${response.path}`));\n}\n\n/**\n * Delete a config value\n */\nexport async function deleteConfig(key: ConfigKey): Promise<void> {\n const apiClient = await requireAuth();\n\n await apiClient.deleteConfig(key);\n\n console.log(chalk.green(`\u2713 Config '${key}' deleted`));\n}\n\n/**\n * Show config paths for reference\n */\nexport function showConfigPaths(): void {\n console.log(chalk.cyan('\uD83D\uDCCB Config Keys and Paths:\\n'));\n console.log(' Key Path on VM');\n console.log(' ' + chalk.gray('\u2500'.repeat(60)));\n console.log(' claudeMd ~/.claude/CLAUDE.md');\n console.log(' settingsJson ~/.claude/settings.json');\n console.log(' settingsLocal ~/.claude/settings.local.json');\n console.log(' prd ~/workspace/PRD.md');\n console.log(' progress ~/workspace/docs/PROGRESS.md');\n console.log();\n console.log(chalk.gray('Examples:'));\n console.log(' spacecode config --list');\n console.log(' spacecode config --get prd');\n console.log(' spacecode config --set prd < PRD.md');\n console.log(' spacecode config --delete prd');\n}\n", "/**\n * Analytics command - displays API proxy pipeline metrics\n *\n * Fetches the rolling analytics summary from the API proxy's\n * /v1/analytics endpoint and renders it as a formatted terminal dashboard.\n */\n\nimport chalk from 'chalk';\nimport { API_PROXY_URL } from '@spacecode/shared/remote';\n\nexport interface AnalyticsOptions {\n secret?: string;\n json?: boolean;\n url?: string;\n}\n\ninterface AnalyticsSummary {\n totalRequests: number;\n semanticCacheHits: number;\n semanticCacheMisses: number;\n semanticCacheSkips: number;\n contextCacheHits: number;\n contextCacheMisses: number;\n contextCacheSkips: number;\n domainCounts: Record<string, number>;\n avgLatencyMs: number;\n avgSemanticCacheScore: number;\n qualityGatePassCount: number;\n qualityGateFailCount: number;\n pipelineSuccessCount: number;\n pipelineFallthroughCount: number;\n lastUpdated: number;\n}\n\nfunction resolveSecret(options: AnalyticsOptions): string {\n const secret = options.secret || process.env.SPACECODE_DEBUG_SECRET;\n if (!secret) {\n console.error(chalk.red('Error: No debug secret configured.'));\n console.log(chalk.dim('Set SPACECODE_DEBUG_SECRET env var or pass --secret <secret>'));\n process.exit(1);\n }\n return secret;\n}\n\nfunction pct(n: number, total: number): string {\n if (total === 0) return '0.0%';\n return `${((n / total) * 100).toFixed(1)}%`;\n}\n\nfunction bar(n: number, total: number, width = 20): string {\n if (total === 0) return chalk.dim('\u2591'.repeat(width));\n const filled = Math.round((n / total) * width);\n return chalk.green('\u2588'.repeat(filled)) + chalk.dim('\u2591'.repeat(width - filled));\n}\n\nfunction formatMs(ms: number): string {\n if (ms < 1000) return `${Math.round(ms)}ms`;\n return `${(ms / 1000).toFixed(1)}s`;\n}\n\nfunction formatTimestamp(ts: number): string {\n if (!ts) return 'never';\n const d = new Date(ts);\n const age = Date.now() - ts;\n const mins = Math.floor(age / 60_000);\n if (mins < 60) return `${mins}m ago`;\n const hours = Math.floor(mins / 60);\n if (hours < 24) return `${hours}h ${mins % 60}m ago`;\n return d.toISOString().replace('T', ' ').slice(0, 19);\n}\n\nfunction renderDashboard(summary: AnalyticsSummary): void {\n const { totalRequests: total } = summary;\n\n console.log(chalk.bold('\\n API Proxy Analytics Dashboard\\n'));\n console.log(chalk.dim(` Last updated: ${formatTimestamp(summary.lastUpdated)}`));\n console.log(chalk.dim(` Total requests: ${total.toLocaleString()}\\n`));\n\n // \u2500\u2500 Pipeline \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n console.log(chalk.bold(' Pipeline'));\n const pipelineTotal = summary.pipelineSuccessCount + summary.pipelineFallthroughCount;\n console.log(` Success: ${bar(summary.pipelineSuccessCount, pipelineTotal)} ${summary.pipelineSuccessCount} (${pct(summary.pipelineSuccessCount, pipelineTotal)})`);\n console.log(` Fallthrough: ${bar(summary.pipelineFallthroughCount, pipelineTotal)} ${summary.pipelineFallthroughCount} (${pct(summary.pipelineFallthroughCount, pipelineTotal)})`);\n console.log('');\n\n // \u2500\u2500 Semantic Cache \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n console.log(chalk.bold(' Semantic Cache'));\n const semTotal = summary.semanticCacheHits + summary.semanticCacheMisses + summary.semanticCacheSkips;\n console.log(` Hit: ${bar(summary.semanticCacheHits, semTotal)} ${summary.semanticCacheHits} (${pct(summary.semanticCacheHits, semTotal)})`);\n console.log(` Miss: ${bar(summary.semanticCacheMisses, semTotal)} ${summary.semanticCacheMisses} (${pct(summary.semanticCacheMisses, semTotal)})`);\n console.log(` Skip: ${bar(summary.semanticCacheSkips, semTotal)} ${summary.semanticCacheSkips} (${pct(summary.semanticCacheSkips, semTotal)})`);\n if (summary.avgSemanticCacheScore > 0) {\n console.log(` Avg score: ${summary.avgSemanticCacheScore.toFixed(4)}`);\n }\n console.log('');\n\n // \u2500\u2500 Context Cache \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n console.log(chalk.bold(' Context Cache'));\n const ctxTotal = summary.contextCacheHits + summary.contextCacheMisses + summary.contextCacheSkips;\n console.log(` Hit: ${bar(summary.contextCacheHits, ctxTotal)} ${summary.contextCacheHits} (${pct(summary.contextCacheHits, ctxTotal)})`);\n console.log(` Miss: ${bar(summary.contextCacheMisses, ctxTotal)} ${summary.contextCacheMisses} (${pct(summary.contextCacheMisses, ctxTotal)})`);\n console.log(` Skip: ${bar(summary.contextCacheSkips, ctxTotal)} ${summary.contextCacheSkips} (${pct(summary.contextCacheSkips, ctxTotal)})`);\n console.log('');\n\n // \u2500\u2500 Quality Gate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n console.log(chalk.bold(' Quality Gate'));\n const qgTotal = summary.qualityGatePassCount + summary.qualityGateFailCount;\n console.log(` Pass: ${bar(summary.qualityGatePassCount, qgTotal)} ${summary.qualityGatePassCount} (${pct(summary.qualityGatePassCount, qgTotal)})`);\n console.log(` Fail: ${bar(summary.qualityGateFailCount, qgTotal)} ${summary.qualityGateFailCount} (${pct(summary.qualityGateFailCount, qgTotal)})`);\n console.log('');\n\n // \u2500\u2500 Latency \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n console.log(chalk.bold(' Latency'));\n console.log(` Average: ${formatMs(summary.avgLatencyMs)}`);\n console.log('');\n\n // \u2500\u2500 Domain Distribution \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const domains = Object.entries(summary.domainCounts).sort((a, b) => b[1] - a[1]);\n if (domains.length > 0) {\n console.log(chalk.bold(' Domain Distribution'));\n const domainTotal = domains.reduce((sum, [, count]) => sum + count, 0);\n for (const [domain, count] of domains) {\n const label = domain.padEnd(14);\n console.log(` ${label} ${bar(count, domainTotal)} ${count} (${pct(count, domainTotal)})`);\n }\n console.log('');\n }\n}\n\nexport async function analytics(options: AnalyticsOptions): Promise<void> {\n const secret = resolveSecret(options);\n\n console.log(chalk.dim('Fetching analytics...'));\n\n const baseUrl = options.url || API_PROXY_URL;\n\n try {\n const resp = await fetch(`${baseUrl}/v1/analytics`, {\n headers: { 'X-Debug-Secret': secret },\n });\n\n if (resp.status === 401) {\n console.error(chalk.red('Error: Unauthorized. Check your debug secret.'));\n process.exit(1);\n }\n\n if (!resp.ok) {\n console.error(chalk.red(`Error: HTTP ${resp.status} from API proxy.`));\n process.exit(1);\n }\n\n const data = await resp.json() as AnalyticsSummary | { error: string };\n\n if ('error' in data) {\n console.log(chalk.yellow(`\\n ${data.error}\\n`));\n console.log(chalk.dim(' Analytics data will appear after requests flow through the pipeline.'));\n return;\n }\n\n if (options.json) {\n console.log(JSON.stringify(data, null, 2));\n } else {\n renderDashboard(data);\n }\n } catch (error) {\n console.error(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n}\n", "import { spawn } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport * as path from 'node:path';\n\n/**\n * Candidate locations of the built agent-ui bundle: env override, the bundle shipped\n * inside the published package (`dist/repl.mjs`, next to the CLI entry; `.mjs` because\n * the CLI package is CommonJS), then the monorepo sibling layouts.\n */\nexport function replBinCandidates(dir: string, envBin = process.env.SPACECODE_REPL_BIN): string[] {\n return [\n ...(envBin ? [envBin] : []),\n path.resolve(dir, 'repl.mjs'),\n path.resolve(dir, '../../agent-ui/dist/index.js'),\n path.resolve(dir, '../../../agent-ui/dist/index.js'),\n ];\n}\n\n/** First candidate that exists, or null. */\nexport function resolveReplBin(dir: string, exists: (p: string) => boolean = existsSync): string | null {\n return replBinCandidates(dir).find((p) => exists(p)) ?? null;\n}\n\n/** Run the local agent REPL (packages/agent-ui) attached to this terminal; resolves with its exit code. */\nexport async function startLocalRepl(opts: { yolo?: boolean } = {}): Promise<number> {\n const bin = resolveReplBin(__dirname);\n if (!bin) {\n throw new Error(\n 'Local REPL not built. Run `pnpm --filter @spacecode/agent-ui build` (or set SPACECODE_REPL_BIN), ' +\n 'or use `spacecode --cloud` for a cloud session.',\n );\n }\n const args = [bin, ...(opts.yolo ? ['--yolo'] : [])];\n return new Promise<number>((resolve, reject) => {\n const child = spawn(process.execPath, args, { stdio: 'inherit' });\n child.on('error', reject);\n child.on('exit', (code, signal) => {\n if (signal) return reject(new Error(`REPL terminated by signal ${signal}`));\n resolve(code ?? 0);\n });\n });\n}\n", "/**\n * Headless mode (-p) \u2014 pipe-friendly coding agent execution\n *\n * Writes Agent output directly to stdout (raw, no chalk wrapping).\n * Status, errors, and diff go to stderr.\n * Supports --output-format json for structured machine-readable output.\n * Designed for scripting: `spacecode -p \"prompt\" -R repo > output.txt`\n */\n\nimport type { ProxyMode, HeadlessResult } from '@spacecode/shared/remote';\nimport { validateRepo, validateBranch, validatePrompt } from '../utils/validation.js';\nimport { generateTaskId } from '../utils/task.js';\nimport { setupRun } from '../utils/run-setup.js';\nimport { captureException, logError } from '../posthog.js';\nimport { buildRemoteTask, statusFromResult, errorTaskStatus } from '../utils/remote-task.js';\n\nexport type OutputFormat = 'text' | 'json';\n\nexport interface HeadlessOptions {\n repo: string;\n prompt: string;\n branch?: string;\n noCommit?: boolean;\n idleTimeout?: number;\n proxyMode?: ProxyMode;\n outputFormat?: OutputFormat;\n verbose?: boolean;\n}\n\nexport async function headless(options: HeadlessOptions): Promise<void> {\n const taskId = generateTaskId();\n const validRepo = validateRepo(options.repo);\n const validPrompt = validatePrompt(options.prompt);\n const validBranch = options.branch ? validateBranch(options.branch) : undefined;\n const verbose = options.verbose ?? false;\n const startTime = Date.now();\n\n // SIGINT \u2192 abort the SSE stream (distinct from keepalive timeout)\n const abortController = new AbortController();\n let abortReason: 'sigint' | 'keepalive' | null = null;\n const sigintHandler = () => {\n abortReason = 'sigint';\n abortController.abort();\n };\n process.on('SIGINT', sigintHandler);\n\n const jsonMode = options.outputFormat === 'json';\n let finalExitCode = 1;\n\n // JSON mode: buffer output, emit structured object at the end\n const outputChunks: string[] = [];\n let resultDiff = '';\n\n try {\n const { client, envVars } = await setupRun({ proxyMode: options.proxyMode });\n\n let exitCode = 0;\n let success = true;\n\n // Keepalive: abort if no SSE events for 5 minutes\n const KEEPALIVE_TIMEOUT_MS = 5 * 60 * 1000;\n let keepaliveTimer: ReturnType<typeof setTimeout> | null = null;\n\n const resetKeepalive = () => {\n if (keepaliveTimer) clearTimeout(keepaliveTimer);\n keepaliveTimer = setTimeout(() => {\n process.stderr.write('error: stream stalled (no data for 5 minutes)\\n');\n abortReason = 'keepalive';\n abortController.abort();\n }, KEEPALIVE_TIMEOUT_MS);\n };\n\n resetKeepalive();\n\n try {\n await client.run(\n {\n repo: validRepo,\n prompt: validPrompt,\n envVars,\n branch: validBranch,\n noCommit: options.noCommit,\n idleTimeoutMinutes: options.idleTimeout,\n },\n (event) => {\n resetKeepalive();\n switch (event.type) {\n case 'status':\n if (verbose) {\n const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);\n process.stderr.write(`[${event.data.phase}] +${elapsed}s\\n`);\n } else {\n process.stderr.write(`[${event.data.phase}]\\n`);\n }\n break;\n case 'output':\n if (jsonMode) {\n outputChunks.push(event.data.text);\n } else if (verbose && event.data.stream === 'stderr') {\n process.stderr.write(`[stderr] ${event.data.text}`);\n } else {\n process.stdout.write(event.data.text);\n }\n break;\n case 'done':\n exitCode = event.data.exitCode;\n success = event.data.success;\n resultDiff = event.data.diff;\n if (!jsonMode && event.data.diff) {\n process.stderr.write(event.data.diff + '\\n');\n }\n break;\n case 'error':\n process.stderr.write(`error: ${event.data.message}\\n`);\n success = false;\n exitCode = 1;\n break;\n default: {\n const _exhaustive: never = event;\n void _exhaustive;\n }\n }\n },\n abortController.signal,\n );\n } finally {\n if (keepaliveTimer) clearTimeout(keepaliveTimer);\n }\n\n // JSON mode: emit structured result to stdout\n if (jsonMode) {\n const result: HeadlessResult = {\n taskId,\n repo: validRepo,\n branch: validBranch,\n result: outputChunks.join(''),\n exitCode,\n success,\n diff: resultDiff,\n durationSeconds: Math.round((Date.now() - startTime) / 1000),\n };\n process.stdout.write(JSON.stringify(result, null, 2) + '\\n');\n }\n\n // Save task record (non-fatal \u2014 don't let save failure turn success into error)\n try {\n const { addTask } = await import('../config.js');\n const task = buildRemoteTask({\n id: taskId,\n repo: validRepo,\n prompt: validPrompt,\n mode: 'headless',\n status: statusFromResult(success),\n exitCode,\n branch: validBranch,\n });\n await addTask(task);\n } catch (saveErr) {\n process.stderr.write(`warning: failed to save task record: ${saveErr instanceof Error ? saveErr.message : String(saveErr)}\\n`);\n }\n\n finalExitCode = exitCode;\n } catch (error) {\n const isAbort = error instanceof Error && error.name === 'AbortError';\n const isSigint = isAbort && abortReason === 'sigint';\n const isKeepalive = isAbort && abortReason === 'keepalive';\n\n const errorExitCode = isSigint ? 130 : 1;\n const errorMessage = isSigint\n ? 'Cancelled by user'\n : isKeepalive\n ? 'Stream stalled (no data for 5 minutes)'\n : (error instanceof Error ? error.message : String(error));\n const taskStatus = errorTaskStatus(isSigint);\n\n // JSON mode: emit error result\n if (jsonMode) {\n const result: HeadlessResult = {\n taskId,\n repo: validRepo,\n branch: validBranch,\n result: outputChunks.join(''),\n exitCode: errorExitCode,\n success: false,\n diff: resultDiff,\n durationSeconds: Math.round((Date.now() - startTime) / 1000),\n error: errorMessage,\n };\n process.stdout.write(JSON.stringify(result, null, 2) + '\\n');\n }\n\n // Save task record\n try {\n const { addTask } = await import('../config.js');\n const task = buildRemoteTask({\n id: taskId,\n repo: validRepo,\n prompt: validPrompt,\n mode: 'headless',\n status: taskStatus,\n error: errorMessage,\n });\n await addTask(task);\n } catch (saveErr) {\n process.stderr.write(`warning: failed to save task record: ${saveErr instanceof Error ? saveErr.message : String(saveErr)}\\n`);\n }\n\n if (!jsonMode && !isAbort) {\n process.stderr.write(`error: ${errorMessage}\\n`);\n }\n\n // Report non-abort errors to Sentry\n if (!isAbort && error instanceof Error) {\n captureException(error, { command: 'headless', repo: validRepo, taskId });\n logError('headless task failed', { taskId, repo: validRepo, error: errorMessage });\n }\n\n finalExitCode = errorExitCode;\n } finally {\n process.removeListener('SIGINT', sigintHandler);\n }\n\n process.exit(finalExitCode);\n}\n", "#!/usr/bin/env node\n\n/**\n * spacecode - Cloud dev environments with AI coding agents\n *\n * Launch fully-configured AI coding environments in the cloud in seconds.\n */\n\nimport { Command } from 'commander';\nimport { initPostHog } from './posthog.js';\n\n// Initialize Sentry for error tracking and logging\ninitPostHog();\n\nimport { launch } from './commands/launch.js';\nimport { status } from './commands/status.js';\nimport { list } from './commands/list.js';\nimport { stop } from './commands/stop.js';\nimport { destroy } from './commands/destroy.js';\nimport { clean } from './commands/clean.js';\nimport { exec } from './commands/exec.js';\nimport { run } from './commands/run.js';\nimport { execBatch } from './commands/exec-batch.js';\nimport { tasks, cancelTask } from './commands/tasks.js';\nimport { syncCommand } from './commands/sync.js';\nimport { attach } from './commands/attach.js';\nimport { interactiveHub, resolveTarget } from './interactive.js';\nimport { login, logout, whoami } from './commands/auth.js';\nimport { registerTokenCommand } from './commands/token.js';\nimport { registerAgentCommand } from './commands/agent.js';\nimport { registerSentryCommand } from './commands/sentry.js';\nimport { listConfigs, getConfig, setConfig, deleteConfig, showConfigPaths, setApiUrl, showLocalConfig } from './commands/config.js';\nimport { analytics } from './commands/analytics.js';\n\nconst program = new Command();\n\nprogram\n .name('spacecode')\n .description('SpaceCode - launch cloud dev environments with AI coding agents')\n .version('2.0.0')\n .enablePositionalOptions();\n\nprogram\n .command('launch')\n .description('Launch a new cloud session')\n .option('-R, --repo <repo>', 'Clone a GitHub repository into workspace (URL or owner/repo)')\n .option('-n, --new [name]', 'Start a new project (optionally specify name, or will prompt)')\n .option('--name <name>', 'Name this session for easy reconnection')\n .option('--destroy', 'Destroy the session on exit (default: session stays alive)')\n .option('-t, --idle-timeout <minutes>', 'Auto-shutdown timeout in minutes (default: 15)', '15')\n .option('--proxy-mode <mode>', 'API proxy mode: \"legacy\" (round-robin GLM) or \"pipeline\" (multi-model router)', 'pipeline')\n .option('--own-key', 'Bring your own API key (no proxy)')\n .option('--api-key <key>', 'Use a specific API key (bypasses proxy)')\n .action(async (options) => {\n await launchWithOptions(options);\n });\n\nprogram\n .command('attach <id-or-name>')\n .description('Reconnect to a running session (by ID or name)')\n .option('-d, --destroy', 'Destroy the session on disconnect (like launch)')\n .action(async (idOrName, options) => {\n await attach(idOrName, {\n destroy: options.destroy,\n });\n });\n\nprogram\n .command('status')\n .description('Show current session status')\n .action(async () => {\n await status();\n });\n\nprogram\n .command('list')\n .description('List all sessions')\n .option('-a, --all', 'Show all sessions including destroyed')\n .action(async (options) => {\n await list({ all: options.all });\n });\n\nprogram\n .command('stop <id-or-name>')\n .description('Stop a specific session (by ID or name)')\n .action(async (idOrName) => {\n await stop(idOrName);\n });\n\nprogram\n .command('destroy <id-or-name>')\n .description('Destroy a specific session (by ID or name)')\n .action(async (idOrName) => {\n try {\n await destroy(idOrName);\n } catch (error) {\n const chalk = (await import('chalk')).default;\n console.error(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\nprogram\n .command('clean')\n .description('Clean up stale task records')\n .option('-f, --force', 'Force mark stale tasks as completed')\n .action(async (options) => {\n await clean({ force: options.force });\n });\n\nprogram\n .command('exec')\n .description('Dispatch a headless task to a remote sandbox (fire-and-forget)')\n .requiredOption('-R, --repo <repo>', 'GitHub repository (owner/repo or URL)')\n .argument('<prompt>', 'Task prompt to execute')\n .option('-r, --region <region>', '(ignored) Cloud region')\n .option('-s, --size <size>', '(ignored) Sandbox size')\n .option('-m, --memory <mb>', '(ignored) Override memory in MB')\n .option('-b, --branch <branch>', 'Branch name for the task')\n .option('--no-commit', 'Skip auto-commit and PR creation')\n .option('-t, --idle-timeout <minutes>', 'Auto-shutdown timeout in minutes', '30')\n .option('--proxy-mode <mode>', 'API proxy mode: \"legacy\" or \"pipeline\"', 'pipeline')\n .action(async (prompt, options) => {\n const idleTimeout = parseInt(options.idleTimeout, 10);\n if (isNaN(idleTimeout) || idleTimeout < 0) {\n const chalk = (await import('chalk')).default;\n console.error(chalk.red('Error: --idle-timeout must be a non-negative integer'));\n process.exit(1);\n }\n if (options.region || options.size || options.memory) {\n const chalk = (await import('chalk')).default;\n console.warn(chalk.yellow('Warning: --region, --size, and --memory flags are ignored (compute is managed by the sandbox worker)'));\n }\n await exec({\n repo: options.repo,\n prompt,\n branch: options.branch,\n noCommit: !options.commit,\n idleTimeout,\n proxyMode: options.proxyMode,\n });\n });\n\nprogram\n .command('run')\n .description('Run a task on a remote sandbox with streaming output')\n .requiredOption('-R, --repo <repo>', 'GitHub repository (owner/repo or URL)')\n .argument('<prompt>', 'Task prompt to execute')\n .option('-r, --region <region>', '(ignored) Cloud region')\n .option('-s, --size <size>', '(ignored) Sandbox size')\n .option('-m, --memory <mb>', '(ignored) Override memory in MB')\n .option('-b, --branch <branch>', 'Branch name for the task')\n .option('--no-commit', 'Skip auto-commit and PR creation')\n .option('-t, --idle-timeout <minutes>', 'Auto-shutdown timeout in minutes', '30')\n .option('--proxy-mode <mode>', 'API proxy mode: \"legacy\" or \"pipeline\"', 'pipeline')\n .action(async (prompt, options) => {\n const idleTimeout = parseInt(options.idleTimeout, 10);\n if (isNaN(idleTimeout) || idleTimeout < 0) {\n const chalk = (await import('chalk')).default;\n console.error(chalk.red('Error: --idle-timeout must be a non-negative integer'));\n process.exit(1);\n }\n if (options.region || options.size || options.memory) {\n const chalk = (await import('chalk')).default;\n console.warn(chalk.yellow('Warning: --region, --size, and --memory flags are ignored (compute is managed by the sandbox worker)'));\n }\n await run({\n repo: options.repo,\n prompt,\n branch: options.branch,\n noCommit: !options.commit,\n idleTimeout,\n proxyMode: options.proxyMode,\n });\n });\n\nprogram\n .command('tasks')\n .description('List and manage remote tasks')\n .option('-a, --all', 'Show all tasks (including completed)')\n .option('--prune', 'Remove old completed tasks')\n .option('--clean-stale', 'Mark stale running tasks as completed (checks sandbox state)')\n .option('--force-clean', 'Mark as stale even if sandbox is still running (use with --clean-stale)')\n .option('--stale-age <hours>', 'Hours of inactivity to consider stale (default: 12)', parseInt)\n .option('--status <status>', 'Filter by status (pending, running, completed, failed, cancelled)')\n .option('--limit <n>', 'Show only the most recent N tasks', parseInt)\n .option('--repo <repo>', 'Filter by repository name')\n .action(async (options) => {\n await tasks({\n all: options.all,\n prune: options.prune,\n cleanStale: options.cleanStale,\n forceClean: options.forceClean,\n staleAge: options.staleAge as number | undefined,\n status: options.status as string | undefined,\n limit: options.limit as number | undefined,\n repo: options.repo as string | undefined,\n });\n });\n\nprogram\n .command('cancel <task-id>')\n .description('Cancel a running task and destroy its sandbox')\n .action(async (taskId) => {\n try {\n await cancelTask(taskId);\n } catch (error) {\n const chalk = (await import('chalk')).default;\n console.error(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\nprogram\n .command('exec-batch')\n .description('Dispatch multiple tasks in parallel to remote sandboxes')\n .argument('<json>', 'JSON array of task specs: [{repo, prompt, branch?}, ...]')\n .action(async (json) => {\n const chalk = (await import('chalk')).default;\n let specs;\n try {\n specs = JSON.parse(json);\n if (!Array.isArray(specs)) throw new Error('Input must be a JSON array');\n } catch (e) {\n console.error(chalk.red(`Error: Invalid JSON - ${e instanceof Error ? e.message : String(e)}`));\n process.exit(1);\n }\n try {\n const result = await execBatch(specs);\n console.log(chalk.bold(`\\nBatch ${result.groupId}: ${result.dispatched}/${result.total} dispatched`));\n for (const task of result.tasks) {\n const icon = task.status === 'dispatched' ? chalk.green('OK') : chalk.red('FAIL');\n console.log(` [${icon}] ${task.taskId} ${task.repo} ${task.branch}`);\n if (task.error) console.log(chalk.red(` ${task.error}`));\n }\n } catch (error) {\n console.error(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\nprogram\n .command('sync')\n .description('Sync project status to GitHub Projects and Issues')\n .argument('[repo]', 'Repository to sync (owner/repo, default: auto-detect)')\n .option('--full', 'Sync all data (project + issues)')\n .option('--issues-only', 'Sync issues only (TODOs, test failures)')\n .option('--project-only', 'Sync project board only')\n .option('--dry-run', 'Show what would change without modifying')\n .option('-v, --verbose', 'Show detailed output')\n .action(async (repo, options) => {\n await syncCommand(repo, options);\n });\n\nprogram\n .command('login')\n .description('Sign in with a SpaceCode API key')\n .option('--api-key <key>', 'SpaceCode API key (sk_...) from your dashboard')\n .action(async (opts: { apiKey?: string }) => {\n await login({ apiKey: opts.apiKey });\n });\n\nprogram\n .command('logout')\n .description('Clear authentication credentials')\n .action(async () => {\n await logout();\n });\n\nprogram\n .command('whoami')\n .description('Show current user information')\n .action(async () => {\n await whoami();\n });\n\nprogram\n .command('analytics')\n .description('Show API proxy pipeline analytics dashboard')\n .option('--secret <secret>', 'Debug secret for API proxy (or set SPACECODE_DEBUG_SECRET)')\n .option('--json', 'Output raw JSON instead of formatted dashboard')\n .option('--url <url>', 'API proxy URL (default: production)')\n .action(async (options) => {\n await analytics({\n secret: options.secret,\n json: options.json,\n url: options.url,\n });\n });\n\nregisterTokenCommand(program);\nregisterAgentCommand(program);\nregisterSentryCommand(program);\n\nprogram\n .command('sessions')\n .description('List recent agent sessions (alias for \"agent sessions\")')\n .option('-a, --all', 'Show all sessions')\n .option('--limit <n>', 'Number of sessions to show', '20')\n .option('--work-items', 'Show open work items and decisions instead of sessions')\n .option('--repo <repo>', 'Filter work items by repository (with --work-items)')\n .option('--status <status>', 'Filter work items by status: open, done, all (with --work-items)', 'open')\n .action(async (options) => {\n const { getTtyUrl, getAuthToken, listSessions, listWorkItems, parseWorkItemTimestamp } = await import('./commands/agent.js');\n const chalk = (await import('chalk')).default;\n\n if (options.workItems) {\n if (!['open', 'done', 'all'].includes(options.status)) {\n console.error(chalk.red(`Invalid --status \"${options.status}\": must be open, done, or all`));\n process.exit(1);\n }\n try {\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n const limit = options.all ? 200 : parseInt(options.limit, 10);\n const items = await listWorkItems(ttyUrl, token, {\n repo: options.repo,\n status: options.status,\n limit,\n });\n\n if (items.length === 0) {\n console.log(chalk.gray('No work items found.'));\n return;\n }\n\n console.log(chalk.bold(`\\n Work Items (${items.length}):\\n`));\n\n for (const item of items) {\n const age = formatSessionAge(parseWorkItemTimestamp(item.updated_at));\n const kindLabel = item.kind === 'decision' ? chalk.magenta('[decision]') : chalk.cyan('[work_item]');\n const statusColor = item.status === 'open' ? chalk.yellow : chalk.gray;\n console.log(` ${kindLabel} ${statusColor(item.status)} ${chalk.dim(item.repo_id)} ${chalk.dim(age)}`);\n console.log(` ${item.description}`);\n console.log(` ${chalk.dim(`session: ${item.session_name ?? item.session_id.slice(0, 8)}`)}`);\n }\n\n console.log('');\n } catch (error) {\n console.error(chalk.red(`Failed: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n return;\n }\n\n try {\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n const limit = options.all ? 100 : parseInt(options.limit, 10);\n const sessions = await listSessions(ttyUrl, token, limit);\n\n if (sessions.length === 0) {\n console.log(chalk.gray('No sessions found. Start one with: spacecode owner/repo'));\n return;\n }\n\n console.log(chalk.bold(`\\n Agent Sessions (${sessions.length}):\\n`));\n\n for (const s of sessions) {\n const age = formatSessionAge(s.updated_at);\n const statusColor = s.status === 'active' ? chalk.green : s.status === 'idle' ? chalk.yellow : chalk.gray;\n const label = s.name ? chalk.cyan(s.name) : chalk.gray(s.id.slice(0, 8));\n const repo = s.repo_id ? chalk.dim(` ${s.repo_id}`) : '';\n const msgCount = s.message_count ? chalk.dim(` ${s.message_count} msgs`) : '';\n console.log(` ${label} ${statusColor(s.status)}${repo}${msgCount} ${chalk.dim(age)}`);\n if (s.name) console.log(` ${chalk.dim(`ID: ${s.id}`)}`);\n if (s.last_prompt) {\n let preview = '';\n try {\n const parsed = JSON.parse(s.last_prompt);\n preview = typeof parsed === 'string' ? parsed : String(parsed);\n } catch {\n preview = String(s.last_prompt);\n }\n if (preview.length > 60) preview = preview.slice(0, 57) + '...';\n console.log(` ${chalk.dim(`> ${preview}`)}`);\n }\n }\n\n console.log('');\n console.log(chalk.dim(' Resume with: spacecode --session <id>'));\n console.log('');\n } catch (error) {\n console.error(chalk.red(`Failed: ${error instanceof Error ? error.message : String(error)}`));\n process.exit(1);\n }\n });\n\nfunction formatSessionAge(timestampMs: number): string {\n const diff = Date.now() - timestampMs;\n const mins = Math.floor(diff / 60_000);\n if (mins < 1) return 'just now';\n if (mins < 60) return `${mins}m ago`;\n const hours = Math.floor(mins / 60);\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n return `${days}d ago`;\n}\n\nprogram\n .command('config')\n .description('Manage local config and backend configs')\n .option('-l, --list', 'List all backend configs')\n .option('--local', 'Show local configuration')\n .option('--api-url <url>', 'Set backend API URL in local config')\n .option('-g, --get <key>', 'Get a specific backend config (claudeMd, settingsJson, settingsLocal, prd, progress)')\n .option('-s, --set <key>', 'Set a backend config from file (use: --set <key> < <file>)')\n .option('-d, --delete <key>', 'Delete a backend config')\n .option('-h, --help', 'Show config command help')\n .action(async (options) => {\n if (options.apiUrl) {\n await setApiUrl(options.apiUrl);\n return;\n }\n if (options.local) {\n await showLocalConfig();\n return;\n }\n if (options.help) {\n showConfigPaths();\n return;\n }\n if (options.list) {\n await listConfigs();\n } else if (options.get) {\n await getConfig(options.get);\n } else if (options.set) {\n await setConfig(options.set, '-'); // Read from stdin\n } else if (options.delete) {\n await deleteConfig(options.delete);\n } else {\n showConfigPaths();\n }\n });\n\n// Helper to parse launch options and call launch()\nexport async function launchWithOptions(options: Record<string, any>): Promise<void> {\n const idleTimeout = parseInt(options.idleTimeout ?? '15', 10);\n if (isNaN(idleTimeout) || idleTimeout < 0) {\n const chalk = (await import('chalk')).default;\n console.error(chalk.red('Error: --idle-timeout must be a non-negative integer'));\n process.exit(1);\n }\n await launch({\n repo: options.repo,\n newProject: options.new !== undefined,\n newProjectName: typeof options.new === 'string' ? options.new : undefined,\n destroy: options.destroy,\n idleTimeout,\n proxyMode: options.proxyMode,\n name: options.name,\n ownKey: options.ownKey,\n apiKey: options.apiKey,\n });\n}\n\n// Helper: read all of stdin with a 30-second timeout\nasync function readStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n let timerId: ReturnType<typeof setTimeout>;\n const timeout = new Promise<never>((_, reject) => {\n timerId = setTimeout(() => reject(new Error('stdin read timed out after 30 seconds')), 30_000);\n });\n const read = (async () => {\n for await (const chunk of process.stdin) {\n chunks.push(chunk);\n }\n })();\n try {\n await Promise.race([read, timeout]);\n } finally {\n clearTimeout(timerId!);\n }\n return Buffer.concat(chunks).toString().trim();\n}\n\n// Default: smart routing between launch and attach\nprogram\n .argument('[target]', 'Repo (owner/repo) to launch, or session name/ID to attach')\n .option('-p, --prompt [prompt]', 'Run headless (non-interactive)')\n .option('--output-format <format>', 'Output format for -p: text (default) or json', 'text')\n .option('-v, --verbose', 'Show detailed progress (phases, stderr)')\n .option('-R, --repo <repo>', 'Clone a GitHub repository into workspace')\n .option('-n, --new [name]', 'Start a new project')\n .option('--name <name>', 'Name this session for easy reconnection')\n .option('--destroy', 'Destroy the session on exit')\n .option('-b, --branch <branch>', 'Branch name for the task')\n .option('--no-commit', 'Skip auto-commit and PR creation')\n .option('-t, --idle-timeout <minutes>', 'Auto-shutdown timeout (default: 15)', '15')\n .option('--proxy-mode <mode>', 'API proxy mode', 'pipeline')\n .option('--own-key', 'Bring your own API key')\n .option('--api-key <key>', 'Use a specific API key')\n .option('--session <id>', 'Resume an existing agent session')\n .option('--cloud', 'With no target: start a cloud agent session instead of the local REPL')\n .option('--yolo', 'Local REPL: skip confirmation prompts (policy denies still apply)')\n .action(async (target, options) => {\n try {\n // No subcommand, target or mode flag \u2192 local agent REPL (packages/agent-ui)\n if (!target && !options.session && options.prompt === undefined && !options.cloud && !options.repo && !options.new) {\n const { startLocalRepl } = await import('./commands/repl.js');\n process.exit(await startLocalRepl({ yolo: options.yolo }));\n }\n\n // Session resume mode\n if (options.session) {\n let sessionId = options.session;\n // If it doesn't look like a UUID, resolve by name\n if (!/^[0-9a-f]{8}-/.test(sessionId)) {\n const { getTtyUrl, getAuthToken, lookupSessionByName } = await import('./commands/agent.js');\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n const resolved = await lookupSessionByName(ttyUrl, token, sessionId);\n if (!resolved) {\n process.stderr.write(`error: no session named \"${sessionId}\" found\\n`);\n process.exit(1);\n }\n sessionId = resolved;\n }\n const { startInteractiveSession } = await import('./agent/interactive.js');\n return await startInteractiveSession({ sessionId, name: options.name });\n }\n\n // Headless mode: -p flag\n if (options.prompt !== undefined) {\n const { headless } = await import('./commands/headless.js');\n const repo = options.repo ?? target;\n if (!repo) {\n process.stderr.write('error: --repo or target repo required with -p\\n');\n process.exit(1);\n }\n\n // Validate --output-format\n const outputFormat = options.outputFormat;\n if (outputFormat !== 'text' && outputFormat !== 'json') {\n process.stderr.write(`error: --output-format must be \"text\" or \"json\", got \"${outputFormat}\"\\n`);\n process.exit(1);\n }\n\n let prompt: string;\n if (typeof options.prompt === 'string') {\n prompt = options.prompt;\n } else if (!process.stdin.isTTY) {\n try {\n prompt = await readStdin();\n } catch (readErr) {\n process.stderr.write(`error: failed to read stdin: ${readErr instanceof Error ? readErr.message : String(readErr)}\\n`);\n process.exit(1);\n }\n } else {\n process.stderr.write('error: -p requires a prompt argument or stdin\\n');\n process.exit(1);\n }\n\n if (!prompt) {\n process.stderr.write('error: prompt is empty\\n');\n process.exit(1);\n }\n\n const idleTimeout = parseInt(options.idleTimeout, 10);\n if (isNaN(idleTimeout) || idleTimeout < 0) {\n process.stderr.write('error: --idle-timeout must be a non-negative integer\\n');\n process.exit(1);\n }\n\n return headless({\n repo,\n prompt,\n branch: options.branch,\n noCommit: !options.commit,\n idleTimeout,\n proxyMode: options.proxyMode as 'legacy' | 'pipeline',\n outputFormat,\n verbose: options.verbose ?? false,\n });\n }\n\n // No target \u2192 drop into REPL (with auto-resume for recent sessions)\n if (!target) {\n const { startInteractiveSession } = await import('./agent/interactive.js');\n const readline = await import('readline');\n const chalk = (await import('chalk')).default;\n\n // Auto-resume: check for recent idle session < 5 minutes old\n try {\n const { getTtyUrl, getAuthToken, listSessions } = await import('./commands/agent.js');\n const [ttyUrl, token] = await Promise.all([getTtyUrl(), getAuthToken()]);\n const sessions = await listSessions(ttyUrl, token, 1);\n if (sessions.length > 0) {\n const recent = sessions[0];\n const age = Date.now() - recent.updated_at;\n if (age < 5 * 60 * 1000 && recent.status === 'idle') {\n const rl = readline.createInterface({ input: process.stdin, output: process.stderr });\n const answer = await new Promise<string>((resolve) => {\n rl.question(\n ` Resume \"${chalk.bold(recent.name ?? recent.id.slice(0, 8))}\"? ${chalk.dim('(Y/n)')} `,\n resolve,\n );\n });\n rl.close();\n if (!answer || answer.toLowerCase() === 'y') {\n return await startInteractiveSession({\n sessionId: recent.id,\n name: recent.name ?? undefined,\n repo: recent.repo_id ?? undefined,\n });\n }\n }\n }\n } catch {\n // Ignore \u2014 proceed to new session\n }\n\n return await startInteractiveSession({ name: options.name });\n }\n // Target contains \"/\" or starts with \"http\" \u2192 treat as repo (interactive agent session)\n if (target.includes('/') || target.startsWith('http')) {\n const { startInteractiveSession } = await import('./agent/interactive.js');\n return await startInteractiveSession({ repo: target, name: options.name });\n }\n // Bare name \u2192 search sessions + repos, let user choose\n await resolveTarget(target, options);\n } catch (err) {\n const chalk = (await import('chalk')).default;\n console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));\n process.exit(1);\n }\n });\n\nprogram.parse();\n"],
|
|
5
|
+
"mappings": "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AAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;WACD;UAEH,IAAI,eACF,MACA;YACE;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;WACD;UAEH,IAAI,eACF,MACA;YACE;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;WACD;UAEH,IAAI,eACF,MACA;YACE;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;WACD;UAEH,IAAI,eACF,MACA;YACE;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;WACD;UAEH,IAAI,eACF,MACA;YACE;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;WACD;UAEH,IAAI,eACF,MACA;YACE;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;WACD;UAEH,IAAI,eACF,MACA;YACE;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;YAAU;YAAU;YAAU;YAAU;YAAU;YAC5D;YAAU;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M;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM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AM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAClE;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAAM;UAA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,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,oTAAqD;AAAA,MAC7D,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,s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AM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,GAAE,SAAU,CAAC,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,EAAC;AAAA;AAAA;;;ACAvqE;AAAA,8DAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACA,CAAC,KAAI,MAAS,GAAG;AAAA,MACjB,CAAC,QAAO,kCAAQ,GAAE,8CAAU,GAAE,0BAAM;AAAA,MACpC,CAAC,QAAO,0DAAY,GAAE,gBAAK,GAAE,QAAG;AAAA,MAChC,CAAC,QAAO,wCAAS,IAAG,wCAAS,GAAE,gEAAa,GAAE,gBAAK,GAAE,4BAAO,GAAE,kFAAgB,GAAE,gBAAK,GAAE,sEAAc,GAAE,8CAAU,GAAE,0BAAM;AAAA,MACzH,CAAC,QAAO,sEAAc,GAAE,sBAAM,CAAC;AAAA,MAC/B,CAAC,QAAO,wCAAS,GAAE,sBAAM,GAAE,sCAAQ;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,gBAAK,GAAE,sEAAc,GAAE,wCAAS,IAAG,UAAI,GAAE,UAAI,IAAG,UAAI,GAAE,wCAAS,GAAE,gBAAK,GAAE,8CAAU,EAAE;AAAA,MAClG,CAAC,QAAO,kCAAQ,GAAE,sBAAM,GAAE,UAAI,CAAC;AAAA,MAC/B,CAAC,QAAO,UAAI,IAAG,4CAAS;AAAA,MACxB,CAAC,QAAO,8FAAkB,GAAE,4EAAe,GAAE,gBAAK,GAAE,UAAI,GAAE,UAAI,IAAG,kCAAQ,GAAE,gBAAK,GAAE,sBAAM,CAAC;AAAA,MACzF,CAAC,QAAO,wCAAS,GAAE,8CAAU,CAAC;AAAA,MAC9B,CAAC,QAAO,oDAAW,EAAE;AAAA,MACrB,CAAC,QAAO,UAAI,GAAE,kCAAQ,GAAE,8CAAU,GAAE,UAAI,IAAG,UAAI,GAAE,UAAI,IAAG,UAAI,GAAE,8CAAU,GAAE,4BAAO,GAAE,UAAI,IAAG,0BAAM;AAAA,MAChG,CAAC,QAAO,gBAAK,GAAE,sBAAM,GAAE,UAAI,GAAE,UAAI,CAAC;AAAA,MAClC,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,wCAAS,GAAE,cAAI;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,UAAI,GAAE,UAAI,IAAG,8FAAkB,IAAG,wCAAS,GAAE,sBAAM,GAAE,gCAAO;AAAA,MACtF,CAAC,QAAO,4EAAe,GAAE,gBAAK,GAAE,QAAG;AAAA,MACnC,CAAC,QAAO,kCAAQ,GAAE,kCAAQ,EAAE;AAAA,MAC5B,CAAC,QAAO,UAAI,IAAG,sEAAc,GAAE,wCAAS,GAAE,gBAAK,GAAE,wCAAS,GAAE,sEAAc,IAAG,8CAAU,GAAE,gFAAe;AAAA,MACxG,CAAC,QAAO,UAAI,GAAE,UAAI,EAAE;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,4CAAS;AAAA,MACxB,CAAC,QAAO,UAAI,GAAE,gBAAK,GAAE,wCAAS,GAAE,sBAAM,GAAE,kCAAQ,GAAE,sBAAM,GAAE,UAAI,IAAG,UAAI,GAAE,UAAI,IAAG,8CAAU,GAAE,UAAI,CAAC;AAAA,MAC/F,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,UAAI,GAAE,4BAAO,CAAC;AAAA,MAClC,CAAC,QAAO,8CAAU,GAAE,4FAAiB;AAAA,MACrC,CAAC,QAAO,UAAI,IAAG,8CAAU,GAAE,8IAA0B,GAAE,gBAAK,GAAE,UAAI,IAAG,kDAAU;AAAA,MAC/E,CAAC,QAAO,4EAAe,GAAE,gBAAK,GAAE,QAAG;AAAA,MACnC,CAAC,QAAO,wCAAS,IAAG,UAAI,GAAE,0BAAM;AAAA,MAChC,CAAC,QAAO,UAAI,IAAG,wIAAyB,IAAG,UAAI,IAAG,UAAI,GAAE,8CAAU,GAAE,gBAAK,GAAE,UAAI,EAAE;AAAA,MACjF,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,oBAAK;AAAA,MAC/B,CAAC,QAAO,UAAI,GAAE,UAAI,IAAG,cAAI;AAAA,MACzB,CAAC,QAAO,UAAI,GAAE,UAAI,IAAG,UAAI,GAAE,8CAAU,GAAE,sBAAM,GAAE,8CAAU,GAAE,kCAAQ,GAAE,wCAAS,GAAE,sBAAM,GAAE,UAAI,IAAG,gCAAO;AAAA,MACtG,CAAC,QAAO,UAAI,GAAE,gBAAK,GAAE,wCAAS,GAAE,cAAI;AAAA,MACpC,CAAC,QAAO,gEAAa,GAAE,gBAAK,CAAC;AAAA,MAC7B,CAAC,QAAO,UAAI,IAAG,4EAAe,GAAE,wCAAS,GAAE,gBAAK,GAAE,UAAI,IAAG,UAAI,EAAE;AAAA,MAC/D,CAAC,QAAO,UAAI,IAAG,wCAAS,CAAC;AAAA,MACzB,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,UAAI,GAAE,UAAI,CAAC;AAAA,MAC/B,CAAC,QAAO,UAAI,IAAG,UAAI,IAAG,4BAAO,IAAG,wCAAS,GAAE,kCAAQ,EAAE;AAAA,MACrD,CAAC,QAAO,UAAI,IAAG,UAAI,CAAC;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,kDAAU;AAAA,MACzB,CAAC,QAAO,UAAI,GAAE,4BAAO,IAAG,kCAAQ,GAAE,gBAAK,GAAE,8CAAU,GAAE,UAAI,GAAE,8CAAU,GAAE,sBAAM,GAAE,wCAAS,GAAE,kDAAU;AAAA,MACpG,CAAC,QAAO,gBAAK,GAAE,gBAAK,GAAE,sBAAM,CAAC;AAAA,MAC7B,CAAC,QAAO,UAAI,GAAE,gBAAK,EAAE;AAAA,MACrB,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,gBAAK,GAAE,wCAAS,GAAE,sBAAM,GAAE,wCAAS,GAAE,gBAAK,GAAE,4BAAO,IAAG,gBAAK,GAAE,wCAAS,GAAE,sBAAM,GAAE,4BAAO,CAAC;AAAA,MAClH,CAAC,QAAO,UAAI,GAAE,UAAI,EAAE;AAAA,MACpB,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,8CAAU,CAAC;AAAA,MAC/B,CAAC,QAAO,kCAAQ,GAAE,8CAAU,GAAE,sBAAM,GAAE,wCAAS,GAAE,sBAAM,GAAE,UAAI,IAAG,UAAI,GAAE,UAAI,IAAG,wCAAS,GAAE,4BAAO,CAAC;AAAA,MAChG,CAAC,QAAO,wCAAS,GAAE,sBAAM,GAAE,sCAAQ;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,kCAAQ,EAAE;AAAA,MACxB,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,sBAAM,GAAE,4BAAO,GAAE,sEAAc,GAAE,gBAAK,GAAE,UAAI,GAAE,UAAI,IAAG,UAAI,IAAG,8DAAY;AAAA,MAClG,CAAC,QAAO,kFAAgB,GAAE,gBAAK,CAAC;AAAA,MAChC,CAAC,QAAO,wCAAS,GAAE,wCAAS,CAAC;AAAA,MAC7B,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,sBAAM,GAAE,4BAAO,IAAG,UAAI,IAAG,8CAAU,GAAE,sBAAM,GAAE,8CAAU,CAAC;AAAA,MAClF,CAAC,QAAO,sBAAM,GAAE,4BAAO,GAAE,kDAAU;AAAA,MACnC,CAAC,QAAO,kCAAQ,GAAE,gBAAK,GAAE,UAAI,CAAC;AAAA,MAC9B,CAAC,QAAO,UAAI,IAAG,8CAAU,IAAG,8CAAU,GAAE,sBAAM,GAAE,8CAAU,GAAE,sBAAM,IAAG,gCAAO;AAAA,MAC5E,CAAC,QAAO,UAAI,GAAE,gIAAuB;AAAA,MACrC,CAAC,QAAO,sBAAM,GAAE,0DAAY,CAAC;AAAA,MAC7B,CAAC,QAAO,4BAAO,IAAG,wCAAS,GAAE,sBAAM,GAAE,kCAAQ,GAAE,gBAAK,GAAE,wCAAS,GAAE,gEAAa,IAAG,gCAAO;AAAA,MACxF,CAAC,QAAO,UAAI,GAAE,sBAAM,GAAE,4BAAO,CAAC;AAAA,MAC9B,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,UAAI,EAAE;AAAA,MAC1B,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,wCAAS,GAAE,UAAI,GAAE,4BAAO,IAAG,kCAAQ,GAAE,8CAAU,GAAE,UAAI,IAAG,UAAI,GAAE,UAAI,EAAE;AAAA,MACxF,CAAC,QAAO,oDAAW,IAAG,UAAI,GAAE,QAAG;AAAA,MAC/B,CAAC,QAAO,wCAAS,GAAE,4BAAO,GAAE,gCAAO;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,gBAAK,IAAG,8CAAU,GAAE,kFAAgB,GAAE,gBAAK,GAAE,wCAAS,GAAE,gBAAK,GAAE,UAAI,IAAG,UAAI,EAAE;AAAA,MAC1F,CAAC,QAAO,UAAI,IAAG,cAAI;AAAA,MACnB,CAAC,QAAO,sBAAM,GAAE,sBAAM,GAAE,UAAI,CAAC;AAAA,MAC7B,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,UAAI,IAAG,gBAAK,IAAG,wCAAS,GAAE,4BAAO,EAAE;AAAA,MACxD,CAAC,QAAO,UAAI,IAAG,UAAI,CAAC;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,UAAI,CAAC;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,wCAAS,GAAE,4BAAO,IAAG,oBAAK;AAAA,MAC/C,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,oBAAK;AAAA,MAC1B,CAAC,QAAO,4BAAO,GAAE,UAAI,EAAE;AAAA,MACvB,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,sBAAM,GAAE,4BAAO,GAAE,4EAAe,GAAE,gBAAK,GAAE,wCAAS,GAAE,sBAAM,GAAE,8CAAU,GAAE,kCAAQ,GAAE,kDAAU;AAAA,MACtH,CAAC,QAAO,sEAAc,GAAE,gBAAK,GAAE,cAAI;AAAA,MACnC,CAAC,QAAO,4BAAO,GAAE,gBAAK,GAAE,wDAAW;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,wCAAS,GAAE,kFAAgB,IAAG,UAAI,GAAE,8CAAU,GAAE,sBAAM,GAAE,8CAAU,GAAE,gBAAK,GAAE,wCAAS,GAAE,sBAAM,GAAE,4CAAS;AAAA,MAC3H,CAAC,QAAO,gEAAa,EAAE;AAAA,MACvB,CAAC,QAAO,sBAAM,GAAE,wCAAS,GAAE,gCAAO;AAAA,MAClC,CAAC,QAAO,UAAI,GAAE,wCAAS,GAAE,sBAAM,GAAE,UAAI,GAAE,UAAI,GAAE,4BAAO,GAAE,wCAAS,GAAE,sBAAM,IAAG,kCAAQ,GAAE,4EAAe,GAAE,0BAAM;AAAA,MAC3G,CAAC,QAAO,0DAAY,GAAE,sBAAM,CAAC;AAAA,MAC7B,CAAC,QAAO,UAAI,IAAG,UAAI,CAAC;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,8CAAU,GAAE,sBAAM,GAAE,8CAAU,IAAG,UAAI,IAAG,QAAG;AAAA,MAC1D,CAAC,QAAO,kCAAQ,GAAE,4BAAO,GAAE,sBAAM,CAAC;AAAA,MAClC,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,UAAI,CAAC;AAAA,MACzB,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,8CAAU,GAAE,UAAI,GAAE,UAAI,IAAG,wCAAS,GAAE,4BAAO,GAAE,UAAI,IAAG,UAAI,GAAE,UAAI,EAAE;AAAA,MACpF,CAAC,QAAO,UAAI,IAAG,4BAAO,CAAC;AAAA,MACvB,CAAC,QAAO,UAAI,EAAE;AAAA,MACd,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,sEAAc,GAAE,8CAAU,GAAE,UAAI,IAAG,wCAAS,GAAE,sBAAM,GAAE,gHAAqB,GAAE,gBAAK,GAAE,kGAAkB;AAAA,MAC1H,CAAC,QAAO,oDAAW,GAAE,UAAI,GAAE,QAAG;AAAA,MAC9B,CAAC,QAAO,sBAAM,GAAE,0DAAY,GAAE,0BAAM;AAAA,MACpC,CAAC,QAAO,8IAA0B,GAAE,gBAAK,GAAE,kIAAwB,GAAE,gBAAK,GAAE,sBAAM,IAAG,4BAAO,GAAE,wCAAS,GAAE,sBAAM,GAAE,wCAAS,GAAE,QAAG;AAAA,MAC/H,CAAC,QAAO,gBAAK,GAAE,wCAAS,GAAE,sBAAM,GAAE,QAAG;AAAA,MACrC,CAAC,QAAO,kCAAQ,GAAE,sBAAM,GAAE,4CAAS;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,4BAAO,GAAE,wCAAS,GAAE,sBAAM,GAAE,wCAAS,GAAE,kFAAgB,GAAE,gEAAa,GAAE,sBAAM,GAAE,sHAAsB,GAAE,gBAAK,GAAE,kDAAU;AAAA,MACvI,CAAC,QAAO,wCAAS,GAAE,kCAAQ,GAAE,0BAAM;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,8CAAU,EAAE;AAAA,MAC1B,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,sBAAM,GAAE,wCAAS,GAAE,sBAAM,GAAE,8CAAU,GAAE,sBAAM,GAAE,UAAI,IAAG,8CAAU,GAAE,wCAAS,GAAE,UAAI,GAAE,gCAAO;AAAA,MACpH,CAAC,QAAO,4BAAO,IAAG,0BAAM;AAAA,MACxB,CAAC,QAAO,0DAAY,GAAE,sBAAM,GAAE,oBAAK;AAAA,MACnC,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,wCAAS,GAAE,4HAAwB,GAAE,8XAAmE;AAAA,MAC7H,CAAC,QAAO,gBAAK,GAAE,UAAI,EAAE;AAAA,MACrB,CAAC,QAAO,UAAI,GAAE,UAAI,EAAE;AAAA,MACpB,CAAC,QAAO,UAAI,GAAE,wCAAS,GAAE,gBAAK,GAAE,gbAA4E;AAAA,MAC5G,CAAC,QAAO,4BAAO,GAAE,UAAI,IAAG,gCAAO;AAAA,MAC/B,CAAC,QAAO,UAAI,GAAE,sBAAM,EAAE;AAAA,MACtB,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,wCAAS,IAAG,gBAAK,IAAG,QAAG;AAAA,MACjD,CAAC,QAAO,4EAAe,GAAE,wDAAW;AAAA,MACpC,CAAC,QAAO,kCAAQ,GAAE,4BAAO,EAAE;AAAA,MAC3B,CAAC,QAAO,4BAAO,IAAG,UAAI,EAAE;AAAA,MACxB,CAAC,QAAO,UAAI,GAAE,wCAAS,GAAE,gBAAK,GAAE,cAAI;AAAA,MACpC,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,cAAI;AAAA,MACzB,CAAC,QAAO,UAAI,IAAG,UAAI,IAAG,UAAI,CAAC;AAAA,MAC3B,CAAC,QAAO,UAAI,CAAC;AAAA,MACb,CAAC,QAAO,UAAI,IAAG,UAAI,CAAC;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,UAAI,CAAC;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,sCAAQ;AAAA,MACvB,CAAC,QAAO,UAAI,GAAE,oDAAW,GAAE,UAAI,CAAC;AAAA,MAChC,CAAC,QAAO,kCAAQ,GAAE,UAAI,IAAG,8XAAkE,CAAC;AAAA,MAC5F,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,UAAI,CAAC;AAAA,MAC/B,CAAC,QAAO,UAAI,IAAG,oBAAK;AAAA,MACpB,CAAC,QAAO,0DAAY,GAAE,4BAAO,GAAE,UAAI,GAAE,sEAAc,GAAE,sEAAc,GAAE,UAAI,GAAE,UAAI,GAAE,UAAI,GAAE,4IAAyB;AAAA,MAChH,CAAC,QAAO,UAAI,IAAG,UAAI,EAAE;AAAA,MACrB,CAAC,QAAO,UAAI,IAAG,UAAI,CAAC;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,UAAI,IAAG,oBAAM;AAAA,MAC5B,CAAC,QAAO,QAAG;AAAA,MACX,CAAC,QAAO,4CAAU;AAAA,MAClB,CAAC,QAAO,UAAI,IAAG,UAAI,IAAG,UAAI,IAAG,kDAAW;AAAA,MACxC,CAAC,QAAO,UAAI,IAAG,UAAI,EAAE;AAAA,MACrB,CAAC,QAAO,oDAAW,EAAE;AAAA,MACrB,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,8HAAyB,IAAG,UAAI,IAAG,UAAI,IAAG,kDAAW;AAAA,MAC/E,CAAC,QAAO,8CAAU,GAAE,gBAAK,GAAE,4CAAS;AAAA,MACpC,CAAC,QAAO,UAAI,GAAE,gBAAK,GAAE,wCAAS,GAAE,cAAI;AAAA,MACpC,CAAC,QAAO,sBAAM,IAAG,UAAI,EAAE;AAAA,MACvB,CAAC,QAAO,gEAAa,GAAE,gBAAK,GAAE,oBAAK;AAAA,MACnC,CAAC,QAAO,sBAAM,GAAE,sBAAM,GAAE,4BAAO,CAAC;AAAA,MAChC,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,4BAAO,IAAG,UAAI,EAAE;AAAA,MACpC,CAAC,QAAO,4BAAO,GAAE,wCAAS,GAAE,gCAAO;AAAA,MACnC,CAAC,QAAO,gEAAa,IAAG,UAAI,CAAC;AAAA,MAC7B,CAAC,QAAO,UAAI,IAAG,4BAAO,GAAE,gBAAK,EAAE;AAAA,MAC/B,CAAC,QAAO,UAAI,GAAE,gBAAK,EAAE;AAAA,MACrB,CAAC,QAAO,4BAAO,GAAE,sBAAM,GAAE,UAAI,CAAC;AAAA,MAC9B,CAAC,QAAO,UAAI,GAAE,UAAI,IAAG,kDAAU;AAAA,MAC/B,CAAC,QAAO,8CAAU,GAAE,UAAI,IAAG,QAAG;AAAA,MAC9B,CAAC,QAAO,UAAI,GAAE,4BAAO,EAAE;AAAA,MACvB,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,sBAAM,CAAC;AAAA,MACjC,CAAC,QAAO,oDAAW,GAAE,kCAAQ,GAAE,kDAAU;AAAA,MACzC,CAAC,QAAO,8CAAU,EAAE;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,kCAAQ,GAAE,cAAI;AAAA,MAC7B,CAAC,QAAO,UAAI,GAAE,wCAAS,GAAE,sBAAM,GAAE,sCAAQ;AAAA,MACzC,CAAC,QAAO,UAAI,GAAE,gBAAK,GAAE,UAAI,EAAE;AAAA,MAC3B,CAAC,QAAO,UAAI,GAAE,UAAI,EAAE;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,kCAAQ,GAAE,gBAAK,GAAE,oDAAW,GAAE,UAAI,GAAE,8bAA4E;AAAA,MAC/H,CAAC,QAAO,wCAAS,GAAE,sBAAM,GAAE,sCAAQ;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,gBAAK,GAAE,UAAI,EAAE;AAAA,MAC3B,CAAC,QAAO,UAAI,IAAG,wCAAS,GAAE,olBAAqG;AAAA,MAC/H,CAAC,QAAO,0DAAY,GAAE,kCAAQ,GAAE,QAAG;AAAA,MACnC,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,QAAG;AAAA,MACxB,CAAC,QAAO,UAAI,GAAE,UAAI,IAAG,UAAI,GAAE,sjBAAgG;AAAA,MAC3H,CAAC,QAAO,UAAI,IAAG,sCAAQ;AAAA,MACvB,CAAC,QAAO,UAAI,GAAE,sBAAM,GAAE,8CAAU,CAAC;AAAA,MACjC,CAAC,QAAO,UAAI,GAAE,UAAI,GAAE,UAAI,IAAG,4HAAuB,GAAE,saAAwE;AAAA,MAC5H,CAAC,QAAO,UAAI,GAAE,wCAAS,GAAE,sBAAM,CAAC;AAAA,MAChC,CAAC,QAAO,8CAAU,GAAE,UAAI,IAAG,cAAI;AAAA,MAC/B,CAAC,QAAO,4BAAO,GAAE,4BAAO,IAAG,kXAAgE,GAAE,4BAAO,GAAE,gIAAuB;AAAA,MAC7H,CAAC,QAAO,UAAI,IAAG,wCAAS,CAAC;AAAA,MACzB,CAAC,QAAO,4BAAO,GAAE,wCAAS,GAAE,gBAAK,CAAC;AAAA,MAClC,CAAC,QAAO,8CAAU,GAAE,gBAAK,GAAE,UAAI,IAAG,sjBAAgG;AAAA,MAClI,CAAC,QAAO,UAAI,GAAE,UAAI,EAAE;AAAA,MACpB,CAAC,QAAO,UAAI,IAAG,8DAAY;AAAA,MAC3B,CAAC,QAAO,sBAAM,GAAE,wCAAS,GAAE,sBAAM,GAAE,8kBAAoG;AAAA,MACvI,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,gCAAO;AAAA,MAC5B,CAAC,QAAO,UAAI,IAAG,gCAAO;AAAA,MACtB,CAAC,QAAO,UAAI,GAAE,sEAAc,IAAG,sjBAAgG;AAAA,MAC/H,CAAC,QAAO,UAAI,GAAE,UAAI,EAAE;AAAA,MACpB,CAAC,QAAO,UAAI,GAAE,4BAAO,EAAE;AAAA,MACvB,CAAC,QAAO,gBAAK,GAAE,UAAI,IAAG,0JAA4B,GAAE,wYAAmE;AAAA,MACvH,CAAC,QAAO,oDAAW,GAAE,sBAAM,GAAE,0BAAM;AAAA,MACnC,CAAC,QAAO,UAAI,IAAG,UAAI,GAAE,0BAAM;AAAA,MAC3B,CAAC,QAAO,UAAI,IAAG,gZAAqE,GAAE,UAAI,GAAE,0KAA8B;AAAA,MAC1H,CAAC,QAAO,8CAAU,GAAE,8CAAU,GAAE,QAAG;AAAA,MACnC,CAAC,QAAO,4BAAO,GAAE,wCAAS,GAAE,gBAAK,CAAC;AAAA,MAClC,CAAC,QAAO,0DAAY,GAAE,UAAI,GAAE,gmBAAuG;AAAA,MACnI,CAAC,QAAO,UAAI,GAAE,sBAAM,GAAE,wCAAS,GAAE,oBAAK;AAAA,MACtC,CAAC,QAAO,0DAAY,GAAE,gBAAK,GAAE,0BAAM;AAAA,MACnC,CAAC,QAAO,UAAI,IAAG,sjBAAgG;AAAA,MAC/G,CAAC,QAAO,UAAI,IAAG,kDAAU;AAAA,MACzB,CAAC,QAAO,wCAAS,GAAE,wCAAS,GAAE,oBAAK;AAAA,MACnC,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,sBAAM,GAAE,UAAI,GAAE,kFAAgB,GAAE,gdAA+E;AAAA,MACzI,CAAC,QAAO,gBAAK,GAAE,gBAAK,GAAE,kDAAU;AAAA,MAChC,CAAC,QAAO,8CAAU,GAAE,UAAI,EAAE;AAAA,MAC1B,CAAC,QAAO,UAAI,GAAE,UAAI,IAAG,sjBAAgG;AAAA,MACrH,CAAC,QAAO,UAAI,GAAE,4BAAO,EAAE;AAAA,MACvB,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,0BAAM;AAAA,MAChC,CAAC,QAAO,UAAI,GAAE,wCAAS,GAAE,sBAAM,GAAE,UAAI,GAAE,wgBAAyF,GAAE,cAAI;AAAA,MACtI,CAAC,QAAO,UAAI,IAAG,UAAI,EAAE;AAAA,MACrB,CAAC,QAAO,UAAI,IAAG,4CAAS;AAAA,MACxB,CAAC,QAAO,UAAI,GAAE,sBAAM,GAAE,8CAAU,GAAE,sHAAsB,GAAE,wbAA2E;AAAA,MACrI,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,gBAAK,CAAC;AAAA,MAChC,CAAC,QAAO,UAAI,EAAE;AAAA,MACd,CAAC,QAAO,gEAAa,GAAE,sBAAM,GAAE,oPAA2C,GAAE,4UAAyD;AAAA,MACrI,CAAC,QAAO,wCAAS,GAAE,wCAAS,GAAE,oBAAK;AAAA,MACnC,CAAC,QAAO,kCAAQ,IAAG,cAAI;AAAA,MACvB,CAAC,QAAO,UAAI,IAAG,sjBAAgG;AAAA,MAC/G,CAAC,QAAO,8CAAU,GAAE,sBAAM,GAAE,4CAAS;AAAA,MACrC,CAAC,QAAO,UAAI,GAAE,sBAAM,GAAE,wCAAS,GAAE,QAAG;AAAA,MACpC,CAAC,QAAO,UAAI,GAAE,8CAAU,GAAE,UAAI,GAAE,kkBAAkG;AAAA,MAClI,CAAC,QAAO,wIAAyB,CAAC;AAAA,MAClC,CAAC,QAAO,UAAI,GAAE,gBAAK,GAAE,sBAAM,EAAE;AAAA,MAC7B,CAAC,QAAO,4BAAO,GAAE,wCAAS,GAAE,sBAAM,GAAE,kkBAAkG;AAAA,MACtI,CAAC,QAAO,kCAAQ,GAAE,gBAAK,GAAE,gCAAO;AAAA,MAChC,CAAC,QAAO,gEAAa,GAAE,8CAAU,CAAC;AAAA,MAClC,CAAC,QAAO,8CAAU,GAAE,wCAAS,IAAG,wkBAAmG;AAAA,MACnI,CAAC,QAAO,0DAAY,GAAE,sBAAM,GAAE,oBAAK;AAAA,MACnC,CAAC,QAAO,sBAAM,GAAE,4BAAO,GAAE,4BAAO,CAAC;AAAA,MACjC,CAAC,QAAO,8FAAkB,GAAE,4BAAO,GAAE,kkBAAkG;AAAA,MACvI,CAAC,QAAO,4BAAO,GAAE,sBAAM,CAAC;AAAA,MACxB,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sWAA8D,GAAE,gBAAK,GAAE,kJAA0B;AAAA,MACzG,CAAC,QAAO,8CAAU,GAAE,sKAA8B,GAAE,gBAAK,IAAG,kFAAgB,GAAE,kCAAQ,GAAE,wDAAW;AAAA,MACnG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,IACxG;AAAA;AAAA;;;AChRA;AAAA,8DAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACA,CAAC,KAAI,MAAS,GAAG;AAAA,MACjB,CAAC,QAAO,0XAAiE;AAAA,MACzE,CAAC,QAAO,8WAAiE,GAAE,0KAA8B;AAAA,MACzG,CAAC,QAAO,oNAAsC,GAAE,gIAAuB;AAAA,MACvE,CAAC,QAAO,8FAAkB,GAAE,UAAI,GAAE,UAAI,GAAE,4BAAO,IAAG,UAAI,EAAE;AAAA,MACxD,CAAC,QAAO,kCAAQ,IAAG,UAAI,GAAE,UAAI,IAAG,UAAI,GAAE,UAAI,EAAE;AAAA,MAC5C,CAAC,QAAO,UAAI,IAAG,gCAAO;AAAA,MACtB,CAAC,QAAO,QAAG;AAAA,MACX,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,s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",
|
|
6
|
+
"names": ["chalk", "signals", "loadAuth", "loadConfig", "status", "path", "tasks", "stat", "unlink", "resolve", "BackendApiClient", "DEFAULT_API_URL", "import_promises", "import_path", "resolve", "config_exports", "runOutput", "init_config", "init_types", "status", "path", "options", "init_client", "init_types", "init_dist", "init_client", "init_types", "exports", "module", "exports", "module", "list", "exports", "module", "exports", "module", "PerMessageDeflate", "data", "exports", "module", "exports", "module", "PerMessageDeflate", "Receiver", "exports", "module", "PerMessageDeflate", "Sender", "list", "exports", "module", "exports", "module", "extension", "exports", "module", "URL", "PerMessageDeflate", "Receiver", "Sender", "WebSocket", "key", "exports", "module", "WebSocket", "createWebSocketStream", "err", "exports", "module", "protocol", "exports", "module", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "WebSocketServer", "WebSocket", "resolve", "delay", "runOutput", "chalk", "resolve", "getGitHubToken", "createSandboxClient", "connectTerminal", "import_chalk", "status", "chalk", "import_chalk", "chalk", "createSandboxClient", "import_chalk", "chalk", "createSandboxClient", "SandboxApiError", "import_chalk", "chalk", "pruned", "import_chalk", "prompt", "chalk", "import_chalk", "init_validation", "createSandboxClient", "init_config", "chalk", "addTask", "import_chalk", "init_exec", "init_validation", "run", "chalk", "addTask", "import_chalk", "init_validation", "prompt", "createSandboxClient", "tasks", "getGitHubToken", "addTasks", "resolve", "status", "chalk", "formatAge", "allTasks", "cancelTask", "createSandboxClient", "import_chalk", "content", "getGitHubToken", "import_promises", "import_path", "__dirname", "_fileURLToPath", "resolve", "status", "join", "path", "import_promises", "import_fs", "chalk", "getGitHubToken", "import_chalk", "chalk", "createSandboxClient", "SandboxApiError", "connectTerminal", "import_chalk", "chalk", "text", "import_chalk", "chalk", "lastLine", "import_chalk", "chalk", "import_chalk", "MAX_RECONNECT", "BASE_DELAY_MS", "init_client", "resolve", "delay", "stat", "import_fs", "import_path", "fs", "path", "resolve", "chalk", "import_chalk", "apiKey", "chalk", "import_chalk", "init_auth", "formatAge", "prompt", "chalk", "program", "statusColor", "import_chalk", "import_node_child_process", "init_agent", "init_auth", "init_client", "chalk", "status", "formatAge", "toolCount", "fs", "execFileSync", "readline", "path", "import_chalk", "init_client", "init_agent", "chalk", "resolve", "shortRepo", "destroy", "attach", "launchWithOptions", "startInteractiveSession", "import_chalk", "readline", "init_interactive", "program", "chalk", "import_chalk", "init_auth", "readline", "setState", "import_node_async_hooks", "exports", "module", "colors", "process", "colors", "isPlainObject", "status", "exports", "module", "cliWidth", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "require_ansi_regex", "exports", "module", "require_strip_ansi", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "path", "exports", "module", "exports", "module", "exports", "module", "wrapAnsi", "exec", "code", "wrapAnsi", "cliWidth", "readline", "init_utils", "init_utils", "exports", "module", "MuteStream", "init_signals", "process", "init_signals", "list", "init_esm", "init_utils", "init_esm", "prompt", "resolve", "prompt", "MuteStream", "resolve", "signal", "readline", "import_node_async_hooks", "import_yoctocolors_cjs", "colors", "init_esm", "import_yoctocolors_cjs", "esm_default", "init_esm", "colors", "status", "exports", "module", "exports", "exports", "exports", "exports", "arr", "searchValue", "exports", "exports", "exports", "exports", "detect", "exports", "resolve", "fs", "exports", "module", "Buffer", "exports", "exports", "module", "exports", "module", "Buffer", "iconv", "exports", "Buffer", "iconv", "exports", "Buffer", "iconv", "exports", "Buffer", "iconv", "i", "exports", "Buffer", "iconv", "exports", "module", "exports", "module", "exports", "Buffer", "iconv", "i", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "Buffer", "require_lib", "exports", "module", "Buffer", "streamModule", "import_child_process", "import_fs", "init_esm", "os", "path", "iconv", "esm_default", "init_esm", "status", "error", "esm_default", "init_esm", "status", "esm_default", "init_esm", "status", "value", "esm_default", "init_esm", "status", "normalizeChoices", "import_yoctocolors_cjs", "esm_default", "init_esm", "status", "colors", "normalizeChoices", "import_yoctocolors_cjs", "esm_default", "init_esm", "status", "colors", "esm_default", "init_esm", "status", "isSelectable", "normalizeChoices", "import_yoctocolors_cjs", "esm_default", "init_esm", "colors", "status", "error", "isSelectable", "normalizeChoices", "import_yoctocolors_cjs", "esm_default", "init_esm", "colors", "status", "item", "esm_default", "init_esm", "program", "chalk", "status", "import_chalk", "init_auth", "chalk", "path", "import_promises", "import_chalk", "init_config", "init_auth", "chalk", "import_chalk", "resolve", "import_node_child_process", "path", "addTask", "init_validation", "chalk", "init_exec", "init_interactive", "init_auth", "init_agent", "init_config", "prompt", "run", "cancelTask", "getTtyUrl", "getAuthToken", "listSessions", "listWorkItems", "parseWorkItemTimestamp", "statusColor", "startLocalRepl", "lookupSessionByName", "startInteractiveSession", "headless", "readline", "resolve"]
|
|
7
|
+
}
|