{"id":"f6e84deb-2c73-4e80-b496-09931c71bafd","entityType":"agent","slug":"clawhub-forrestneo-finance-news-warmap","name":"finance-news-warmap","canonicalUrl":"https://www.xpersona.co/agent/clawhub-forrestneo-finance-news-warmap","canonicalPath":"/agent/clawhub-forrestneo-finance-news-warmap","generatedAt":"2026-10-10T11:55:53.790Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T08:57:45.838Z","emptyReason":null},"description":"金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。** Skill: finance-news-warmap Owner: forrestneo Summary: 金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。** Tags: latest:0.1","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17fd8v89pwxzett0ka88gsq5h8bm7ca:finance-news-warmap","sourceUrl":"https://clawhub.ai/forrestneo/finance-news-warmap","homepage":"https://clawhub.ai/forrestneo/skills/finance-news-warmap","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/forrestneo/finance-news-warmap","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/forrestneo/skills/finance-news-warmap","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:57:45.838Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:57:45.838Z","emptyReason":null},"stars":null,"forks":null,"downloads":1542,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:57:45.838Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T08:57:45.838Z","lastCrawledAt":"2026-10-10T08:57:45.838Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T08:57:45.838Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-08-15T04:38:36.532Z","changelog":"finance-news-warmap v1.1.0 - Initial skill release: build Palantir-style offline \"finance/industry news war maps\" from real, recent news, geolocated by city. - Workflow includes: taxonomy-driven real news search → deduplication → auto-fill per sub-sector → export to an offline, self-contained HTML (all libraries/maps inline). - Features a data-driven suggestions panel summarizing trends and actionable advice for executives, tailored to user-defined roles. - Strict rule: No fabricated or placeholder data—only real, web-searched news is used; if live WebSearch is unavailable, the workflow stops. - All output (HTML/maps/fonts) is single-file, offline-capable, with no CDN or external requests.","fileCount":18,"zipByteSize":1068024}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17fd8v89pwxzett0ka88gsq5h8bm7ca:finance-news-warmap","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T11:55:53.788Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-forrestneo-finance-news-warmap/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T08:57:45.838Z","emptyReason":null},"readme":"Skill: finance-news-warmap\n\nOwner: forrestneo\n\nSummary: 金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。**\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-08-15T04:38:36.532Z | auto\n\nfinance-news-warmap v1.1.0\n\n- Initial skill release: build Palantir-style offline \"finance/industry news war maps\" from real, recent news, geolocated by city.\n- Workflow includes: taxonomy-driven real news search → deduplication → auto-fill per sub-sector → export to an offline, self-contained HTML (all libraries/maps inline).\n- Features a data-driven suggestions panel summarizing trends and actionable advice for executives, tailored to user-defined roles.\n- Strict rule: No fabricated or placeholder data—only real, web-searched news is used; if live WebSearch is unavailable, the workflow stops.\n- All output (HTML/maps/fonts) is single-file, offline-capable, with no CDN or external requests.\n\nArchive index:\n\nArchive v0.1.0: 18 files, 1068024 bytes\n\nFiles: .gitignore (41b), README.md (6454b), references (0b), references/assets (0b), references/assets/china.json (61248b), references/assets/echarts.min.js (1029203b), references/assets/world.json (1010239b), references/assets/xlsx.full.min.js (881727b), references/build.py (24184b), references/config.example.toml (155b), references/db.py (2413b), references/news_sample.json (13355b), references/pipeline.py (5793b), references/template.html (31306b), requirements.txt (152b), skill-card.md (2637b), SKILL.md (19621b), _meta.json (138b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: finance-news-warmap\ndescription: 金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。**\nagent_created: true\nversion: 1.1.0\n---\n\n# 金融创新作战地图（Finance News War Map）\n\n一个「**真实数据驱动 + 单一离线 HTML**」的新闻情报地图工作流。它把 WebSearch 搜来的真实国内新闻按城市经纬度落点，用 ECharts 地理散点呈现，并带一个**数据驱动的右侧「建议区」**（自动总结趋势 + 给银行/保险/金融科技高管建议）。\n\n核心立场（来自用户强约束）：**只用真实搜索新闻，绝不编造；每个细分领域搜满目标条数；长字段写足；产出必须离线可双击打开。**\n\n---\n\n## 〇、启动前需向用户确认的问题（Question Flow）\n\n运行本 skill 前，按顺序确认以下问题；标注「默认不询问」的按默认值直接执行，标注「必问」的必须拿到答案再跑。\n\n| # | 问题 | 默认 | 处置 |\n|---|---|---|---|\n| 1 | 关注哪些领域 / 分类法？ | 银行(10)+金融科技(5)+保险(5)=20 项 | 默认不询问；用户要增删才改 |\n| 2 | 每个子方向填满几条？ | 5 条 | 默认不询问 |\n| 3 | 时间窗口？ | **最近一周（freshness=`d7`）** | **默认不询问**；除非用户要近 1 月/指定日期 |\n| 4 | 地理范围？ | 中国国内为主 | 默认不询问 |\n| 5 | 新闻来源 / 语言口径？ | 国内真实新闻，官媒+主流财经媒体 | 默认不询问 |\n| 6 | **你是什么角色 / 视角？** | ——（无安全默认） | **必问**：如\"浙江省分行行长\"\"零售条线总监\"\"合规官\"。答案经 `build --role \"角色名\"` 固化进建议区，**不在浏览器里做输入框/切换器** |\n| 7 | 视觉风格？ | Palantir 深色 + 三栏 | 默认不询问 |\n| 8 | 长字段强制要求？ | event/why/innovation/learn 各 ≥100 字 | 默认不询问 |\n| 9 | 输出位置 / 文件名？ | `金融创新全球作战地图.html` + `news.xlsx` | 默认不询问 |\n| 10 | 要不要定时自动刷新？ | 手动 build | 默认不询问 |\n\n> 角色（#6）是**唯一必须主动问**的一项；其余一律默认，除非用户另行指定。角色决定建议区\"高管建议\"那一段的视角，命中种子场景用种子文案，否则按关键词从 `DIRECTION_INSIGHTS` 动态生成并固化。\n\n---\n\n## 〇·五、环境前置检查（调用时强制第一步 · Gate）\n\n本 skill 的整个数据流依赖**真实联网搜索**——没有可工作的 `WebSearch`，后续 search→compile→fill 全部失去意义，且会直接触碰\"只用真实新闻、绝不编造\"的硬底线。因此在做**任何**搜索 / 编译 / 构建之前，**必须先确认环境具备联网搜索能力**；确认通过才进入 Step 1，不通过则立即中止。\n\n**检查步骤（agent 在调用 skill 时执行）：**\n1. 先按 Question Flow 向用户问清必要项（其中 #6 角色必问；其余默认）。\n2. **探测**：执行一次轻量 `WebSearch`（如查询 `金融科技 创新 新闻 2026` 或任何与任务相关的真实关键词，freshness 用 `d7`）。\n3. **判定**：\n   - ✅ 成功返回 ≥1 条真实结果（有标题 / 链接 / 摘要）→ 环境可用，继续 Step 1。\n   - ❌ 工具不可用 / 调用被拒 / 沙箱网络被阻断 / 返回空或报错 / 只返回\"无法访问\"之类占位 → **立即中止**。\n4. **中止处置**：明确告知用户——\"本环境当前不支持联网搜索（WebSearch 不可用 / 网络受限）。按硬规则『只用真实新闻、绝不编造』，无法执行后续流程。\"然后停止。**不要**尝试用训练记忆编造新闻，也**不要**改用离线占位数据蒙混。可建议用户：\n   - 开启联网 / 搜索工具后重试；或\n   - 改为仅基于用户已提供的本地新闻文件（`news.xlsx` 或传入的 JSON）做 `build`（此时需用户**明确认可**\"只用本地既有数据、不再补新搜\"，且仍遵守长字段≥100字 / 去重等规则）。\n\n**注意**：`WebSearch` 是 agent 侧的服务器工具；脚本内的 `pipeline.py search` 只打印查询供人工 / agent 去搜，本身不联网。所以\"是否支持联网搜索\"只能在 agent 调用 skill 时由上述探测判定，不能靠脚本断言。\n\n---\n\n## 〇·六、数据安全与对外传输声明（透明性 · 回应供应链/外传审查）\n\n本 skill 是**纯本地生成器**，不存在隐藏或自动化的对外网络调用。所有对外传输都需用户显式触发并自带凭据：\n\n1. **联网搜索（WebSearch）由调用方 agent 执行，不是 skill 代码联网**：`build.py` / `pipeline.py` / `template.html` 在运行时**不发起任何 WebSearch 或互联网请求**——`pipeline.py search` 只把查询打印出来供人工/agent 去搜。\n2. **离线单文件是强制硬指标（无 CDN / 无外部字体）**：`template.html` 不再引用任何外部 `https://` 的 `<script>` 或 `<link>`。ECharts 库、world/china GeoJSON、**xlsx 导出库**全部随技能分发于 `assets/` 并在构建时**内联**进 HTML；字体仅用系统字体栈回退（Microsoft YaHei / PingFang SC 等）。生成的 HTML 双击离线可用，不经过任何第三方服务器。\n3. **远程同步（Supabase pull/push）完全可选 + 显式 + 用户凭据**：\n   - 仅当用户主动运行 `build.py pull` / `push` / `build --source supabase` 时才会发生；\n   - 需要用户在本地 `config.toml` 显式填入**自己的** Supabase url/key/table，缺文件即报错中止，绝不静默连接；\n   - 默认 `build`（无 `--source`）只读写本地 `news.xlsx`，**完全不触碰任何远程**；\n   - 不存在自动上传、环境变量 harvesting、文件系统枚举用于外传等行为。\n4. **不编造 / 不做离线占位**：WebSearch 不可用且用户未提供本地数据时，按规则立即中止，绝不用记忆编造或离线占位数据蒙混（见「〇·五」）。\n\n> 说明：本 skill 的「只用真实新闻、绝不编造」「调用即探测 WebSearch」等是**对调用 agent 的流程约束（指令）**，由 agent 在调用时落实，而非由 skill 代码在运行时做断言式强制。agent 应如实向用户说明当前环境是否具备联网搜索能力。\n\n---\n\n## 一、何时用这个 skill\n\n- 用户想做 Palantir 风格的「新闻作战地图 / 情报地图 / 创新动态地图」：散点落点 + 可筛选 + 可悬停 + 中国/世界切换。\n- 用户想做「**搜新闻 → 编译 JSON → 去重并入 → 自动补满每个细分领域 N 条**」的流水线（杜绝虚拟/占位数据）。\n- 用户想要一个「**建议区 / 洞察面板**」，从实时新闻数据自动总结趋势与高管可执行建议（不是写死的模板话术）。\n- 用户要「**双击可打开、可邮件分享**」的单一离线 HTML（库与地图数据全部内联，不依赖 CDN/网络）。\n\n---\n\n## 二、硬规则（默认开启，除非用户明确授权跳过）\n\n1. **联网搜索能力前置 Gate（最先执行）**：调用本 skill 时**第一步**先探测当前环境是否支持真实联网搜索（`WebSearch` 可用且能返回真实结果）。**不支持则立即中止整个流程**，绝不退化为\"用记忆编造新闻\"或\"离线占位数据蒙混\"。详见下一节「环境前置检查」。\n2. **只用真实新闻**：全部来自 WebSearch（默认 freshness=`d7` 最近一周），绝不编造、绝不虚构事件/链接。\n3. **每细分领域搜满目标条数**（默认 TARGET=5）：不足时只报缺口，**不编造占位补齐**。\n4. **时间窗口默认最近一周（freshness=`d7`）**：直接默认，**不询问用户**；如需其他窗口（近 1 月/指定日期）才单独确认。\n5. **长字段写足**：每条新闻的 `event / why / innovation / learn` 四个字段各 ≥ 100 字。注意去重保留首次出现，所以**必须在 fill 前补全**，否则合并后无法覆盖。\n6. **离线单文件**：产出 HTML 必须把 echarts 库与 world/china GeoJSON 全部内联，双击即可打开、可邮件分享。\n7. **去重不重复**：已存在新闻按 norm_key 去重，合并时 existing 在前，绝不重复存储。\n\n---\n\n## 三、架构（单一离线 HTML + 占位符模板）\n\n```\ntemplate.html  ──(占位符替换)──►  金融创新全球作战地图.html   ← 双击离线打开\nbuild.py      读 news.xlsx（可编辑数据源）注入 __NEWS__ / __SUGGESTIONS__\npipeline.py   分类法真理源 + 搜索/状态/补满 流水线\nassets/       echarts.min.js + world.json + china.json（34 省）← 构建时内联\n```\n\n`template.html` 用 6 个占位符，由 `build.py` 替换：\n\n| 占位符 | 内容 |\n|---|---|\n| `__ECHARTS_LIB__` | echarts.min.js 全文 |\n| `__WORLD_JSON__` | world.json（ECharts 世界地图 GeoJSON） |\n| `__CHINA_JSON__` | china.json（34 省级边界 GeoJSON） |\n| `__NEWS__` | 新闻数组 JSON（13 字段） |\n| `__SAMPLE__` | `true`/`false`（是否示例水印） |\n| `__SUGGESTIONS__` | 建议区结构化 JSON（build 时计算） |\n\n`references/` 目录里是可直接复用的脚手架（**自包含，无需联网下载额外文件**）：\n\n```\nreferences/\n├── template.html          # Palantir 风三栏地图模板（含占位符，离线单文件目标）\n├── build.py               # 生成器：init/build/merge/replace + 建议区计算 + 去重\n├── pipeline.py            # 20 子领域 taxonomy 驱动的 search/status/fill/rebuild 补满流水线\n├── news_sample.json       # 内置示例数据源（11 条，init/build 缺 xlsx 时回退用）\n├── db.py                  # Supabase 读写（可选，pull/push 用；凭据走本地 config.toml）\n├── config.example.toml    # Supabase 配置样例\n└── assets/               # 离线单文件必需，已随技能分发\n    ├── echarts.min.js     # ~1MB，内联进 HTML\n    ├── world.json         # ~1MB，世界地图边界\n    └── china.json         # 中国 34 省边界\n```\n\n### 三·5、环境准备（依赖与目录约定）\n\n1. **装依赖**：`pip install -r requirements.txt`（核心只要 `openpyxl`；`supabase` 仅 pull/push 时需要）。\n2. **数据/产物落在「当前工作目录（CWD），不污染技能安装目录**——这是本 skill 的可分发约定：\n   - 只读资产（`template.html` / `assets/` / `news_sample.json`）随技能分发，安装后不应改动；\n   - `build.py` 把 `news.xlsx`（数据源）与 `金融创新全球作战地图.html`（产物）写到你**运行命令时所在的目录**；\n   - 所以在你自己的项目目录里运行 `build.py` / `pipeline.py` 即可，不要在技能安装目录内直接写。\n3. **快速开始**（在你自己的项目目录执行）：\n   ```bash\n   python build.py init          # 用内置示例生成 news.xlsx（可编辑数据源）\n   python build.py build         # 读 news.xlsx -> 生成离线单文件 HTML 到当前目录\n   # 或跳过 init，直接 build（缺 news.xlsx 时自动回退示例）\n   python build.py build --role \"浙江省分行行长\"   # 指定建议区视角后固化进 HTML\n   ```\n4. **联网能力前置（Gate）**：本 skill 的「新闻」来自真实 WebSearch，**必须**先按「〇·五、环境前置检查」探测 WebSearch 可用；不可用时立即停止，绝不编造/占位。\n\n---\n\n## 四、数据 schema（13 列，news.xlsx 与 JSON 通用）\n\n`time / category / direction / company / city / lng / lat / title / link / event / why / innovation / learn`\n\n- JSON 用 `coord:[经度,纬度]`；xlsx 用 `lng/lat` 两列（`build.news_to_xlsx` / `xlsx_to_news` 自动互转）。\n- `event/why/innovation/learn` 各 ≥ 100 字——这是用户的硬指标。\n- `category` 取值示例：`银行 / 保险 / 金融科技`（对应配色 cyan / violet / amber）。\n\n---\n\n## 五、工作流（端到端）\n\n0. **环境前置检查（Gate，必须最先执行）**：按「〇·五、环境前置检查」做 WebSearch 探测。不可用 → 立即中止并告知用户，**不进入后续任何步骤**。可用 → 继续。\n1. **定义分类法 TAXONOMY**（唯一真理源）：`(大类, 方向, 搜索查询)` 三元组列表——图例、筛选、补满标准都以它为准。示例 20 项：银行(存款理财/公募私募/银保/信托/个人信用贷款/信用卡分期/汽融/个人房贷/个人房地产抵押贷款/小微企业主贷款) 10 项 + 金融科技(产品创新/模式创新/技术创新/需求走向/权益升级) 5 项 + 保险(寿险/财险/健康险/养老险/普惠保险) 5 项。\n2. **搜索**：对每个子方向 `WebSearch`（默认 freshness `d7` 最近一周，不询问），收集真实国内新闻候选。\n3. **编译 JSON**：每条含 13 字段；`coord=[经度,纬度]`；`link` 用真实 URL；四长字段写足 ≥100 字。\n4. **去重并入**：`pipeline.py fill <json>`（或 `build.py merge <json>`），existing 在前 → 不重复 → 重写 news.xlsx + 重建 HTML。\n5. **查缺口**：`pipeline.py status` 列出每类 当前 vs 目标，打印缺口方向。\n6. **补满**：对缺口方向再搜、再 fill，循环直到每类达标。\n7. **确定视角/角色（问用户，不写死）**：在 build 前问用户「你是什么角色/视角？」（如\"浙江省分行行长\"\"零售条线总监\"\"合规官\"）。该角色通过 `build.py build --role \"角色名\"` 固化进 HTML 的建议区——**不在浏览器里做角色输入框或切换器**。\n8. **重建**：每次改完 news.xlsx 后 `build.py build [--role ...]` 重生成单文件 HTML。\n9. **校验**：占位符无残留、JSON 合法、每子方向计数、分类值在 {银行,保险,金融科技} 内。\n\n---\n\n## 六、关键代码模式（直接复用）\n\n### 去重主键（保证已存在不重复存储）\n```python\nimport re\ndef norm_key(n):\n    link = (n.get(\"link\") or \"\").strip().lower()\n    if link:\n        return re.sub(r\"[?#].*$\", \"\", link)        # 链接去 ?# 参数后小写\n    return re.sub(r\"\\s+\", \"\", (n.get(\"title\") or \"\"))  # 否则标题去空格兜底\n\ndef dedup(news, keep_first=True):\n    seen, out = set(), []\n    for n in news:\n        k = norm_key(n)\n        if not k or k in seen:\n            continue\n        seen.add(k); out.append(n)\n    return out\n```\n\n### 数据驱动「建议区」（build 时实时算，非写死）\n`build_suggestions(news, role=None)` 返回结构（`role` 由 `--role` 在 build 时传入，默认 `金融高管视角`）：\n- `total / span[起,止] / catCounts`（大类分布条）\n- `trends`：取出现频次 ≥2 的子方向 Top6，每条带 `trend`(趋势判断)+`advice`(高管动作)+`evidence`(2 条真实标题)\n- `execAdvice`：**单一角色块**（不再是浏览器里的多受众切换）。命中 `ROLE_ADVICE` 种子（金融高管视角/银行高管/保险高管/金融科技负责人/分行行长等）用种子文案；否则按 `ROLE_KEYWORDS` 关键词匹配最相关业务方向，从 `DIRECTION_INSIGHTS` 动态生成 4 条建议并固化。**角色不在浏览器交互选择**——只在 build 时由 `--role` 决定，默认 `金融高管视角`。\n\n趋势/建议文案放两张常量表，由数据**驱动选取**，避免模板话术：\n- `DIRECTION_INSIGHTS[方向]` = `{trend, advice}`（每个子方向一条实战洞察）\n- `ROLE_ADVICE[角色]` = `{color, icon, points:[...]}`（种子场景，可增删改；任意未命中角色由关键词动态生成，绝不写死受众集）\n\n> 文案要「真判断、敢拆穿伪创新」，不要包装式空话。例如银保写「从趸交理财转向期交保障+养老，银行渠道从通道变客户经营伙伴」；AI 写「从 PoC 到生产，先建数据底座与 AI 中台，重定义可计算的非结构化资产」。\n\n### 占位符替换 + 断言无残留\n```python\nout = (tpl\n  .replace(\"__ECHARTS_LIB__\", echarts).replace(\"__WORLD_JSON__\", world.strip())\n  .replace(\"__CHINA_JSON__\", china.strip()).replace(\"__NEWS__\", news_js)\n  .replace(\"__SAMPLE__\", \"true\" if is_sample else \"false\")\n  .replace(\"__SUGGESTIONS__\", sugg_js))\nfor tok in (\"__ECHARTS_LIB__\",\"__WORLD_JSON__\",\"__CHINA_JSON__\",\"__NEWS__\",\"__SAMPLE__\",\"__SUGGESTIONS__\"):\n    assert tok not in out, f\"占位符未替换: {tok}\"\n```\n\n### 光点按时间「挨个闪烁」（非齐闪）\n`animationDelay: function(idx){ return order.indexOf(idx)*160; }`，其中 `order` 是按 `time` 排序后的原始下标序列。\n\n---\n\n## 七、性能与体验要点\n\n- **大体积 GeoJSON 解析后置**：首屏先画界面框架，`window.onload` 后再 `initMap()`，避免阻塞首屏。\n- **扫描/动画从简**：去掉开机动画、扫描线；用 `effectScatter` 涟漪即可，保持清爽（用户明确嫌扫描特效丑、嫌慢）。\n- **字体**：仅用系统字体栈回退（Microsoft YaHei / PingFang SC / Hiragino Sans GB 等），**不再引用任何外部字体 CDN**，离线打开即生效，体感无明显塌方即可。\n\n---\n\n## 八、地图合规\n\n- 用官方/标准 `china.json`（含 34 省级行政区边界），**不要自绘、不要缺省省份**。\n- 中国为默认视图，`center:[105,36]`、`zoom:1.5`；世界视图 `center:[68,22]`、`zoom:1.25`。\n\n---\n\n## 九、常见坑（已踩过）\n\n- **Windows schannel 证书**：git/网络若报 `CRYPT_E_NO_REVOCATION_CHECK`，curl 加 `--ssl-no-revoke`、git `http.sslVerify false`（仅本仓库）。\n- **WebSearch 无 URL（标 Untitled）**：部分长文/聚合页无有效链接 → 编译 JSON 时改用同领域其他带 URL 结果，避免 norm_key 碰撞或无效链接。\n- **短字段**：dedup 保首次，短字段必须在 fill 前补全（可用 `expand.py` 批量把 <100 字字段补到 ≥100 字，基于该条的 company/city/title/direction 写具体不泛化的内容）。\n- **分类错配**：深圳建行「经营贷」应归「个人房地产抵押贷款」而非「个人房贷」；分类必须严格对齐 TAXONOMY，否则计数错位、建议区错配。\n- **NEWS[0].time 空**：`stats()` 里 `NEWS[0]?NEWS[0].time.slice(0,10):...` 要兜底，避免首屏报错。\n\n---\n\n## 十、交付物清单\n\n- `金融创新全球作战地图.html` —— 离线单文件（库+地图内联），双击即开、可邮件分享。\n- `finance-map/news.xlsx` —— 可编辑数据源，用户可直接改表、再 `build` 重建。\n- `references/` —— 可复用脚手架：`template.html` / `build.py` / `pipeline.py`。\n\n> 注：`build.py` 依赖 `assets/echarts.min.js`、`assets/world.json`、`assets/china.json`、`assets/xlsx.full.min.js` 四个文件，均已随技能分发、置于脚本同级的 `assets/` 目录，构建时全部内联进 HTML。**不依赖任何运行时 CDN**——离线双击即可打开。xlsx 导出库用于浏览器端\"导出当前数据为 .xlsx\"功能。\n\nFile v0.1.0:README.md\n\n# finance-news-warmap\n\n> 金融 / 行业「新闻作战地图」构建 Skill —— Palantir 风格、可离线双击打开的单文件 HTML 生成器。\n\n把真实搜索到的新闻按城市经纬度落点，生成一张 Palantir 风格的作战地图：ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动的「建议区」。配套 `search → compile → fill` 流水线，自动把每个细分领域补满 N 条**真实**新闻并去重，**绝不编造数据**。\n\n---\n\n## 它能做什么\n\n- **真实新闻地图**：每个细分方向搜满目标条数（默认 5 条）的真实国内新闻，按城市经纬度在地图上落点。\n- **离线单文件 HTML**：echarts 库 + 世界/中国 GeoJSON + 新闻数据 + 建议区 JSON **全部内联**，双击即开、可邮件分享。\n- **数据驱动「建议区」**：基于当前新闻实时统计趋势，并给指定角色/视角的高管生成可执行建议（默认「金融高管视角」，任意角色可经 `--role` 固化）。\n- **去重幂等**：已存在新闻按 `norm_key` 去重，合并时 existing 在前，绝不重复存储。\n\n---\n\n## 触发场景\n\n- 做新闻情报地图 / 作战地图 / 创新动态地图\n- 搜新闻自动补满、去重并入\n- 给高管出「趋势 + 建议」面板\n- 要离线自包含 HTML 交付物\n\n---\n\n## 工作流（端到端）\n\n```\n〇 环境前置检查（Gate）：先探测 WebSearch 是否可用，不支持则立即中止，不编造\n① 定义分类法 TAXONOMY（唯一真理源）\n② 搜索真实新闻（默认最近一周 d7，不询问）\n③ 编译成 JSON（13 字段，event/why/innovation/learn 各 ≥100 字）\n④ 去重并入（pipeline.py fill）\n⑤ 查缺口 → 补满（pipeline.py status / fill 循环）\n⑥ 重建单文件 HTML（build.py build）\n⑦ 校验交付（占位符无残留、JSON 合法、每子方向计数）\n```\n\n### 调用前需确认的问题（Question Flow）\n\n| # | 问题 | 默认 | 处置 |\n|---|---|---|---|\n| 1 | 关注领域 / 分类法 | 银行10 + 金融科技5 + 保险5 = 20 子方向 | 不询问 |\n| 2 | 每方向填满几条 | 5 | 不询问 |\n| 3 | 时间窗口 | 最近一周（d7） | **不询问** |\n| 4 | 地理范围 | 中国为主 | 不询问 |\n| 5 | 新闻来源 / 语言 | 国内官媒 + 主流财经 | 不询问 |\n| 6 | **你是什么角色 / 视角？** | 无 | **必问**（经 `--role` 固化，不在浏览器输入） |\n| 7 | 视觉风格 | Palantir 深色三栏 | 不询问 |\n| 8 | 长字段 ≥100 字 | 是 | 不询问 |\n| 9 | 输出位置 / 文件名 | 默认名 + news.xlsx | 不询问 |\n| 10 | 定时自动刷新 | 手动 | 不询问 |\n\n> 真正要用户拍板的只有 **#6 角色**；其余用默认值直接跑。\n\n---\n\n## 环境准备（Setup）\n\n```bash\n# 1. 安装依赖（核心只需 openpyxl；supabase 仅 pull/push 时需要）\npip install -r requirements.txt\n\n# 2. 在你自己的项目目录里运行（数据与产物写到「当前工作目录」，不污染技能安装目录）\ncd your-project-dir\npython references/build.py init     # 用内置示例生成 news.xlsx（可编辑数据源）\npython references/build.py build    # 读 news.xlsx -> 生成离线单文件 HTML 到当前目录\n\n# 跳过 init 直接 build 也行（缺 news.xlsx 时自动回退内置示例）\npython references/build.py build --role \"浙江省分行行长\"   # 指定建议区视角并固化进 HTML\n```\n\n> 只读资产（`template.html` / `assets/` / `news_sample.json`）已随仓库分发，无需联网下载。\n\n---\n\n## 文件结构\n\n```\nfinance-news-warmap/\n├── SKILL.md              # 方法论总结（何时用 / 硬规则 / 架构 / 工作流 / 关键代码模式 / 坑）\n├── README.md\n├── requirements.txt      # 依赖：openpyxl（核心）/ supabase（可选）\n├── .gitignore\n└── references/\n    ├── template.html     # Palantir 风三栏地图模板（占位符、中国/世界切换、右侧建议区）\n    ├── build.py          # 生成器（init/build/merge/replace + 建议区计算 + 去重）\n    ├── pipeline.py       # 20 子领域 taxonomy 驱动的 search/status/fill/rebuild 补满流水线\n    ├── news_sample.json  # 内置示例数据源（11 条，init/build 缺 xlsx 时回退用）\n    ├── db.py             # Supabase 读写（可选，pull/push 用；凭据走本地 config.toml）\n    ├── config.example.toml\n    └── assets/           # 离线单文件必需，已随仓库分发\n        ├── echarts.min.js\n        ├── world.json\n        └── china.json\n```\n\n---\n\n## 硬规则（默认开启，除非用户明确授权跳过）\n\n1. **环境前置 Gate**：调用时第一步探测 `WebSearch` 是否可用；不支持则立即中止整个流程，绝不退化为编造或离线占位。\n2. **只用真实新闻**：全部来自 WebSearch（默认 freshness=`d7`），绝不编造、绝不虚构事件/链接。\n3. **每细分领域搜满目标条数**（默认 TARGET=5）：不足只报缺口，不编造占位补齐。\n4. **长字段写足**：`event / why / innovation / learn` 各 ≥ 100 字（必须在 fill 前补全，去重保首次）。\n5. **离线单文件**：echarts 库与 world/china GeoJSON 全内联。\n6. **去重不重复**：已存在新闻按 `norm_key` 去重，合并时 existing 在前。\n\n---\n\n## 关键代码模式\n\n- `norm_key(n)`：链接去 `?#.*$` 转小写优先，否则标题去空格 —— 稳定去重主键。\n- `dedup(news, keep_first=True)`：按 `norm_key` 保留首次出现。\n- `build_suggestions(news, role)`：build 时实时计算概览 / 趋势 Top6 / 单一角色建议块。\n- 占位符替换 + `assert` 无残留：保证离线单文件完整。\n- 光点按时间错落闪烁（非齐闪）；大体积 GeoJSON 解析后置，提速首屏。\n\n---\n\n## 在 WorkBuddy 中使用\n\n1. 将本仓库内容放入 `~/.workbuddy/skills/finance-news-warmap/`（或项目级 `.workbuddy/skills/`）。\n2. 调用该 Skill，按 Question Flow 回答必要项（角色必问）。\n3. Skill 自动执行 search → compile → fill → build，产出 `金融创新全球作战地图.html` + `news.xlsx`。\n\n---\n\n## 联系方式\n\n- **邮箱**：zhenshida@foxmail.com\n- **交流群（QQ）**：1037432340\n\n---\n\n> ⚠️ 本 Skill 强制「真实新闻、不编造、去重不重复、离线单文件」四条底线，请勿用于生成虚假情报或误导式可视化。\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn79n39ph0bt3y6khdjwn7bxt18bm0dq\",\n  \"slug\": \"finance-news-warmap\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1786768716532\n}\n\nFile v0.1.0:references/assets/china.json\n\n{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"id\":\"710000\",\"properties\":{\"id\":\"710000\",\"cp\":[121.509062,24.044332],\"name\":\"台湾\",\"childNum\":6},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@°Ü¯Û\"],[\"@@ƛĴÕƊÉɼģºðʀ\\\\ƎsÆNŌÔĚänÜƤɊĂǀĆĴĤǊŨxĚĮǂƺòƌâÔ®ĮXŦţƸZûÐƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃǋƏďíåɛGɉ¿@ăƑ¥ĘWǬÏĶŁâ\"],[\"@@\\\\p|WoYG¿¥Ij@¢\"],[\"@@¡@V^RqBbAnTXeRz¤L«³I\"],[\"@@ÆEEkWqë @\"],[\"@@fced\"],[\"@@¯ɜÄèaì¯ØǓIġĽ\"],[\"@@çûĖëĄhòř \"]],\"encodeOffsets\":[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]],[[126259,26318]],[[127671,26683]]]}},{\"type\":\"Feature\",\"id\":\"130000\",\"properties\":{\"id\":\"130000\",\"cp\":[114.502461,38.045474],\"name\":\"河北\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@o~Z]ªrºc_ħ²G¼s`jÎŸnüsÂłNX_M`Ç½ÓnUKĜēs¤­©yrý§uģcJe\"],[\"@@U`Ts¿mÂ\"],[\"@@oºƋÄdeVDJj£J|ÅdzÂFt~KŨ¸IÆv|¢r}èonb}`RÎÄn°ÒdÞ²^®lnÐèĄlðÓ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcŋ`ZÔ¶êqvFÆN®ĆTH®¦O¾IbÐã´BĐɢŴÆíȦpĐÞXR·nndO¤OÀĈƒ­QgµFo|gȒęSWb©osx|hYhgŃfmÖĩnºTÌSp¢dYĤ¶UĈjlǐpäìë|³kÛfw²Xjz~ÂqbTÑěŨ@|oMzv¢ZrÃVw¬ŧĖ¸f°ÐTªqs{S¯r æÝlNd®²Ğ ǆiGĘJ¼lr}~K¨ŸƐÌWöÆzR¤lêmĞLÎ@¡|q]SvKÑcwpÏÏĿćènĪWlĄkT}J¤~ÈTdpddʾĬBVtEÀ¢ôPĎƗè@~kü\\\\rÊĔÖæW_§¼F´©òDòjYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkvGpuARhÞÆǶgĘTǼƹS£¨¡ù³ŘÍ]¿ÂyôEP xX¶¹ÜO¡gÚ¡IwÃé¦ÅBÏ|Ç°N«úmH¯âDùyŜŲIÄuĐ¨D¸dɂFOhđ©OiÃ`ww^ÌkÑH«ƇǤŗĺtFu{Z}Ö@U´ʚLg®¯Oı°Ãw ^VbÉsmAê]]w§RRl£ȭµu¯b{ÍDěïÿȧuT£ġěŗƃĝQ¨fVƋƅn­a@³@ďyÃ½IĹÊKŭfċŰóxV@tƯJ]eR¾fe|rHA|h~Ėƍl§ÏlTíb ØoÅbbx³^zÃĶ¶Sj®AyÂhðk`«PËµEFÛ¬Y¨Ļrõqi¼Wi°§Ð±´°^[À|ĠO@ÆxO\\\\ta\\\\tĕtû{ġȧXýĪÓjùÎRb^ÎfK[ÝděYfíÙTyuUSyŌŏů@Oi½éŅ­aVcř§ax¹XŻácWU£ôãºQ¨÷Ñws¥qEHÙ|šYQoŕÇyáĂ£MÃ°oťÊP¡mWO¡v{ôvîēÜISpÌhp¨ jdeŔQÖjX³àĈ[n`Yp@UcM`RKhEbpŞlNut®EtqnsÁgAiúoHqCXhfgu~ÏWP½¢G^}¯ÅīGCÑ^ãziMáļMTÃƘrMc|O_¯Ŏ´|morDkO\\\\mĆJfl@cĢ¬¢aĦtRıÒ¾ùƀ^juųœK­UFyƝīÛ÷ąV×qƥV¿aȉd³BqPBmaËđŻģmÅ®V¹d^KKonYg¯XhqaLdu¥Ípǅ¡KąÅkĝęěhq}HyÃ]¹ǧ£Í÷¿qáµ§g¤o^á¾ZE¤i`ĳ{nOl»WÝĔįhgF[¿¡ßkOüš_ūiǱàUtėGyl}ÓM}jpEC~¡FtoQiHkk{Ãmï\"]],\"encodeOffsets\":[[[119712,40641]],[[121616,39981]],[[116462,37237]]]}},{\"type\":\"Feature\",\"id\":\"140000\",\"properties\":{\"id\":\"140000\",\"cp\":[111.849248,36.857014],\"name\":\"山西\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ÞĩÒSra}ÁyWix±Üe´lèßÓǏokćiµVZģ¡coTSË¹ĪmnÕńehZg{gtwªpXaĚThȑp{¶Eh®RćƑP¿£Pmc¸mQÝWďȥoÅîɡųAďä³aÏJ½¥PG­ąSM­EÅruµéYÓŌ_dĒCo­Èµ]¯_²ÕjāK~©ÅØ^ÔkïçămÏk]­±cÝ¯ÑÃmQÍ~_apm~ç¡qu{JÅŧ·Ls}EyÁÆcI{¤IiCfUcƌÃp§]ě«vD@¡SÀµMÅwuYY¡DbÑc¡h×]nkoQdaMç~eDÛtT©±@¥ù@É¡ZcW|WqOJmĩl«ħşvOÓ«IqăV¥D[mI~Ó¢cehiÍ]Ɠ~ĥqX·eƷn±}v[ěďŕ]_œ`¹§ÕōIo©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs×¥ŅxÊdÒ{ºvĴÎêÌɊ²¶ü¨|ÞƸµȲLLúÉƎ¤ϊęĔV`_bªS^|dzY|dz¥pZbÆ£¶ÒK}tĦÔņƠPYznÍvX¶Ěn ĠÔzý¦ª÷ÑĸÙUȌ¸dòÜJð´ìúNM¬XZ´¤ŊǸ_tldI{¦ƀðĠȤ¥NehXnYGR° ƬDj¬¸|CĞKqºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBÊTŸʂōĖĴŞȀÆÿȄlŤĒötÎ½î¼ĨXh|ªM¤Ðz\"],\"encodeOffsets\":[[116874,41716]]}},{\"type\":\"Feature\",\"id\":\"150000\",\"properties\":{\"id\":\"150000\",\"cp\":[111.670801,41.818311],\"name\":\"内蒙古\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@¯PqFB|S³C|kñHdiÄ¥sŉÅPóÑÑE^ÅPpy_YtShQ·aHwsOnŉÃs©iqjUSiº]ïW«gW¡ARë¥_sgÁnUI«m]jvV¼euhwqAaW_µj»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáGOUÛOB±XkÅ¹£k|e]olkVÍ¼ÕqtaÏõjgÁ£§U^RLËnX°ÇBz^~wfvypV ¯ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyxþp]ÉvïèvƀnÂĴÖ@V~Ĉv¦wĖtējyÄDXÄxGQuv_i¦aBçw˛wD©{tāmQ{EJ§KPśƘƿ¥@sCTÉ}ɃwƇy±gÑ}T[÷kÐç¦«SÒ¥¸ëBX½HáÅµÀğtSÝÂa[ƣ°¯¦Pï¡]£ġÒk®G²èQ°óMq}EóƐÇ\\\\@áügQÍu¥FTÕ¿Jû]|mvāÎYua^WoÀa·­ząÒot×¶CLƗi¯¤mƎHǊ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶¿A[¡{d×uQAMxVvMOmăl«ct[wº_ÇÊjbÂ£ĦS_éQZ_lwgOiýe`YYLq§IÁǳ£ÙË[ÕªuƏ³ÍTs·bÁĽäė[b[ŗfãcn¥îC¿÷µ[ŏÀQ­ōĉm¿Á^£mJVmL[{Ï_£F¥Ö{ŹA}×Wu©ÅaųĳƳhB{·TQqÙIķËZđ©Yc|M¡LeVUóK_QWk_ĥ¿ãZ»X\\\\ĴuUèlG®ěłTĠğDŃOrÍdÆÍz]±ŭ©Å]ÅÐ}UË¥©TċïxgckfWgi\\\\ÏĒ¥HkµEë{»ÏetcG±ahUiñiWsɁ·cCÕk]wȑ|ća}wVaĚá G°ùnM¬¯{ÈÐÆA¥ÄêJxÙ¢hP¢ÛºµwWOóFÁz^ÀŗÎú´§¢T¤ǻƺSėǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇqZñiñC³ª»E`¨åXēÕqÉû[l}ç@čƘóO¿¡FUsAʽīccocÇS}£IS~ălkĩXçmĈŀÐoÐdxÒuL^T{r@¢ÍĝKén£kQyÅõËXŷƏL§~}kq»IHėǅjĝ»ÑÞoå°qTt|r©ÏS¯·eŨĕx«È[eM¿yupN~¹ÏyN£{©għWí»Í¾səšǅ_ÃĀɗ±ąĳĉʍŌŷSÉA±åǥɋ@ë£R©ąP©}ĹªƏj¹erLDĝ·{i«ƫC£µsKCGS|úþXgp{ÁX¿ć{ƱȏñZáĔyoÁhA}ŅĆfdŉ_¹Y°ėǩÑ¡H¯¶oMQqð¡Ë|Ñ`ƭŁX½·óÛxğįÅcQs«tȋǅFù^it«Č¯[hAi©á¥ÇĚ×l|¹y¯YȵƓñǙµïċĻ|Düȭ¶¡oŽäÕG\\\\ÄT¿Òõr¯LguÏYęRƩɷŌO\\\\İÐ¢æ^Ŋ ĲȶȆbÜGĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľ]ėl¥ËĭûÁėéV©±ćn©­ȇÍq¯½YÃÔŉÉNÑÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱàưN¢ƔÊuľýľώȪƺɂļxZĈ}ÌŉŪĺœĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ç¼ȳÐUfdIxÿ\\\\G zâɏÙOº·pqy£@qþ@Ǟ˽IBäƣzsÂZÁàĻdñ°ŕzéØűzșCìDȐĴĺf®Àľưø@ɜÖÞKĊŇƄ§͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘǊ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKǳͲOðÏȆƘ¼CϚǚ࢚˼ФÔ¤ƌĞ̪Qʤ´¼mȠJˀƲÀɠmǐnǔĎȆÞǠN~ʢĜ¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢĖćYÀŎüôQÐÂŎŞǆŞêƖoˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^ªƂ`ªt¾äƚêĦĀ¼ÐĔǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDÄ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°ǆdÀÉ_ĸdîàŎjÊêTĞªŌŜWÈ|tqĢUB~´°ÎFCU¼pĀēƄN¦¾O¶łKĊOjĚj´ĜYp{¦SĚÍ\\\\T×ªV÷Ší¨ÅDK°ßtŇĔK¨ǵÂcḷ̌ĚǣȄĽFlġUĵŇȣFʉɁMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFxúQEr´Wrh¤Ɛ \\\\talĈDJÜ|[Pll̚¸ƎGú´P¬W¦^¦H]prRn|or¾wLVnÇIujkmon£cX^Bh`¥V¦U¤¸}xRj[^xN[~ªxQ[`ªHÆÂExx^wN¶Ê|¨ìMrdYpoRzNyÀDs~bcfÌ`L¾n|¾T°c¨È¢ar¤`[|òDŞĔöxElÖdHÀI`Ď\\\\Àì~ÆR¼tf¦^¢ķ¶eÐÚMptgjɡČÅyġLûŇV®ÄÈƀĎ°P|ªVVªj¬ĚÒêp¬E|ŬÂc|ÀtƐK f{ĘFĒƌXƲąo½Ę\\\\¥o}Ûu£ç­kX{uĩ«āíÓUŅßŢqŤ¥lyň[oi{¦LńðFȪȖĒL¿Ìf£K£ʺoqNwğc`uetOj×°KJ±qÆġmĚŗos¬qehqsuH{¸kH¡ÊRǪÇƌbȆ¢´äÜ¢NìÉʖ¦â©Ġu¦öČ^â£ĂhĖMÈÄw\\\\fŦ°W ¢¾luŸDw\\\\̀ʉÌÛMĀ[bÓEn}¶Vcês\"]],\"encodeOffsets\":[[[129102,52189]]]}},{\"type\":\"Feature\",\"id\":\"210000\",\"properties\":{\"id\":\"210000\",\"cp\":[123.429096,41.796767],\"name\":\"辽宁\",\"childNum\":16},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@L@@sa\"],[\"@@MnNm\"],[\"@@dc\"],[\"@@eÀC@b\"],[\"@@fXwkbrÄ`qg\"],[\"@@^jtWQ\"],[\"@@~ Y]c\"],[\"@@G`ĔN^_¿ZÃM\"],[\"@@iX¶BY\"],[\"@@YZ\"],[\"@@L_{Epf\"],[\"@@^WqCT\\\\\"],[\"@@\\\\[§t|¤_\"],[\"@@m`n_\"],[\"@@Ïxǌ{q_×^Giip\"],[\"@@@é^BntaÊU]x ¯ÄPĲ­°hʙK³VÕ@Y~|EvĹsÇ¦­L^pÃ²ŸÒG Ël]xxÄ_fT¤Ď¤cPC¨¸TVjbgH²sdÎdHt`B²¬GJję¶[ÐhjeXdlwhðSČ¦ªVÊÏÆZÆŶ®²^ÎyÅÎcPqńĚDMħĜŁH­kçvV[ĳ¼WYÀäĦ`XlR`ôLUVfK¢{NZdĒªYĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~źB|¦ÕE¤Ð`\\\\|KUnnI]¤ÀÂĊnŎR®Ő¿¶\\\\ÀøíDm¦ÎbŨabaĘ\\\\ľãÂ¸atÎSƐ´©v\\\\ÖÚÌǴ¤Â¨JKrZ_ZfjþhPkx`YRIjJcVf~sCN¤ EhæmsHy¨SðÑÌ\\\\\\\\ĐRZk°IS§fqŒßýáĞÙÉÖ[^¯ǤŲê´\\\\¦¬ĆPM¯£»uïpùzExanµyoluqe¦W^£ÊL}ñrkqWňûPUP¡ôJoo·U}£[·¨@XĸDXm­ÛÝºGUCÁª½{íĂ^cjk¶Ã[q¤LÉö³cux«zZf²BWÇ®Yß½ve±ÃCý£W{Ú^q^sÑ·¨ÍOt¹·C¥GDrí@wÕKţÃ«V·i}xËÍ÷i©ĝɝǡ]{c±OW³Ya±_ç©HĕoƫŇqr³Lys[ñ³¯OSďOMisZ±ÅFC¥Pq{Ã[Pg}\\\\¿ghćOk^ģÁFıĉĥM­oEqqZûěŉ³F¦oĵhÕP{¯~TÍlªNßYÐ{Ps{ÃVUeĎwk±ŉVÓ½ŽJãÇÇ»Jm°dhcÀffdF~ĀeĖd`sx² ®EżĀdQÂd^~ăÔH¦\\\\LKpĄVez¤NP ǹÓRÆąJSh­a[¦´ÂghwmBÐ¨źhI|VV|p] Â¼èNä¶ÜBÖ¼L`¼bØæKVpoúNZÞÒKxpw|ÊEMnzEQIZZNBčÚFÜçmĩWĪñtÞĵÇñZ«uD±|Əlĳ¥ãn·±PmÍada CLǑkùó¡³Ï«QaċÏOÃ¥ÕđQȥċƭy³ÃA\"]],\"encodeOffsets\":[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]}},{\"type\":\"Feature\",\"id\":\"220000\",\"properties\":{\"id\":\"220000\",\"cp\":[125.3245,43.886841],\"name\":\"吉林\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@pä³PClFbbÍzwBGĭZÅi»lY­ċ²SgkÇ£^Sqd¯R©é£¯S\\\\cZ¹iűƏCuƍÓXoR}M^o£R}oªU­FuuXHlEÅÏ©¤ÛmTþ¤D²ÄufàÀ­XXÈ±AeyYw¬dvõ´KÊ£\\\\rµÄlidā]|î©¾DÂVH¹Þ®ÜWnCķ W§@\\\\¸~¤Vp¸póIO¢VOŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð¼¤ N°ąO¥«³[éǡű_°Õ\\\\ÚÊĝþâőàerR¨­JYlďQ[ ÏYëÐ§TGztnß¡gFkMāGÁ¤ia ÉÈ¹`\\\\xs¬dĆkNnuNUuP@vRY¾\\\\¢GªóĄ~RãÖÎĢùđŴÕhQxtcæëSɽŉíëǉ£ƍG£nj°KƘµDsØÑpyĆ¸®¿bXp]vbÍZuĂ{n^IüÀSÖ¦EvRÎûh@â[ƏÈô~FNr¯ôçR±­HÑlĢ^¤¢OðævxsŒ]ÞÁTĠs¶¿âÆGW¾ìA¦·TÑ¬è¥ÏÐJ¨¼ÒÖ¼ƦɄxÊ~StD@Ă¼Ŵ¡jlºWvÐzƦZÐ²CH AxiukdGgetqmcÛ£Ozy¥cE}|¾cZk¿uŐã[oxGikfeäT@SUwpiÚFM©£è^Ú`@v¶eňf heP¶täOlÃUgÞzŸU`l}ÔÆUvØ_Ō¬Öi^ĉi§²ÃB~¡ĈÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYxƘDVÇĺĿg¿cwÅ\\\\¹¥Yĭl¤OvLjM_a W`zļMž·\\\\swqÝSAqŚĳ¯°kRē°wx^ĐkǂÒ\\\\]nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°G³¼XÀ¤¹i´o¤ŃÈ`ÌǲÄUĞd\\\\iÖmÈBĤÜɲDEh LG¾ƀÄ¾{WaYÍÈĢĘÔRîĐj}ÇccjoUb½{h§Ǿ{KƖµÎ÷GĀÖŠåưÎs­lyiē«`å§H¥Ae^§GK}iã\\\\c]v©ģZmÃ|[M}ģTɟĵÂÂ`ÀçmFK¥ÚíÁbX³ÌQÒHof{]ept·GŋĜYünĎųVY^ydõkÅZW«WUa~U·SbwGçǑiW^qFuNĝ·EwUtW·Ýďæ©PuqEzwAVXRãQ`­©GMehccďÏd©ÑW_ÏYƅ»é\\\\ɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_Ã½L¡ýqT^rme\\\\PpZZbyuybQefµ]UhĿDCmûvaÙNSkCwncćfv~YÇG\"],\"encodeOffsets\":[[130196,42528]]}},{\"type\":\"Feature\",\"id\":\"230000\",\"properties\":{\"id\":\"230000\",\"cp\":[128.642464,46.756967],\"name\":\"黑龙江\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@UµNÿ¥īèçHÍøƕ¶Lǽ|g¨|a¾pVidd~ÈiíďÓQġėÇZÎXb½|ſÃH½KFgɱCģÛÇAnjÕc[VĝǱÃËÇ_ £ń³pj£º¿»WH´¯U¸đĢmtĜyzzNN|g¸÷äűÑ±ĉā~mq^[ǁÑďlw]¯xQĔ¯l°řĴrBÞTxr[tŽ¸ĻN_yX`biNKuP£kZĮ¦[ºxÆÀdhĹŀUÈƗCwáZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFć}¢A±Äj¨]ĊÕjŋ«×`VuÓÅ~_kŷVÝyhVkÄãPsOµfgeŇµf@u_Ù ÙcªNªÙEojVxT@ãSefjlwH\\\\pŏäÀvlY½d{F~¦dyz¤PÜndsrhfHcvlwjF£G±DÏƥYyÏu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|C˜zxAè¥bfudTrFWÁ¹Am|ĔĕsķÆF´N}ćUÕ@Áĳſmuçuð^ÊýowFzØÎĕNőǏȎôªÌŒǄàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°Uzouxe]}AyÈW¯ÌmKQ]Īºif¸ÄX|sZt|½ÚUÎ lk^p{f¤lºlÆW A²PVÜPHÊâ]ÎĈÌÜk´\\\\@qàsĔÄQºpRij¼èi`¶bXrBgxfv»uUi^v~J¬mVp´£´VWrnP½ì¢BX¬hðX¹^TjVriªjtŊÄmtPGx¸bgRsT`ZozÆO]ÒFôÒOÆŊvÅpcGêsx´DR{AEOr°x|íb³Wm~DVjºéNNËÜ˛ɶ­GxŷCSt}]ûōSmtuÇÃĕNāg»íT«u}ç½BĵÞʣ¥ëÊ¡MÛ³ãȅ¡ƋaǩÈÉQG¢·lG|tvgrrf«ptęŘnÅĢrI²¯LiØsPf_vĠdxM prʹL¤¤eËÀđKïÙVY§]Ióáĥ]ķK¥j|pŇ\\\\kzţ¦šnņäÔVĂîĪ¬|vW®l¤èØrxm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄĄ»ƢjȦOǺ¨ìSŖÆƬyQv`cwZSÌ®ü±Ǆ]ŀç¬B¬©ńzƺŷɄeeOĨSfm ĊƀP̎ēz©ĊÄÕÊmgÇsJ¥ƔŊśæÎÑqv¿íUOµªÂnĦÁ_½ä@êí£P}Ġ[@gġ}gɊ×ûÏWXá¢užƻÌsNÍ½ƎÁ§čŐAēeL³àydl¦ĘVçŁpśǆĽĺſÊQíÜçÛġÔsĕ¬Ǹ¯YßċġHµ ¡eå`ļrĉŘóƢFìĎWøxÊkƈdƬv|I|·©NqńRŀ¤éeŊŀàŀU²ŕƀBQ£Ď}L¹Îk@©ĈuǰųǨÚ§ƈnTËÇéƟÊcfčŤ^XmHĊĕË«W·ċëx³ǔķÐċJāwİ_ĸȀ^ôWr­°oú¬ĦŨK~ȰCĐ´Ƕ£fNÎèâw¢XnŮeÂÆĶ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®ØCÔ ŬGƠƦYĜĘÜƬDJg_ͥœ@čŅĻA¶¯@wÎqC½Ĉ»NăëKďÍQÙƫ[«ÃígßÔÇOÝáWñuZ¯ĥŕā¡ÑķJu¤E å¯°WKÉ±_d_}}vyõu¬ï¹ÓU±½@gÏ¿rÃ½DgCdµ°MFYxw¿CG£Rƛ½Õ{]L§{qqą¿BÇƻğëܭǊË|c²}Fµ}ÙRsÓpg±QNqǫŋRwŕnéÑÉK«SeYRŋ@{¤SJ}D Ûǖ֍]gr¡µŷjqWÛham³~S«Þ]\"]],\"encodeOffsets\":[[[134456,44547]]]}},{\"type\":\"Feature\",\"id\":\"320000\",\"properties\":{\"id\":\"320000\",\"cp\":[119.767413,33.041544],\"name\":\"江苏\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@cþÅPi`ZRu¥É\\\\]~°Y`µÓ^phÁbnÀşúòaĬºTÖŒbe¦¦{¸ZâćNp©Hr|^mjhSEb\\\\afv`sz^lkljÄtg¤D­¾X¿À|ĐiZȀåB·î}GL¢õcßjayBFµÏC^ĭcÙt¿sğH]j{s©HM¢QnDÀ©DaÜÞ·jgàiDbPufjDk`dPOîhw¡ĥ¥GP²ĐobºrYî¶aHŢ´ ]´rılw³r_{£DB_Ûdåuk|Ũ¯F Cºyr{XFye³Þċ¿ÂkĭB¿MvÛpm`rÚã@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlVJĂǀŞqvnO^JZż·Q}êÍÅmµÒ]ƍ¦Dq}¬R^èĂ´ŀĻĊIÔtĲyQŐĠMNtR®òLhĚs©»}OÓGZz¶A\\\\jĨFäOĤHYJvÞHNiÜaĎÉnFQlNM¤B´ĄNöɂtpŬdfåqm¿QûùŞÚb¤uŃJŴu»¹ĄlȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Yxcitğ®jű¢KOķCoy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋÄÄÍīçÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıǅ_k}¢m[ÝóDµ¡RLčiXyÅNïă¡¸iĔÏNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCtOPrE^ÒogĉIµÛÅʹK¤½phMü`oæŀ\"],\"encodeOffsets\":[[121740,32276]]}},{\"type\":\"Feature\",\"id\":\"330000\",\"properties\":{\"id\":\"330000\",\"cp\":[120.153576,29.287459],\"name\":\"浙江\",\"childNum\":45},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@E^dQ]K\"],[\"@@jX^j\"],[\"@@sfbU\"],[\"@@qP\\\\xz[ck\"],[\"@@R¢FX}°[s_\"],[\"@@Cb\\\\}\"],[\"@@e|v\\\\la{u\"],[\"@@v~u}\"],[\"@@QxÂF¯}\"],[\"@@¹nvÞs¯o\"],[\"@@rSkUEj\"],[\"@@bi­ZP\"],[\"@@p[}INf\"],[\"@@À¿\"],[\"@@¹dnb\"],[\"@@rSBnR\"],[\"@@g~h}\"],[\"@@FlEk\"],[\"@@OdPc\"],[\"@@v[u\\\\\"],[\"@@FjâL~wyoo~sµL\\\\\"],[\"@@¬e¹aN\"],[\"@@\\\\nÔ¡q]L³ë\\\\ÿ®QÖ\"],[\"@@ÊA­©[¬\"],[\"@@Kxv­\"],[\"@@@hlIk]\"],[\"@@pW{o||j\"],[\"@@Md|_mC\"],[\"@@¢X£ÏylD¼XtH\"],[\"@@hlÜ[LykAvyfw^E¤\"],[\"@@fp¤MusR\"],[\"@@®_ma~LÁ¬Z\"],[\"@@iMxZ\"],[\"@@ZcYd\"],[\"@@Z~dOSo|A¿qZv\"],[\"@@@`EN¡v\"],[\"@@|TY{\"],[\"@@@n@m\"],[\"@@XWkCT\\\\\"],[\"@@ºwZRkĕWO¢\"],[\"@@X®±GrÆª\\\\ÔáXq{\"],[\"@@ůTG°ĄLHm°UC\"],[\"@@¤aÜx~}dtüGæţŎíĔcŖpMËÐjē¢·ðĄÆMzjWKĎ¢Q¶À_ê_Bıi«pZgf¤Nrq]§ĂN®«H±yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªÁŖHŗŉåqûõi¨hÜ·ñt»¹ýv_[«¸mYL¯QªmĉÅdMgÇjcº«ę¬­K­´B«Âącoċ\\\\xKd¡gěŧ«®á[~ıxu·ÅKsËÉc¢Ù\\\\ĭƛëbf¹­ģSĜkáƉÔ­ĈZB{aMµfzŉfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®\\\\ßðChiqªĭiAuA­µ_W¥ƣO\\\\lċĢttC¨£t`PZäuXßBsĻyekOđġĵHuXBµ]×­­\\\\°®¬F¢¾pµ¼kŘó¬Wät¸|@L¨¸µrºù³Ù~§WIZW®±Ð¨ÒÉx`²pĜrOògtÁZ}þÙ]¡FKwsPlU[}¦Rvn`hq¬\\\\nQ´ĘRWb_ rtČFIÖkĦPJ¶ÖÀÖJĈĄTĚòC ²@PúØz©Pî¢£CÈÚĒ±hŖl¬â~nm¨f©iļ«mntuÖZÜÄjL®EÌFª²iÊxØ¨IÈhhst\"],[\"@@o\\\\VzRZ}y\"],[\"@@@°¡mÛGĕ¨§Ianá[ýƤjfæØLäGr\"]],\"encodeOffsets\":[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125000,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]}},{\"type\":\"Feature\",\"id\":\"340000\",\"properties\":{\"id\":\"340000\",\"cp\":[117.283042,31.26119],\"name\":\"安徽\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@^iuLX^\"],[\"@@e©Ehl\"],[\"@@°ZÆëĎµmkǀwÌÕæhºgBĝâqÙĊzÖgņtÀÁĂÆáhEz|WzqD¹°Eŧl{ævÜcA`¤C`|´qxĲkq^³³GšµbíZ¹qpa±ď OH¦Ħx¢gPícOl_iCveaOjChß¸iÝbÛªCC¿mRV§¢A|t^iĠGÀtÚsd]ĮÐDE¶zAb àiödK¡~H¸íæAǿYj{ď¿À½W®£ChÃsikkly]_teu[bFaTign{]GqªoĈMYá|·¥f¥őaSÕėNµñĞ«Im_m¿Âa]uĜp Z_§{Cäg¤°r[_YjÆOdý[I[á·¥Q_nùgL¾mvˊBÜÆ¶ĊJhpc¹O]iŠ]¥ jtsggJÇ§w×jÉ©±EFË­KiÛÃÕYvsm¬njĻª§emná}k«ŕgđ²ÙDÇ¤í¡ªOy×Où±@DñSęćăÕIÕ¿IµĥOjNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆßF¶X®¿mwRIÞfßoG³¾©uyHį{Ɓħ¯AFnuPÍÔzVdàôº^Ðæd´oG¤{S¬ćxã}ŧ×Kǥĩ«ÕOEÐ·ÖdÖsƘÑ¨[Û^Xr¢¼§xvÄÆµ`K§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔēßúLÃÃ_ÈÏ|]ÂÏFlg`ben¾¢pUh~ƴĖ¶_r sĄ~cƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³]u}fïQl{skloNdjäËzDvčoQďHI¦rbtHĔ~BmlRV_ħTLnñH±DL¼Lªl§Ťa¸ĚlK²\\\\RòvDcÎJbt[¤D@®hh~kt°ǾzÖ@¾ªdbYhüóZ ň¶vHrľ\\\\ÊJuxAT|dmÀO[ÃÔG·ĚąĐlŪÚpSJ¨ĸLvÞcPæķŨ®mÐálwKhïgA¢ųÆ©Þ¤OÈm°K´\"]],\"encodeOffsets\":[[[121722,32278]],[[119475,30423]],[[119168,35472]]]}},{\"type\":\"Feature\",\"id\":\"350000\",\"properties\":{\"id\":\"350000\",\"cp\":[118.306239,26.075302],\"name\":\"福建\",\"childNum\":18},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@zht´]\"],[\"@@aj^~ĆG©O\"],[\"@@ed¨C}}i\"],[\"@@@vPGsQ\"],[\"@@sBzddW]Q\"],[\"@@S¨Q{\"],[\"@@NVucW\"],[\"@@qptBAq\"],[\"@@¸[mu\"],[\"@@Q\\\\pD]_\"],[\"@@jSwUadpF\"],[\"@@eXª~\"],[\"@@AjvFso\"],[\"@@fT_Çí\\\\v|ba¦jZÆy°\"],[\"@@IjJi\"],[\"@@wJIx«¼AoNe{M­\"],[\"@@K±¡ÓČäeZ\"],[\"@@k¡¹Eh~c®wBkUplÀ¡I~Māe£bN¨gZý¡a±Öcp©PhI¢QqÇGj|¥U g[Ky¬ŏv@OptÉEF\\\\@ åA¬V{XģĐBycpě¼³Ăp·¤¥ohqqÚ¡ŅLs^Ã¡§qlÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ßėuĕeûÒiÁŧSW¥Qûŗ½ùěcÝ§SùĩąSWó«íęACµeRåǃRCÒÇZÍ¢ź±^dlstjD¸ZpuÔâÃH¾oLUêÃÔjjēò´ĄWƛ^Ñ¥Ħ@ÇòmOw¡õyJyD}¢ďÑÈġfZda©º²z£NjD°Ötj¶¬ZSÎ~¾c°¶ÐmxO¸¢Pl´SL|¥AȪĖMņĲg®áIJČĒü` QF¬h|ĂJ@zµ |ê³È ¸UÖŬŬÀEttĸr]ðM¤ĶĲHtÏ AĬkvsq^aÎbvdfÊòSD´Z^xPsĂrvƞŀjJd×ŘÉ ®AÎ¦ĤdxĆqAZRÀMźnĊ»İÐZ YXæJyĊ²·¶q§·K@·{sXãô«lŗ¶»o½E¡­«¢±¨Y®Ø¶^AvWĶGĒĢPlzfļtàAvWYãO_¤sD§ssČġ[kƤPX¦`¶®BBvĪjv©jx[L¥àï[F¼ÍË»ğV`«Ip}ccÅĥZEãoP´B@D¸m±z«Ƴ¿å³BRØ¶Wlâþäą`]Z£Tc ĹGµ¶Hm@_©k¾xĨôȉðX«½đCIbćqK³ÁÄš¬OAwã»aLŉËĥW[ÂGIÂNxĳ¤D¢îĎÎB§°_JGs¥E@¤ućPåcuMuw¢BI¿]zG¹guĮck\\\\_\"]],\"encodeOffsets\":[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]}},{\"type\":\"Feature\",\"id\":\"360000\",\"properties\":{\"id\":\"360000\",\"cp\":[115.592151,27.676493],\"name\":\"江西\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ĢĨƐgļ¼ÂMD~ņªe^\\\\^§ý©j×cZØ¨zdÒa¶lÒJìõ`oz÷@¤uŞ¸´ôęöY¼HČƶajlÞƩ¥éZ[|h}^U  ¥pĄžƦO lt¸Æ Q\\\\aÆ|CnÂOjt­ĚĤdÈF`¶@Ðë ¦ōÒ¨SêvHĢûXD®QgÄWiØPÞìºr¤ǆNĠ¢lĄtZoCƞÔºCxrpĠV®Ê{f_Y`_eq®Aot`@oDXfkp¨|s¬\\\\DÄSfè©Hn¬^DhÆyøJhØxĢĀLÊƠPżċĄwȠĚ¦G®ǒĤäTŠÆ~Ħw«|TF¡nc³Ïå¹]ĉđxe{ÎÓvOEm°BƂĨİ|Gvz½ª´HàpeJÝQxnÀW­EµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[r«_gmQu~¥V\\\\OkxtL E¢Ú^~ýêPóqoě±_Êw§ÑªåƗā¼mĉŹ¿NQYBąrwģcÍ¥B­ŗÊcØiIƝĿuqtāwO]³YCñTeÉcaubÍ]trluīBÐGsĵıN£ï^ķqss¿FūūVÕ·´Ç{éĈýÿOER_đûIċâJh­ŅıNȩĕB¦K{Tk³¡OP·wnµÏd¯}½TÍ«YiµÕsC¯iM¤­¦¯P|ÿUHvhe¥oFTuõ\\\\OSsMòđƇiaºćXĊĵà·çhƃ÷Ç{ígu^đgm[×zkKN¶Õ»lčÓ{XSÆv©_ÈëJbVkĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B±ÌKyáV¼Ã~­`gsÙfIƋlę¹e|~udjuTlXµf`¿Jd[\\\\L²\"],\"encodeOffsets\":[[116689,26234]]}},{\"type\":\"Feature\",\"id\":\"370000\",\"properties\":{\"id\":\"370000\",\"cp\":[118.000923,36.275807],\"name\":\"山东\",\"childNum\":13},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@Xjd]{K\"],[\"@@itbFHy\"],[\"@@HlGk\"],[\"@@TGy\"],[\"@@K¬U\"],[\"@@WdXc\"],[\"@@PtOs\"],[\"@@LnXhc\"],[\"@@ppVu]Or\"],[\"@@cdzAUa\"],[\"@@udRhnCI\"],[\"@@oIpR\"],[\"@@Ľč{fzƤîKÎMĮ]ZF½Y]â£ph¶¨râøÀÎǨ¤^ºÄGz~grĚĜlĞÆLĆǆ¢Îo¦cvKbgr°WhmZp L]LºcUÆ­nżĤÌĒbAnrOA´ȊcÀbƦUØrĆUÜøĬƞEzVL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎÉnb²ĦhņBĖįĦåXćì@L¯´ywƕCéÃµė ƿ¸lµ¾Z|ZWyFY¨Mf~C¿`à_RÇzwƌfQnny´INoƬèôº|sTJULîVjǎ¾ĒØDz²XPn±ŴPè¸ŔLƔÜƺ_TüÃĤBBċÈöA´faM¨{«M`¶d¡ôÖ°mȰBÔjj´PM|c^d¤u¤Û´ä«ƢfPk¶Môl]Lb}su^ke{lCMrDÇ­]NÑFsmoõľHyGă{{çrnÓEƕZGª¹Fj¢ïWuøCǷë¡ąuhÛ¡^KxC`C\\\\bÅxì²ĝÝ¿_NīCȽĿåB¥¢·IŖÕy\\\\¹kxÃ£Č×GDyÃ¤ÁçFQ¡KtŵƋ]CgÏAùSedcÚźuYfyMmhUWpSyGwMPqŀÁ¼zK¶G­Y§Ë@´śÇµƕBm@IogZ¯uTMx}CVKï{éƵP_K«pÛÙqċtkkù]gTğwoɁsMõ³ăAN£MRkmEÊčÛbMjÝGuIZGPģãħE[iµBEuDPÔ~ª¼ęt]ûG§¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸YI] PumŝrƿIā[xeÇ³L¯v¯s¬ÁY~}ťuŁgƋpÝĄ_ņī¶ÏSR´ÁP~¿Cyċßdwk´SsX|t`Ä ÈðAªìÎT°¦Dda^lĎDĶÚY°`ĪŴǒàŠv\\\\ebZHŖR¬ŢƱùęOÑM­³FÛWp[\"]],\"encodeOffsets\":[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]}},{\"type\":\"Feature\",\"id\":\"410000\",\"properties\":{\"id\":\"410000\",\"cp\":[113.665412,33.757975],\"name\":\"河南\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ýLùµP³swIÓxcŢĞð´E®ÚPtĴXØxÂ¶@«ŕŕQGYfa[şußǩđš_X³ĳÕčC]kbc¥CS¯ëÍB©÷³­Si_}mYTt³xlàcČzÀD}ÂOQ³ÐTĨ¯ƗòËŖ[hłŦv~}ÂZ«¤lPÇ£ªÝŴÅR§ØnhctâknÏ­ľŹUÓÝdKuķI§oTũÙďkęĆH¸Ó\\\\Ä¿PcnS{wBIvÉĽ[GqµuŇôYgûZca©@½Õǽys¯}lgg@­C\\\\£asIdÍuCQñ[L±ęk·ţb¨©kK»KC²òGKmĨS`UQnk}AGēsqaJ¥ĐGRĎpCuÌy ã iMcplk|tRkðev~^´¦ÜSí¿_iyjI|ȑ|¿_»d}q^{Ƈdă}tqµ`Ƴĕg}V¡om½faÇo³TTj¥tĠRyK{ùÓjuµ{t}uËRivGçJFjµÍyqÎàQÂFewixGw½Yŷpµú³XU½ġyłåkÚwZX·l¢Á¢KzOÎÎjc¼htoDHr|­J½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQĹ¤]MÛfaQpě±ǽ¾]u­Fu÷nčÄ¯ADp}AjmcEÇaª³o³ÆÍSƇĈÙDIzËčľ^KLiÞñ[aA²zzÌ÷D|[íÄ³gfÕÞd®|`Ć~oĠƑô³ŊD×°¯CsøÀ«ìUMhTº¨¸ǡîSÔDruÂÇZÖEvPZW~ØÐtĄE¢¦Ðy¸bô´oŬ¬²Ês~]®tªapŎJ¨Öº_Ŕ`Ŗ^Đ\\\\Ĝu~m²Ƹ¸fWĦrƔ}Î^gjdfÔ¡J}\\\\n C¦þWxªJRÔŠu¬ĨĨmFdM{\\\\d\\\\YÊ¢ú@@¦ª²SÜsC}fNècbpRmlØ^gd¢aÒ¢CZZxvÆ¶N¿¢T@uC¬^ĊðÄn|lGlRjsp¢ED}Fio~ÔN~zkĘHVsǲßjŬŢ`Pûàl¢\\\\ÀEhİgÞē X¼Pk|m\"],\"encodeOffsets\":[[118256,37017]]}},{\"type\":\"Feature\",\"id\":\"420000\",\"properties\":{\"id\":\"420000\",\"cp\":[113.298572,30.684355],\"name\":\"湖北\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@AB\"],[\"@@lskt\"],[\"@@¾«}{ra®pîÃ\\\\{øCËyyB±b\\\\òÝjKL ]ĎĽÌJyÚCƈćÎT´Å´pb©ÈdFin~BCo°BĎÃømv®E^vǾ½Ĝ²RobÜeN^ĺ£R¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I¾®I{GqpCgyl{£ÍÍyPLÂ¡¡¸kWxYlÙæŁĢz¾V´W¶ùŸo¾ZHxjwfxGNÁ³Xéæl¶EièIH ujÌQ~v|sv¶Ôi|ú¢FhQsğ¦SiŠBgÐE^ÁÐ{čnOÂÈUÎóĔÊēĲ}Z³½Mŧïeyp·uk³DsÑ¨L¶_ÅuÃ¨w»¡WqÜ]\\\\Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟOKÉġÿ×wg÷IÅzCg]m«ªGeçÃTC«[t§{loWeC@ps_Bp­rf_``Z|ei¡oċMqow¹DƝÓDYpûsYkıǃ}s¥ç³[§cY§HK«Qy]¢wwö¸ïx¼ņ¾Xv®ÇÀµRĠÐHM±cÏdƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\\\}pĭÉI±Ñy¿³x¯No|¹HÏÛmjúË~TuęjCöAwě¬Rđl¯ Ñb­ŇTĿ_[IčĄʿnM¦ğ\\\\É[T·k¹©oĕ@A¾wya¥Y\\\\¥Âaz¯ãÁ¡k¥ne£ÛwE©Êō¶˓uoj_U¡cF¹­[WvP©whuÕyBF`RqJUw\\\\i¡{jEPïÿ½fćQÑÀQ{°fLÔ~wXgītêÝ¾ĺHd³fJd]HJ²EoU¥HhwQsƐ»Xmg±çve]DmÍPoCc¾_hhøYrŊU¶eD°Č_N~øĹĚ·`z]Äþp¼äÌQv\\\\rCé¾TnkžŐÚÜa¼ÝƆĢ¶ÛodĔňÐ¢JqPb ¾|J¾fXƐîĨ_Z¯À}úƲN_ĒÄ^ĈaŐyp»CÇÄKñL³ġM²wrIÒŭxjb[n«øæà ^²­h¯ÚŐªÞ¸Y²ĒVø}Ā^İ´LÚm¥ÀJÞ{JVųÞŃx×sxxƈē ģMřÚðòIfĊŒ\\\\Ʈ±ŒdÊ§ĘDvČ_Àæ~Dċ´A®µ¨ØLV¦êHÒ¤\"]],\"encodeOffsets\":[[[113712,34000]],[[115612,30507]],[[113649,34054]]]}},{\"type\":\"Feature\",\"id\":\"430000\",\"properties\":{\"id\":\"430000\",\"cp\":[111.782279,28.09409],\"name\":\"湖南\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@nFTs\"],[\"@@ßÅÆá½ÔXrCOËRïÿĩ­TooQyÓ[ŅBE¬ÎÓXaį§Ã¸G °ITxpúxÚĳ¥ÏĢ¾edÄ©ĸGàGhM¤Â_U}Ċ}¢pczfþg¤ÇòAVM\"],[\"@@©KA·³CQ±Á«³BUƑ¹AtćOwD]JiØSm¯b£ylXHËÑ±H«C^õľAÅ§¤É¥ïyuǙuA¢^{ÌC´­¦ŷJ£^[ª¿ĕ~ƇN skóā¹¿ï]ă~÷O§­@Vm¡Qđ¦¢Ĥ{ºjÔª¥nf´~Õo×ÛąMąıuZmZcÒ ĲĪ²SÊǄŶ¨ƚCÖŎªQØ¼rŭ­«}NÏürÊ¬mjr@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hT}mĉ¹¥ěDÿë©ıÓ[Oº£¥ótł¹MÕƪ`PDiÛU¾ÅâìUñBÈ£ýhedy¡oċ`pfmjP~kZaZsÐd°wj§@Ĵ®w~^kÀÅKvNmX\\\\¨aŃqvíó¿F¤¡@ũÑVw}S@j}¾«pĂrªg àÀ²NJ¶¶DôK|^ª°LX¾ŴäPĪ±£EXd^¶ĲÞÜ~u¸ǔMRhsRe`ÄofIÔ\\\\Ø  ićymnú¨cj ¢»GČìƊÿÐ¨XeĈĀ¾Oð Fi ¢|[jVxrIQ_EzAN¦zLU`cªxOTu RLÄ¢dVi`p˔vŎµªÉF~Ød¢ºgİàw¸Áb[¦Zb¦z½xBĖ@ªpºlS¸Ö\\\\Ĕ[N¥ˀmĎăJ\\\\ŀ`ňSÚĖÁĐiOĜ«BxDõĚivSÌ}iùÜnÐºG{p°M´wÀÒzJ²ò¨ oTçüöoÛÿñőĞ¤ùTz²CȆȸǎŪƑÐc°dPÎğË¶[È½u¯½WM¡­ÉB·rínZÒ `¨GA¾\\\\pēXhÃRC­üWGġuTé§ŎÑ©ò³I±³}_EÃħg®ęisÁPDmÅ{b[RÅs·kPŽƥóRoOV~]{g\\\\êYƪ¦kÝbiċƵGZ»Ěõó·³vŝ£ø@pyö_ëIkÑµbcÑ§y×dYØªiþ¨[]f]Ņ©C}ÁN»hĻħƏĩ\"]],\"encodeOffsets\":[[[115640,30489]],[[112543,27312]],[[116690,26230]]]}},{\"type\":\"Feature\",\"id\":\"440000\",\"properties\":{\"id\":\"440000\",\"cp\":[113.280637,23.125178],\"name\":\"广东\",\"childNum\":24},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@QdAua\"],[\"@@lxDLo\"],[\"@@sbhNLo\"],[\"@@Ă ā\"],[\"@@WltO[[\"],[\"@@Kr]S\"],[\"@@eI]y\"],[\"@@I|Mym\"],[\"@@Û³LS¼Y\"],[\"@@nvºBëui©`¾\"],[\"@@zdÛJw®\"],[\"@@°¯\"],[\"@@a yAª¸ËJIxØ@ĀHAmÃV¡ofuo\"],[\"@@sŗÃÔėAƁZÄ ~°ČPäh\"],[\"@@¶ÝÌvmĞh­ıQ\"],[\"@@HdSjĒ¢D}waru«ZqadYM\"],[\"@@el\\\\LqqU\"],[\"@@~rMo\\\\\"],[\"@@f^C\"],[\"@@øPªoj÷ÍÝħXČx°Q¨ıXNv\"],[\"@@gÇƳo[~tly\"],[\"@@EÆC¿\"],[\"@@OP\"],[\"@@wđógĝ[³¡VÙæÅöMÌ³¹pÁaËýý©D©ÜJŹƕģGą¤{ÙūÇO²«BƱéAÒĥ¡«BhlmtÃPµyU¯ucd·w_bŝcīímGO|KPȏŹãŝIŕŭŕ@Óoo¿ē±ß}ŭĲWÈCőâUâǙIğŉ©IĳE×Á³AówXJþ±ÌÜÓĨ£L]ĈÙƺZǾĆĖMĸĤfÎĵlŨnÈĐtFFĤêk¶^k°f¶g}®Faf`vXŲxl¦ÔÁ²¬Ð¦pqÊÌ²iXØRDÎ}Ä@ZĠsx®AR~®ETtĄZƈfŠŠHâÒÐAµ\\\\S¸^wĖkRzalŜ|E¨ÈNĀňZTpBh£\\\\ĎƀuXĖtKL¶G|»ĺEļĞ~ÜĢÛĊrOÙîvd]n¬VÊĜ°RÖpMƂªFbwEÀ©\\\\¤]ŸI®¥D³|Ë]CöAŤ¦æ´¥¸Lv¼¢ĽBaôF~®²GÌÒEYzk¤°ahlVÕI^CxĈPsBƒºV¸@¾ªR²ĨN]´_eavSivc}p}Đ¼ƌkJÚe th_¸ ºx±ò_xNË²@ă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIÇª`uTÅxYĒÖ¼kÖµMjJÚwn\\\\hĒv]îh|ÈƄøèg¸Ķß ĉĈWb¹ƀdéĘNTtP[öSvrCZaGubo´ŖÒÇĐ~¡zCIözx¢PnÈñ @ĥÒ¦]ƞV}³ăĔñiiÄÓVépKG½ÄÓávYoC·sitiaÀyŧÎ¡ÈYDÑům}ý|m[węõĉZÅxUO}÷N¹³ĉo_qtăqwµŁYÙǝŕ¹tïÛUÃ¯mRCºĭ|µÕÊK½Rē ó]GªęAx»HO£|ām¡diď×YïYWªŉOeÚtĐ«zđ¹TāúEá²\\\\ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀǇğ·¿ÃOj YÇ÷Qěi\"]],\"encodeOffsets\":[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]}},{\"type\":\"Feature\",\"id\":\"450000\",\"properties\":{\"id\":\"450000\",\"cp\":[108.320004,22.82402],\"name\":\"广西\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@H TQ§A\"],[\"@@ĨÊªLƊDÎĹĐCǦė¸zÚGn£¾rªŀÜt¬@ÖÚSx~øOŒŶÐÂæȠ\\\\ÈÜObĖw^oÞLf¬°bI lTØBÌF£Ć¹gñĤaYt¿¤VSñK¸¤nM¼JE±½¸ñoÜCƆæĪ^ĚQÖ¦^f´QüÜÊz¯lzUĺš@ìp¶n]sxtx¶@~ÒĂJb©gk{°~c°`Ô¬rV\\\\la¼¤ôá`¯¹LCÆbxEræOv[H­[~|aB£ÖsºdAĐzNÂðsÞÆĤªbab`ho¡³F«èVlo¤ÔRzpp®SĪº¨ÖºNĳd`a¦¤F³ºDÎńĀìCĜº¦Ċ~nS|gźvZkCÆj°zVÈÁƔ]LÊFZgčP­kini«qÇczÍY®¬Ů»qR×ō©DÕ§ƙǃŵTÉĩ±ıdÑnYYĲvNĆĆØÜ Öp}e³¦m©iÓ|¹ħņ|ª¦QF¢Â¬ʖovg¿em^ucà÷gÕuíÙćĝ}FĻ¼Ĺ{µHKsLSđƃrč¤[AgoSŇYMÿ§Ç{FśbkylQxĕ]T·¶[BÑÏGáşşƇeăYSs­FQ}­BwtYğÃ@~CÍQ ×WjË±rÉ¥oÏ ±«ÓÂ¥kwWűmcih³K~µh¯e]lµélEģEďsmÇŧē`ãògK_ÛsUʝćğ¶höO¤Ǜn³c`¡y¦CezYwa[ďĵűMę§]XÎ_íÛ]éÛUćİÕBƣ±dy¹T^dûÅÑŦ·PĻþÙ`K¦¢ÍeĥR¿³£[~äu¼dltW¸oRM¢ď\\\\z}Æzdvň{ÎXF¶°Â_ÒÂÏL©ÖTmu¼ãlīkiqéfA·Êµ\\\\őDc¥ÝFyÔćcűH_hLÜêĺĐ¨c}rn`½Ì@¸¶ªVLhŒ\\\\Ţĺk~Ġið°|gtTĭĸ^xvKVGréAébUuMJVÃO¡qĂXËSģãlýà_juYÛÒBG^éÖ¶§EGÅzěƯ¤EkN[kdåucé¬dnYpAyČ{`]þ¯TbÜÈk¡ĠvàhÂƄ¢Jî¶²\"]],\"encodeOffsets\":[[[111707,21520]],[[107619,25527]]]}},{\"type\":\"Feature\",\"id\":\"460000\",\"properties\":{\"id\":\"460000\",\"cp\":[109.83119,19.031971],\"name\":\"海南\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@¦Ŝil¢XƦƞòïè§ŞCêɕrŧůÇąĻõ·ĉ³œ̅kÇm@ċȧŧĥĽʉ­ƅſȓÒË¦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\\\Ɔ¸ĠĎvʄȀÐ¾jNðĀÒRZǆzÐŘÎ°H¨Ƣb²_Ġ \"],\"encodeOffsets\":[[112750,20508]]}},{\"type\":\"Feature\",\"id\":\"510000\",\"properties\":{\"id\":\"510000\",\"cp\":[104.065735,30.659462],\"name\":\"四川\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@LqKr\"],[\"@@[ĻéV£_ţġñpG réÏ·~ąSfy×Í·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«­T¤JJJyJÈ`Ohß¦¡uËhIyCjmÿwZGTiSsOB²fNmsPa{M{õE^Hj}gYpaeu¯oáwHjÁ½M¡pMuåmni{fk\\\\oÎqCwEZ¼KĝAy{m÷LwO×SimRI¯rKõBS«sFe]fµ¢óY_ÆPRcue°Cbo×bd£ŌIHgtrnyPt¦foaXďxlBowz_{ÊéWiêEGhÜ¸ºuFĈIxf®Y½ĀǙ]¤EyF²ċw¸¿@g¢§RGv»áW`ÃĵJwi]t¥wO­½a[×]`Ãi­üL¦LabbTÀåc}ÍhÆh®BHî|îºÉk­¤Sy£ia©taį·Ɖ`ō¥UhOĝLk}©Fos´JmµlŁuønÑJWÎªYÀïAetTŅÓGË«bo{ıwodƟ½OġÜÂµxàNÖ¾P²§HKv¾]|BÆåoZ`¡Ø`ÀmºĠ~ÌÐ§nÇ¿¤]wğ@srğu~Io[é±¹ ¿ſđÓ@qg¹zƱřaí°KtÇ¤V»Ã[ĩǭƑ^ÇÓ@áťsZÏÅĭƋěpwDóÖáŻneQËq·GCœýS]x·ýq³OÕ¶Qzßti{řáÍÇWŝŭñzÇWpç¿JXĩè½cFÂLiVjx}\\\\NŇĖ¥GeJA¼ÄHfÈu~¸Æ«dE³ÉMA|bÒćhG¬CMõƤąAvüVéŀ_VÌ³ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»ÕZ³ġqDoy`L¬gdp°şp¦ėìÅĮZ°Iähzĵf²å ĚÑKpIN|Ñz]ń·FU×é»R³MÉ»GM«kiér}Ã`¹ăÞmÈnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²ĠþTº·àUȞÏʦ¶I«dĽĢdĬ¿»Ĕ×h\\\\c¬ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvwxBèĻĒ©ĈtCĢɽŠȣ¦āæ·HĽîôNÔ~^¤Ɗu^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ®Z´ğ~Sn|ªWÚ©òzPOȸbð¢|øĞŒQìÛÐ@ĞǎRS¤Á§di´ezÝúØã]HqkIþËQÇ¦ÃsÇ¤[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwnÆƄmÀêErĒtD®ċæcQE®³^ĭ¥©l}äQtoŖÜqÆkµªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæQPJvÄz^Đ¹Æ¯fLà´GC²dt­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïPÈ®âbMüÀXZ ¸£@Å»»QÉ­]dsÖ×_Í_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|YÔZśÎs´xº±Uñt|OĩĠºNbgþJy^dÂY Į]Řz¦gC³R`Āz¢Aj¸CL¤RÆ»@­Ŏk\\\\Ç´£YW}z@Z}Ã¶oû¶]´^NÒ}èNªPÍy¹`S°´ATeVamdUĐwʄvĮÕ\\\\uÆŗ¨Yp¹àZÂmWh{á}WØǍÉüwga§áCNęÎ[ĀÕĪgÖÉªXøx¬½Ů¦¦[NÎLÜUÖ´òrÙŠxR^JkĳnDX{U~ET{ļº¦PZcjF²Ė@pg¨B{u¨ŦyhoÚD®¯¢ WòàFÎ¤¨GDäz¦kŮPġqË¥À]eâÚ´ªKxīPÖ|æ[xÃ¤JÞĥsNÖ½I¬nĨY´®ÐƐmDŝuäđđEbee_v¡}ìęǊē}qÉåT¯µRs¡M@}ůaa­¯wvƉåZw\\\\Z{åû^\"]],\"encodeOffsets\":[[[108815,30935]],[[110617,31811]]]}},{\"type\":\"Feature\",\"id\":\"520000\",\"properties\":{\"id\":\"520000\",\"cp\":[106.713478,26.578343],\"name\":\"贵州\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@G\\\\lY£in\"],[\"@@q|mc¯tÏVSÎ\"],[\"@@hÑ£IsNgßHHªķÃh_¹¡ĝÄ§ń¦uÙùgS¯JH|sÝÅtÁïyMDč»eÕtA¤{b\\\\}G®u\\\\åPFqwÅaDK°ºâ_£ùbµmÁÛĹM[q|hlaªāI}Ñµ@swtwm^oµDéĽŠyVky°ÉûÛR³e¥]RÕěħ[ƅåÛDpJiVÂF²I»mN·£LbÒYbWsÀbpkiTZĄă¶Hq`ĥ_J¯ae«KpÝx]aĕÛPÇȟ[ÁåŵÏő÷Pw}TÙ@Õs«ĿÛq©½m¤ÙH·yǥĘĉBµĨÕnđ]K©œáGçş§ÕßgǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊw¶øV¤w²Ĉ]ÊKx|`ź¦ÂÈdrcÈbe¸`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pĐ`oÒh¶pa^ÓĔ}D»^Xy`d[KvJPhèhCrĂĚÂ^Êƌ wZL­Ġ£ÁbrzOIlMMĪŐžËr×ÎeŦtw|¢mKjSǘňĂStÎŦEtqFT¾Eì¬¬ôxÌO¢ K³ŀºäYPVgŎ¦ŊmŞ¼VZwVlz¤£Tl®ctĽÚó{G­AÇge~Îd¿æaSba¥KKûj®_Ä^\\\\Ø¾bP®¦x^sxjĶI_Ä Xâ¼Hu¨Qh¡À@Ëô}±GNìĎlT¸`V~R°tbÕĊ`¸úÛtÏFDu[MfqGH·¥yAztMFe|R_GkChZeÚ°tov`xbDnÐ{E}ZèxNEÞREn[Pv@{~rĆAB§EO¿|UZ~ìUf¨J²ĂÝÆsªB`s¶fvö¦Õ~dÔq¨¸º»uù[[§´sb¤¢zþF¢ÆÀhÂW\\\\ıËIÝo±ĭŠ£þÊs}¡R]ěDg´VG¢j±®èºÃmpU[Áëº°rÜbNu¸}º¼`niºÔXĄ¤¼ÔdaµÁ_ÃftQQgR·Ǔv}Ý×ĵ]µWc¤F²OĩųãW½¯K©]{LóµCIµ±Mß¿h©āq¬o½~@i~TUxŪÒ¢@£ÀEîôruńb[§nWuMÆLl¿]x}ĳ­½\"]],\"encodeOffsets\":[[[112158,27383]],[[112105,27474]],[[112095,27476]]]}},{\"type\":\"Feature\",\"id\":\"530000\",\"properties\":{\"id\":\"530000\",\"cp\":[101.512251,24.740609],\"name\":\"云南\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@[ùx½}ÑRHYīĺûsÍniEoã½Ya²ė{c¬ĝgĂsAØÅwďõzFjw}«Dx¿}Uũlê@HÅ­F¨ÇoJ´Ónũuą¡Ã¢pÒÅØ TF²xa²ËXcÊlHîAßËŁkŻƑŷÉ©hW­æßUËs¡¦}teèÆ¶StÇÇ}Fd£jĈZĆÆ¤Tč\\\\D}O÷£U§~ŃGåŃDĝ¸Tsd¶¶Bª¤u¢ŌĎo~t¾ÍŶÒtD¦ÚiôözØX²ghįh½Û±¯ÿm·zR¦Ɵ`ªŊÃh¢rOÔ´£Ym¼èêf¯ŪĽncÚbw\\\\zlvWªâ ¦gmĿBĹ£¢ƹřbĥkǫßeeZkÙIKueT»sVesbaĕ  ¶®dNĄÄpªy¼³BE®lGŭCǶwêżĔÂepÍÀQƞpC¼ŲÈ­AÎô¶RäQ^Øu¬°_Èôc´¹ò¨PÎ¢hlĎ¦´ĦÆ´sâÇŲPnÊD^¯°Upv}®BPÌªjǬxSöwlfòªvqĸ|`H­viļndĜ­Ćhňem·FyÞqóSį¯³X_ĞçêtryvL¤§z¦c¦¥jnŞklD¤øz½ĜàĂŧMÅ|áƆàÊcðÂFÜáŢ¥\\\\\\\\ºİøÒÐJĴîD¦zK²ǏÎEh~CD­hMn^ÌöÄ©ČZÀaüfɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~ÄqêljN¬¼HÊNQ´ê¼VØ¸E^ŃÒyM{JLoÒęæe±Ķygã¯JYÆĭĘëo¥Šo¯hcK«z_prC´ĢÖY¼ v¸¢RÅW³Â§fÇ¸Yi³xR´ďUË`êĿUûuĆBƣöNDH«ĈgÑaB{ÊNF´¬c·Åv}eÇÃGB»If¦HňĕM~[iwjUÁKE¾dĪçWIèÀoÈXòyŞŮÈXâÎŚj|àsRyµÖPr´þ ¸^wþTDŔHr¸RÌmfżÕâCôoxĜƌÆĮÐYtâŦÔ@]ÈǮƒ\\\\Ī¼Ä£UsÈ¯LbîƲŚºyhr@ĒÔƀÀ²º\\\\êpJ}ĠvqtĠ@^xÀ£È¨mËÏğ}n¹_¿¢×Y_æpÅA^{½Lu¨GO±Õ½ßM¶wÁĢÛPƢ¼pcĲx|apÌ¬HÐŊSfsðBZ¿©XÏÒKk÷Eû¿SrEFsÕūkóVǥŉiTL¡n{uxţÏhôŝ¬ğōNNJkyPaqÂğ¤K®YxÉƋÁ]āęDqçgOgILu\\\\_gz]W¼~CÔē]bµogpÑ_oď`´³Țkl`IªºÎȄqÔþ»E³ĎSJ»_f·adÇqÇc¥Á_Źw{L^É±ćxU£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏÉ¸½řÍcÊG|µƕƣGË÷k°_^ý|_zċBZocmø¯hhcæ\\\\lMFlư£ĜÆyHF¨µêÕ]HAàÓ^it `þßäkĤÎT~Wlÿ¨ÔPzUCNVv [jâôDôď[}z¿msSh¯{jïğl}šĹ[őgK©U·µË@¾m_~q¡f¹ÅË^»f³ø}Q¡ÖË³gÍ±^Ç\\\\ëÃA_¿bWÏ[¶ƛé£F{īZgm@|kHǭƁć¦UĔť×ë}ǝeďºȡȘÏíBÉ£āĘPªĳ¶ŉÿy©nď£G¹¡I±LÉĺÑdĉÜW¥}gÁ{aqÃ¥aıęÏZï`\"],\"encodeOffsets\":[[104636,22969]]}},{\"type\":\"Feature\",\"id\":\"540000\",\"properties\":{\"id\":\"540000\",\"cp\":[89.132212,30.860361],\"name\":\"西藏\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ÂhľxŖxÒVºÅâAĪÝȆµę¯Ňa±r_w~uSÕňqOj]ɄQ£ZUDûoY»©M[L¼qãË{VÍçWVi]ë©Ä÷àyƛhÚU°adcQ~Mx¥cc¡ÙaSyFÖk­uRýq¿ÔµQĽ³aG{¿FµëªéĜÿª@¬·K·àariĕĀ«V»ŶĴūgèLǴŇƶaftèBŚ£^âǐÝ®M¦ÁǞÿ¬LhJ¾óƾÆºcxwf]Y´¦|QLn°adĊ\\\\¨oǀÍŎ´ĩĀd`tÊQŞŕ|¨C^©Ĉ¦¦ÎJĊ{ëĎjª²rÐl`¼Ą[t|¦Stè¾PÜK¸dƄı]s¤î_v¹ÎVòŦj£Əsc¬_Ğ´|Ł¦Av¦w`ăaÝaa­¢e¤ı²©ªSªÈMĄwÉØŔì@T¤Ę\\\\õª@þo´­xA sÂtŎKzó´ÇĊµ¢r^nĊ­Æ¬×üG¢³ {âĊ]G~bÀgVjzlhǶfOfdªB]pjTOtĊn¤}®¦Č¥d¢¼»ddY¼t¢eȤJ¤}Ǿ¡°§¤AÐlc@ĝsªćļđAçwxUuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±Hãd«g[Ø¼ēÀcīľġ¬cJµÐʥVȝ¸ßS¹ý±ğkƁ¼ą^ɛ¤Ûÿb[}¬ōõÃ]ËNm®g@Bg}ÍF±ǐyL¥íCIĳÏ÷Ñį[¹¦[âšEÛïÁÉdƅß{âNÆāŨß¾ě÷yC£k­´ÓH@Â¹TZ¥¢į·ÌAÐ§®Zcv½Z­¹|ÅWZqgW|ieZÅYVÓqdqbc²R@c¥Rã»GeeƃīQ}J[ÒK¬Ə|oėjġĠÑN¡ð¯EBčnwôɍėª²CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛęgſ¶ҍć`ĘąŌJÞä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷f±iMÝ@ĥ°G¬ÃM¥n£Øąğ¯ß§aëbéüÑOčk£{\\\\eµª×MÉfm«Ƒ{Å×Gŏǩãy³©WÑăû··Qòı}¯ãIéÕÂZ¨īès¶ZÈsæĔTŘvgÌsN@îá¾ó@ÙwU±ÉTå»£TđWxq¹Zobs[×¯cĩvėŧ³BM|¹kªħ¥TzNYnÝßpęrñĠĉRS~½ěVVµõ«M££µBĉ¥áºae~³AuĐh`Ü³ç@BÛïĿa©|z²Ý¼D£àč²ŸIûI āóK¥}rÝ_Á´éMaň¨~ªSĈ½½KÙóĿeƃÆB·¬ën×W|Uº}LJrƳlŒµ`bÔ`QÐÓ@s¬ñIÍ@ûws¡åQÑßÁ`ŋĴ{ĪTÚÅTSÄ³Yo|Ç[Ç¾µMW¢ĭiÕØ¿@MhpÕ]jéò¿OƇĆƇpêĉâlØwěsǩĵ¸cbU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB\\\\qTGªÇĜçPoÿfñòą¦óQīÈáPābß{ZŗĸIæÅhnszÁCËìñÏ·ąĚÝUm®ó­L·ăUÈíoù´Êj°ŁŤ_uµ^°ìÇ@tĶĒ¡ÆM³Ģ«İĨÅ®ğRāðggheÆ¢zÊ©Ô\\\\°ÝĎz~ź¤PnMĪÖB£kné§żćĆKĒ°¼L¶èâz¨u¦¥LDĘz¬ýÎmĘd¾ßFzhg²Fy¦ĝ¤ċņbÎ@yĄæm°NĮZRÖíJ²öLĸÒ¨Y®ƌÐVàtt_ÚÂyĠz]ŢhzĎ{ÂĢXc|ÐqfO¢¤ögÌHNPKŖUú´xx[xvĐCûĀìÖT¬¸^}Ìsòd´_KgžLĴÀBon|H@Êx¦BpŰŌ¿fµƌA¾zǈRx¶FkĄźRzŀ~¶[´HnªVƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxǆBú^´W£dkɾĬpw˂ØɦļĬIŚÊnŔa¸~J°îlɌxĤÊÈðhÌ®gT´øàCÀ^ªerrƘd¢İP|Ė ŸWªĦ^¶´ÂLaT±üWƜǀRÂŶUńĖ[QhlLüAÜ\\\\qRĄ©\"],\"encodeOffsets\":[[90849,37210]]}},{\"type\":\"Feature\",\"id\":\"610000\",\"properties\":{\"id\":\"610000\",\"cp\":[108.948024,34.263161],\"name\":\"陕西\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@p¢ȮµûGĦ}Ħðǚ¶òƄjɂz°{ºØkÈęâ¦jªBg\\\\ċ°s¬]jú EȌǆ¬stRÆdĠİwÜ¸ôW¾ƮłÒ_{Ìû¼jº¹¢GǪÒ¯ĘZ`ºŊecņą~BÂgzpâēòYǠȰÌTÎ¨ÂW|fcă§uF@N¢XLRMº[ğȣſï|¥Jkc`sŉǷY¹W@µ÷Kãï³ÛIcñ·VȋÚÒķø©þ¥yÓğęmWµÎumZyOŅƟĥÓ~sÑL¤µaÅY¦ocyZ{y c]{Ta©`U_Ěē£ωÊƍKùK¶ȱÝƷ§{û»ÅÁȹÍéuĳ|¹cÑdìUYOuFÕÈYvÁCqÓTǢí§·S¹NgV¬ë÷Át°DØ¯C´ŉƒópģ}ċcEËFéGU¥×K§­¶³BČ}C¿åċ`wġB·¤őcƭ²ő[Å^axwQOÿEËßŚĤNĔwƇÄńwĪ­o[_KÓª³ÙnKÇěÿ]ďă_d©·©Ýŏ°Ù®g]±ßå¬÷m\\\\iaǑkěX{¢|ZKlçhLtŇîŵœè[É@ƉĄEtƇÏ³­ħZ«mJ×¾MtÝĦ£IwÄå\\\\Õ{OwĬ©LÙ³ÙgBƕŀrÌĢŭO¥lãyC§HÍ£ßEñX¡­°ÙCgpťzb`wIvA|§hoĕ@E±iYd¥OĻ¹S|}F@¾oAO²{tfÜ¢FǂÒW²°BĤh^Wx{@¬­F¸¡ķn£P|ªĴ@^ĠĈæbÔc¶lYi^MicĎ°Â[ävï¶gv@ÀĬ·lJ¸sn|¼u~a]ÆÈtŌºJpþ£KKf~¦UbyäIĺãnÔ¿^­ŵMThĠÜ¤ko¼Ŏìąǜh`[tRd²Ĳ_XPrɲlXiL§à¹H°Ȧqº®QCbAŌJ¸ĕÚ³ĺ§ `d¨YjiZvRĺ±öVKkjGȊÄePĞZmļKÀ[`ösìhïÎoĬdtKÞ{¬èÒÒBÔpĲÇĬJŊ¦±J«Y§@·pHµàåVKepWftsAÅqC·¬ko«pHÆuK@oHĆÛķhxenS³àǍrqƶRbzy¸ËÐl¼EºpĤ¼x¼½~Ğà@ÚüdK^mÌSj\"],\"encodeOffsets\":[[110234,38774]]}},{\"type\":\"Feature\",\"id\":\"620000\",\"properties\":{\"id\":\"620000\",\"cp\":[103.823557,36.058039],\"name\":\"甘肃\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@VuUv\"],[\"@@ũEĠtt~nkh`Q¦ÅÄÜdwAb×ĠąJ¤DüègĺqBqj°lI¡ĨÒ¤úSHbjÎB°aZ¢KJO[|A£Dx}NĂ¬HUnrk kp¼Y kMJn[aGáÚÏ[½rc}aQxOgsPMnUsncZsKúvAtÞġ£®ĀYKdnFw¢JE°Latf`¼h¬we|Æbj}GA·~W`¢MC¤tL©Ĳ°qdfObÞĬ¹ttu`^ZúE`[@Æsîz®¡CƳƜG²R¢RmfwĸgÜą G@pzJM½mhVy¸uÈÔO±¨{LfæU¶ßGĂq\\\\ª¬²I¥IŉÈīoıÓÑAçÑ|«LÝcspīðÍgtë_õ\\\\ĉñLYnĝgRǡÁiHLlõUĹ²uQjYi§Z_c¨´ĹĖÙ·ŋIaBD­R¹ȥr¯GºßK¨jWkɱOqWĳ\\\\a­Q\\\\sg_ĆǛōëp»£lğÛgSŶN®À]ÓämĹãJaz¥V}Le¤Lýo¹IsŋÅÇ^bz³tmEÁ´a¹cčecÇNĊãÁ\\\\č¯dNj]jZµkÓdaćå]ğĳ@ ©O{¤ĸm¢E·®«|@Xwg]Aģ±¯XǁÑǳªcwQÚŝñsÕ³ÛV_ý¥\\\\ů¥©¾÷w©WÕÊĩhÿÖÁRo¸V¬âDb¨hûxÊ×ǌ~Zâg|XÁnßYoº§ZÅŘv[ĭÖʃuďxcVbnUSfB¯³_TzºÎO©çMÑ~M³]µ^püµÄY~y@X~¤Z³[Èōl@®Å¼£QK·Di¡ByÿQ_´D¥hŗy^ĭÁZ]cIzýah¹MĪğPs{ò²Vw¹t³ŜË[Ñ}X\\\\gsF£sPAgěp×ëfYHāďÖqēŭOÏëdLü\\\\it^c®RÊº¶¢H°mrY£B¹čIoľu¶uI]vģSQ{UŻÅ}QÂ|Ì°ƅ¤ĩŪU ęĄÌZÒ\\\\v²PĔ»ƢNHĂyAmƂwVm`]ÈbH`Ì¢²ILvĜH®¤Dlt_¢JJÄämèÔDëþgºƫaʎÌrêYi~ Îİ¤NpÀA¾Ĕ¼bð÷®üszMzÖĖQdȨýv§Tè|ªHÃ¾a¸|Ð ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\\\h¹¶v·À|\\\\ƁĚN´ĜçèÁz]ġ¤²¨QÒŨTIlªťØ}¼˗ƦvÄùØEÂ«FïËIqōTvāÜŏíÛßÛVj³âwGăÂíNOPìyV³ŉĖýZso§HÑiYw[ß\\\\X¦¥c]ÔƩÜ·«jÐqvÁ¦m^ċ±R¦΋ƈťĚgÀ»IïĨʗƮ°ƝĻþÍAƉſ±tÍEÕÞāNUÍ¡\\\\ſčåÒʻĘm ƭÌŹöʥëQ¤µ­ÇcƕªoIýIÉ_mkl³ăƓ¦j¡YzŇi}Msßõīʋ }ÁVm_[n}eı­Uĥ¼ªI{Î§DÓƻėojqYhĹT©oūĶ£]ďxĩǑMĝq`B´ƃ˺Чç~²ņj@¥@đ´ί}ĥtPńÇ¾V¬ufÓÉCtÓ̻¹£G³]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼĤŊɲĖÂ­Kq´ï¦ºĒǲņɾªǀÞĈĂD½ĄĎÌŗĞrôñnN¼â¾ʄľԆ|Ǆ֦ज़ȗǉ̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏĳëCȚDŲyê×Ŗyò¯ļcÂßYtÁƤyAã˾J@ǝrý@¤rz¸oP¹ɐÚyáHĀ[JwcVeȴÏ»ÈĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔĹŊũ~ËUă{ĻƹɁύȩþĽvĽƓÉ@ēĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶¨c~c¼īeXǚ\\\\đ¾JwÀďksãAfÕ¦L}waoZD½Ml«]eÒÅaÉ²áo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LFLzĈôe]gx}|KK}xklL]c¦£fRtív¦PĤoH{tK\"]],\"encodeOffsets\":[[[108619,36299]],[[108589,36341]]]}},{\"type\":\"Feature\",\"id\":\"630000\",\"properties\":{\"id\":\"630000\",\"cp\":[96.778916,35.623178],\"name\":\"青海\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@InJm\"],[\"@@CÆ½OŃĦsΰ~Ē³¦@@Ņi±è}ШƄ˹A³r_ĞǒNĪĐw¤^ŬĵªpĺSZgrpiƼĘÔ¨C|ÍJ©Ħ»®VĲ~f\\\\m `UnÂ~ʌĬàöNt~ňjy¢ZiƔ¥Ąk´nl`JÊJþ©pdƖ®È£¶ìRʦźõƮËnʼėæÑƀĎ[¢VÎĂMÖÝÎF²sƊƀÎBļýƞ¯ʘƭðħ¼Jh¿ŦęΌƇ¥²Q]Č¥nuÂÏri¸¬ƪÛ^Ó¦d¥[Wàx\\\\ZjÒ¨GtpþYŊĕ´zUOëPîMĄÁxH´áiÜUàîÜŐĂÛSuŎrJðÌ¬EFÁú×uÃÎkrĒ{V}İ«O_ÌËĬ©ÓŧSRÑ±§Ģ£^ÂyèçěM³Ƃę{[¸¿uºµ[gt£¸OƤĿéYõ·kĀq]juw¥DĩƍõÇPéÄ½G©ã¤GuȧþRcÕĕNyyût­øï»a½ē¿BMoį£Íj}éZËqbʍƬh¹ìÿÓAçãnIÃ¡I`ks£CG­ěUy×Cy@¶ʡÊBnāzGơMē¼±O÷õJËĚăVĪũƆ£¯{ËL½ÌzżVR|ĠTbuvJvµhĻĖHAëáa­OÇðñęNwœľ·LmI±íĠĩPÉ×®ÿscB³±JKßĊ«`ađ»·QAmOVţéÿ¤¹SQt]]Çx±¯A@ĉĳ¢Óļ©l¶ÅÛrŕspãRk~¦ª]Į­´FRåd­ČsCqđéFn¿ÅƃmÉx{W©ºƝºįkÕƂƑ¸wWūÐ©ÈF£\\\\tÈ¥ÄRÈýÌJ lGr^×äùyÞ³fjc¨£ÂZ|ǓMĝÏ@ëÜőRĝ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³­ÞIňµç½©C¡į÷¯B»|St»]vųs»}MÓ ÿʪƟǭA¡fs»PY¼c¡»¦cċ­¥£~msĉPSi^o©AecPeǵkgyUi¿h}aHĉ^|á´¡HØûÅ«ĉ®]m¡qĉ¶³ÈyôōLÁstB®wn±ă¥HSòė£Së@×œÊăxÇN©©T±ª£Ĳ¡fb®Þbb_Ą¥xu¥B{łĝ³«`dƐt¤ťiñÍUuºí`£^tƃĲc·ÛLO½sç¥Ts{ă\\\\_»kÏ±q©čiìĉ|ÍI¥ć¥]ª§D{ŝŖÉR_sÿc³ĪōƿÎ§p[ĉc¯bKmR¥{³Ze^wx¹dƽÅ½ôIg §Mĕ ƹĴ¿ǣÜÍ]Ý]snåA{eƭ`ǻŊĿ\\\\ĳŬűYÂÿ¬jĖqßb¸L«¸©@ěĀ©ê¶ìÀEH|´bRľÓ¶rÀQþvl®ÕETzÜdb hw¤{LRdcb¯ÙVgƜßzÃôì®^jUèXÎ|UäÌ»rK\\\\ªN¼pZCüVY¤ɃRi^rPŇTÖ}|br°qňbĚ°ªiƶGQ¾²x¦PmlŜ[Ĥ¡ΞsĦÔÏâ\\\\ªÚŒU\\\\f¢N²§x|¤§xĔsZPòʛ²SÐqF`ªVÞŜĶƨVZÌL`¢dŐIqr\\\\oäõFÎ·¤»Ŷ×h¹]ClÙ\\\\¦ďÌį¬řtTӺƙgQÇÓHţĒ´ÃbEÄlbʔC|CŮkƮ[ʼ¬ň´KŮÈΰÌĪ¶ƶlðļATUvdTGº̼ÔsÊDÔveOg\"]],\"encodeOffsets\":[[[105308,37219]],[[95370,40081]]]}},{\"type\":\"Feature\",\"id\":\"640000\",\"properties\":{\"id\":\"640000\",\"cp\":[106.278179,37.26637],\"name\":\"宁夏\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@KëÀęĞ«Oęȿȕı]ŉ¡åįÕÔ«ǴõƪĚQÐZhv K°öqÀÑS[ÃÖHƖčËnL]ûcÙß@ĝ¾}w»»oģF¹»kÌÏ·{zP§B­¢íyÅt@@á]Yv_ssģ¼ißĻL¾ġsKD£¡N_X¸}B~HaiÅf{«x»ge_bsKF¯¡IxmELcÿZ¤­ĢÝsuBLùtYdmVtNmtOPhRw~bd¾qÐ\\\\âÙH\\\\bImlNZ»loqlVmGā§~QCw¤{A\\\\PKNY¯bFkC¥sks_Ã\\\\ă«¢ħkJi¯rrAhĹûç£CUĕĊ_ÔBixÅÙĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~hw^ófćKyE­K­zuÔ¡qQ¤xZÑ¢^ļöÜ¾Ep±âbÊÑÆ^fk¬NC¾YpxbK~¥eÖäBlt¿Đx½I[ĒǙWf»Ĭ}d§dµùEuj¨IÆ¢¥dXªƅx¿]mtÏwßRĶX¢͎vÆzƂZò®ǢÌʆCrâºMÞzÆMÒÊÓŊZÄ¾r°Î®Ȉmª²ĈUªĚîøºĮ¦ÌĘk^FłĬhĚiĀĖ¾iİbjÕ\"],[\"@@mfwěwMrŢªv@G\"]],\"encodeOffsets\":[[[109366,40242]],[[108600,36303]]]}},{\"type\":\"Feature\",\"id\":\"650000\",\"properties\":{\"id\":\"650000\",\"cp\":[85.617733,40.792818],\"name\":\"新疆\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@QØĔ²X¨~ǘBºjʐßØvKƔX¨vĊOÃ·¢i@~cĝe_«E}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuXêÎf`C¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥OéÈ¿ÖğǤǷÂFÒzÉx[]­Ĥĝœ¦EP}ûƥé¿İƷTėƫœŕƅƱB»Đ±ēO¦E}`cȺrĦáŖuÒª«ĲπdƺÏØZƴwʄ¤ĖGĐǂZĶèH¶}ÚZצʥĪï|ÇĦMŔ»İĝǈì¥Βba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»òmqóŘĝčË¾ăCćāƿÝɽ©ǱŅ¹đ¥³ðLrÁ®ɱĕģŉǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕUv£ƁQïƵkŏ½ΉÃŭÇ³LŇʻ«ƭ\\\\lŭD{ʓDkaFÃÄa³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍöůŉT¡c_ËKYƧUśĵÝU_©rETÏʜ±OñtYwē¨{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\\\śnkOw¥±T»ƷFɯàĩÞáB¹ÆÑUwŕĽw[mG½Èå~Æ÷QyěCFmĭZīŵVÁƿQƛûXS²b½KÏ½ĉS©ŷXĕ{ĕK·¥Ɨcqq©f¿]ßDõU³h­gËÇïģÉɋwk¯í}I·œbmÉřīJɥĻˁ×xoɹīlc¤³Xù]ǅA¿w͉ì¥wÇN·ÂËnƾƍdÇ§đ®ƝvUm©³G\\\\}µĿQyŹlăµEwǇQ½yƋBe¶ŋÀůo¥AÉw@{Gpm¿AĳŽKLh³`ñcËtW±»ÕSëüÿďDu\\\\wwwù³VLŕOMËGh£õP¡erÏd{ġWÁč|yšg^ğyÁzÙs`s|ÉåªÇ}m¢Ń¨`x¥ù^}Ì¥H«YªƅAÐ¹n~ź¯f¤áÀzgÇDIÔ´AňĀÒ¶ûEYospõD[{ù°]uJqU|Soċxţ[õÔĥkŋÞŭZËºóYËüċrw ÞkrťË¿XGÉbřaDü·Ē÷AÃª[ÄäIÂ®BÕĐÞ_¢āĠpÛÄȉĖġDKwbmÄNôfƫVÉviǳHQµâFù­Âœ³¦{YGd¢ĚÜO {Ö¦ÞÍÀP^bƾl[vt×ĈÍEË¨¡Đ~´î¸ùÎhuè`¸HÕŔVºwĠââWò@{ÙNÝ´ə²ȕn{¿¥{l÷eé^eďXj©î\\\\ªÑòÜìc\\\\üqÕ[Č¡xoÂċªbØ­ø|¶ȴZdÆÂońéG\\\\¼C°ÌÆn´nxÊOĨŪƴĸ¢¸òTxÊǪMīĞÖŲÃɎOvʦƢ~FRěò¿ġ~åŊúN¸qĘ[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾ĄYÒ©ÊfºmÔĘcDoĬMŬS¤s²ʘÚžȂVŦ èW°ªB|ĲXŔþÈJĦÆæFĚêYĂªĂ]øªŖNÞüAfɨJ¯ÎrDDĤ`mz\\\\§~D¬{vJÂ«lµĂb¤pŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMTòP÷fØĶK¢ȝ˔Sô¹òEð­`Ɩ½ǒÂň×äı§ĤƝ§C~¡hlåǺŦŞkâ~}FøàĲaĞfƠ¥Ŕd®U¸źXv¢aƆúŪtŠųƠjdƺƺÅìnrh\\\\ĺ¯äɝĦ]èpĄ¦´LƞĬ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹\\\\ĜÑŚ¶ZƄ³àjĨoâȴLÊȮĐ­ĚăÀêZǚŐ¤qȂ\\\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTiƢ¾ªì°`öøu®Ê¾ãØ\"],\"encodeOffsets\":[[88824,50096]]}},{\"type\":\"Feature\",\"id\":\"110000\",\"properties\":{\"id\":\"110000\",\"cp\":[116.405285,39.904989],\"name\":\"北京\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ĽOÁûtŷmiÍt_H»Ĩ±d`¹­{bwYr³S]§§o¹qGtm_SŧoaFLgQN_dV@Zom_ć\\\\ßcÂ±x¯oœRcfe£o§ËgToÛJíĔóu|wP¤XnO¢ÉŦ¯rNÄā¤zâŖÈRpŢZÚ{GrFt¦Òx§ø¹RóäV¤XdżâºWbwŚ¨Ud®bêņ¾jnŎGŃŶnzÚSeîĜZczî¾i]ÍQaúÍÔiþĩȨWĢü|Ėu[qb[swP@ÅğP¿{\\\\¥A¨ÏÑ¨j¯X\\\\¯MKpA³[Hīu}}\"],\"encodeOffsets\":[[120023,41045]]}},{\"type\":\"Feature\",\"id\":\"120000\",\"properties\":{\"id\":\"120000\",\"cp\":[117.190182,39.125596],\"name\":\"天津\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ŬgX§Ü«E¶FÌ¬O_ïlÁgz±AXeµÄĵ{¶]gitgIj·¥îakS¨ÐƎk}ĕ{gBqGf{¿aU^fIư³õ{YıëNĿk©ïËZŏR§òoY×Ógcĥs¡bġ«@dekąI[nlPqCnp{ō³°`{PNdƗqSÄĻNNâyj]äÒD ĬH°Æ]~¡HO¾X}ÐxgpgWrDGpù^LrzWxZ^¨´T\\\\|~@IzbĤjeĊªz£®ĔvěLmV¾Ô_ÈNW~zbĬvG²ZmDM~~\"],\"encodeOffsets\":[[120237,41215]]}},{\"type\":\"Feature\",\"id\":\"310000\",\"properties\":{\"id\":\"310000\",\"cp\":[121.472644,31.231706],\"name\":\"上海\",\"childNum\":6},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@ɧư¬EpƸÁxc\"],[\"@@©ª\"],[\"@@MA\"],[\"@@QpİE§ÉC¾\"],[\"@@bŝÕÕEȣÚƥêImɇǦèÜĠÚÃƌÃ͎ó\"],[\"@@ǜûȬɋŭ×^sYɍDŋŽąñCG²«ªč@h_p¯A{oloY¬j@Ĳ`gQÚhr|ǀ^MĲvtbe´R¯Ô¬¨Yô¤r]ìƬį\"]],\"encodeOffsets\":[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]}},{\"type\":\"Feature\",\"id\":\"500000\",\"properties\":{\"id\":\"500000\",\"cp\":[107.304962,29.533155],\"name\":\"重庆\",\"childNum\":2},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êÐqHðqĖä¥^CÆIj²p\\\\_ æüY|[YxƊæu°xb®Űb@~¢NQt°¶Sæ Ê~rǉĔëĚ¢~uf`faĔJåĊnÖ]jƎćÊ@£¾a®£Ű{ŶĕFègLk{Y|¡ĜWƔtƬJÑxq±ĢN´òKLÈÃ¼D|s`ŋć]Ã`đMûƱ½~Y°ħ`ƏíW½eI½{aOIrÏ¡ĕŇapµÜƅġ^ÖÛbÙŽŏml½SêqDu[RãË»ÿw`»y¸_ĺę}÷`M¯ċfCVµqŉ÷Zgg`d½pDOÎCn^uf²ènh¼WtƏxRGg¦pVFI±G^Ic´ecGĹÞ½sëĬhxW}KÓe­XsbkF¦LØgTkïƵNï¶}Gyw\\\\oñ¡nmĈzj@Óc£»Wă¹Ój_m»¹·~MvÛaq»­ê\\\\ÂoVnÓØÍ²«bq¿efE Ĝ^Q~ Évýş¤²ĮpEİ}zcĺL½¿gÅ¡ýE¡ya£³t\\\\¨\\\\vú»¼§·Ñr_oÒý¥u_n»_At©ÞÅ±ā§IVeëY}{VPÀFA¨ąB}q@|Ou\\\\FmQFÝMwå}]|FmÏCawu_p¯sfÙgYDHl`{QEfNysB¦zG¸rHeN\\\\CvEsÐùÜ_·ÖĉsaQ¯}_UxÃđqNH¬Äd^ÝŰR¬ã°wećJE·vÝ·HgéFXjÉê`|ypxkAwWĐpb¥eOsmzwqChóUQl¥F^lafanòsrEvfQdÁUVfÎvÜ^eftET¬ôA\\\\¢sJnQTjPØxøK|nBzĞ»LYFDxÓvr[ehľvN¢o¾NiÂxGpâ¬zbfZo~hGi]öF||NbtOMn eA±tPTLjpYQ|SHYĀxinzDJÌg¢và¥Pg_ÇzIIII£®S¬ØsÎ¼£N\"],[\"@@ifjN@s\"]],\"encodeOffsets\":[[[109628,30765]],[[111725,31320]]]}},{\"type\":\"Feature\",\"id\":\"810000\",\"properties\":{\"id\":\"810000\",\"cp\":[114.173355,22.320048],\"name\":\"香港\",\"childNum\":5},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@AlBk\"],[\"@@mn\"],[\"@@EpFo\"],[\"@@ea¢pl¸Eõ¹hj[]ÔCÎ@lj¡uBX´AI¹[yDU]W`çwZkmcMpÅv}IoJlcafŃK°ä¬XJmÐ đhI®æÔtSHnEÒrÈc\"],[\"@@rMUwAS®e\"]],\"encodeOffsets\":[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]}},{\"type\":\"Feature\",\"id\":\"820000\",\"properties\":{\"id\":\"820000\",\"cp\":[113.54909,22.198951],\"name\":\"澳门\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@kÊd°å§s\"],\"encodeOffsets\":[[116279,22639]]}}],\"UTF8Encoding\":true}\n\nFile v0.1.0:references/config.example.toml\n\n[supabase]\n# 复制本文件为 config.toml 并填入真实凭据\nurl = \"https://YOUR-PROJECT.supabase.co\"\nkey = \"YOUR-ANON-OR-SERVICE-KEY\"\ntable = \"news\"\n\nFile v0.1.0:references/news_sample.json\n\n[\n  {\n    \"time\": \"2026-08-15 09:20\",\n    \"category\": \"财富管理\",\n    \"direction\": \"存款理财\",\n    \"company\": \"招商银行\",\n    \"city\": \"上海\",\n    \"coord\": [121.47, 31.23],\n    \"title\": \"招行私行上线 AI 资产配置助手，按客户风险偏好自动生成组合\",\n    \"link\": \"https://example.com/news/cmb-ai-alloc\",\n    \"event\": \"招商银行私人银行部在「招赢」App 内测 AI 资产配置助手，基于客户风险测评、持仓与现金流，自动生成跨存款、理财、公募基金的动态组合建议，并支持一键再平衡。内测客群为可投资产 600 万以上客户，首批覆盖 12 家分行。系统每日根据市场波动重算建议，客户经理可在后台查看客户组合偏离度。\",\n    \"why\": \"财富管理正从「卖产品」转向「管组合」，AI 把过去依赖客户经理经验的组合建议标准化、可规模化，且能持续陪伴式服务，契合高净值客户对专业性与时效性的双重需求。\",\n    \"innovation\": \"以客户全生命周期现金流为锚做动态资产配置，而非单点产品推荐；组合偏离度可视化，把「售后陪伴」产品化。\",\n    \"learn\": \"平安私人银行可借鉴其「组合偏离度」看板，把综拓客户从单产品销售升级为组合陪伴，用 AI 降低对顶尖客户经理的依赖，放大综拓渠道产能。\"\n  },\n  {\n    \"time\": \"2026-08-15 08:45\",\n    \"category\": \"财富管理\",\n    \"direction\": \"公募私募\",\n    \"company\": \"工银理财\",\n    \"city\": \"北京\",\n    \"coord\": [116.40, 39.90],\n    \"title\": \"工银理财推出「目标盈」最短持有期公募，达标自动止盈\",\n    \"link\": \"https://example.com/news/icbc-licai-target\",\n    \"event\": \"工银理财发行「目标盈」系列最短持有期公募理财产品，设定年化收益目标区间，达到目标收益后系统自动触发止盈并提示赎回，未达目标则继续运作至最长持有期。产品主打「收益可视化、止盈自动化」，通过 App 推送达标提醒，降低客户择时焦虑。首批挂钩固收+与量化中性策略。\",\n    \"why\": \"理财净值化后客户最痛点是「不知道何时落袋」，自动止盈机制把收益确定性前置，显著提升持有体验与复购率，是理财子公司产品设计的差异化方向。\",\n    \"innovation\": \"把「止盈」从客户行为变为产品内嵌机制，用规则替代人工择时，降低行为金融学上的处置效应损耗。\",\n    \"learn\": \"平安理财可参考「目标盈」机制，在平安口袋银行设置达标自动提醒与一键赎回，结合综拓客户画像做分层止盈策略，提升客户留存。\"\n  },\n  {\n    \"time\": \"2026-08-15 08:10\",\n    \"category\": \"财富管理\",\n    \"direction\": \"信托\",\n    \"company\": \"平安信托\",\n    \"city\": \"上海\",\n    \"coord\": [121.50, 31.20],\n    \"title\": \"平安信托上线家庭服务信托「线上设立 + 智能分配」\",\n    \"link\": \"https://example.com/news/pats-trust-family\",\n    \"event\": \"平安信托将家庭服务信托（门槛 100 万）的设立流程线上化，客户通过视频双录与电子签约完成设立，平均时效由 15 天压缩至 3 天。系统内置「智能分配」引擎，可按子女教育、养老、医疗等场景自动触发资金划拨，并支持受益人条件变更线上审批。\",\n    \"why\": \"家庭服务信托是信托普惠化关键品类，线上化把服务门槛与运营成本双降，使中产家庭也能用信托做财富传承与风险隔离，打开增量客群。\",\n    \"innovation\": \"把信托的「事务管理」能力产品化、自动化，用规则引擎替代人工审单，实现「设立-分配-变更」全流程线上闭环。\",\n    \"learn\": \"可借鉴其线上双录与智能分配，复用平安银行远程银行与远程双录能力，把家庭信托作为综拓高客的标配配置工具。\"\n  },\n  {\n    \"time\": \"2026-08-14 21:30\",\n    \"category\": \"财富管理\",\n    \"direction\": \"银保\",\n    \"company\": \"中邮保险\",\n    \"city\": \"北京\",\n    \"coord\": [116.40, 39.95],\n    \"title\": \"中邮保险联手邮储推「理财+养老险」组合银保方案\",\n    \"link\": \"https://example.com/news/psbc-bancassurance\",\n    \"event\": \"中邮保险依托邮储银行网点，推出「稳健理财+专属养老险」组合方案，柜员通过统一话术在开户环节即完成保障与增值的双重配置，系统根据客户年龄自动匹配缴费期与领取节点。方案配套网点智能屏，实时演示组合长期收益与保障缺口。\",\n    \"why\": \"银保渠道长期陷于「炒停售、拼收益」，组合化方案把保障嵌入资产配置，提升件均保费与客户黏性，是银保价值转型的可复制路径。\",\n    \"innovation\": \"把养老险作为理财的「安全垫」而非独立销售，用组合视角重构银保话术与中收结构。\",\n    \"learn\": \"平安银保可借鉴组合化打法，用「新一贷白领客户 + 年金险」做交叉销售，把贷款客户生命周期价值延伸至保障端。\"\n  },\n  {\n    \"time\": \"2026-08-15 09:05\",\n    \"category\": \"银行贷款\",\n    \"direction\": \"个人信用贷款\",\n    \"company\": \"平安银行\",\n    \"city\": \"深圳\",\n    \"coord\": [114.06, 22.54],\n    \"title\": \"平安银行「新一贷」升级白领预授信，公积金数据实时建模\",\n    \"link\": \"https://example.com/news/pab-xinyidai\",\n    \"event\": \"平安银行升级「新一贷」白领方案，打通多地公积金、社保与个税数据，客户授权后实时生成预授信额度，最快 3 分钟出额、T+0 放款。针对政府、金融、国企员工推出专属利率与还款弹性，并通过寿险代理人渠道合规触达，规避总部直送实物的监管限制。\",\n    \"why\": \"在网点劣势下，数字预授信 + 代理人渠道是平安错位竞争招行地推的关键抓手，把「白名单获客」变成「数据实时建额」，直接拉升贷款建额数与过件率。\",\n    \"innovation\": \"用公积金/社保替代收入证明做实时风控建模，并借代理人关系链做合规获客，重构了信用贷的获客-风控-放款链路。\",\n    \"learn\": \"这正是综拓 2.0 的标杆落点：把已有战略 OnePINGAN「一个客户、一个账户、多种产品」首次变成可计算的技术实现——客户刚需、渠道利他、闭环可追踪。\"\n  },\n  {\n    \"time\": \"2026-08-15 07:50\",\n    \"category\": \"银行贷款\",\n    \"direction\": \"信用卡分期\",\n    \"company\": \"招商银行\",\n    \"city\": \"上海\",\n    \"coord\": [121.47, 31.25],\n    \"title\": \"招行信用卡「掌上生活」上线场景分期，车位/装修即时授信\",\n    \"link\": \"https://example.com/news/cmb-card-stage\",\n    \"event\": \"招商银行信用卡在「掌上生活」App 上线场景分期，覆盖车位、装修、教育、医美等高频大额消费，客户在合作商户页面即可一键申请、实时授信、分期免息券自动叠加。系统基于商户白名单与交易真实性做风控，分期渗透率较通用账单分期提升显著。\",\n    \"why\": \"分期竞争已从利率价格战转向场景嵌入，谁离交易更近谁就掌握获客入口；招行把分期前置到消费决策瞬间，大幅提升转化。\",\n    \"innovation\": \"分期即场景、场景即风控——用真实交易核销替代人工尽调，把授信放到客户决策链路的最后一米。\",\n    \"learn\": \"平安信用卡可借鉴场景前置，结合平安好车主、汽车之家等生态，在车位/充电桩/保养场景嵌入分期，复用集团场景流量。\"\n  },\n  {\n    \"time\": \"2026-08-14 19:15\",\n    \"category\": \"银行贷款\",\n    \"direction\": \"汽融\",\n    \"company\": \"丰田金融\",\n    \"city\": \"东京\",\n    \"coord\": [139.69, 35.69],\n    \"title\": \"丰田金融推「电池即服务」订阅贷，车电分离按月付费\",\n    \"link\": \"https://example.com/news/toyota-fs-battery\",\n    \"event\": \"丰田金融在日本市场推出新能源车「电池即服务」订阅式贷款，车身与电池分别计价，客户按月支付电池订阅费，降低购车门槛。贷款期限与订阅可灵活组合，残值风险由厂商金融承担，配套 App 显示续航与订阅账单。\",\n    \"why\": \"车电分离把高残值不确定性的电池变成可订阅服务，既降低客户首付又锁定长期金融关系，是车企金融应对电动化的产品范式创新。\",\n    \"innovation\": \"把「资产」拆成「资产+服务订阅」双现金流，用金融设计化解电动化残值焦虑，重构车企金融的客群生命周期。\",\n    \"learn\": \"平安汽融可研究车电分离金融产品，联合新能源车企在充电/换电场景做订阅式金融，把一次性车贷变成长期服务收入。\"\n  },\n  {\n    \"time\": \"2026-08-14 16:40\",\n    \"category\": \"银保保险\",\n    \"direction\": \"保险\",\n    \"company\": \"中国平安\",\n    \"city\": \"上海\",\n    \"coord\": [121.49, 31.23],\n    \"title\": \"平安人寿上线「AI 健康管家」绑定重疾险动态核保\",\n    \"link\": \"https://example.com/news/pingan-ai-health\",\n    \"event\": \"平安人寿在「平安金管家」上线 AI 健康管家，客户授权可穿戴与体检数据后，系统动态评估健康风险并反向优化重疾险核保结论与保费。连续达标客户可获得保费折扣与绿色理赔通道，形成「健康管理-保险定价」正反馈闭环。\",\n    \"why\": \"保险从「事后赔付」走向「事前健康管理」，用数据把风险可计算、可干预，既降赔付率又增客户黏性，是健康险差异化的核心。\",\n    \"innovation\": \"把可穿戴数据变为动态核保因子，让保费随健康行为浮动，重构了保险的风险定价与用户激励模型。\",\n    \"learn\": \"可借鉴动态核保，在平安银行财富客户中叠加健康险，用银行体检/私行权益数据做交叉核保，提升保障渗透率。\"\n  },\n  {\n    \"time\": \"2026-08-14 14:05\",\n    \"category\": \"银保保险\",\n    \"direction\": \"保险\",\n    \"company\": \"保诚 Prudential\",\n    \"city\": \"伦敦\",\n    \"coord\": [-0.13, 51.51],\n    \"title\": \"保诚推出 parametric 气候险，灾害触发自动理赔\",\n    \"link\": \"https://example.com/news/prudential-parametric\",\n    \"event\": \"保诚在英国推出参数化（parametric）气候相关保险，以气象指数（风速、降雨量、温度）为触发条件，达到阈值即自动核赔、T+1 到账，无需人工查勘。产品面向中小企业与农业客户，通过 API 嵌入银行对公渠道销售。\",\n    \"why\": \"参数化保险用「可计算的自然事件」替代「损失核定」，把理赔从数周压缩到数小时，极大提升体验与可及性，是保险科技的重要方向。\",\n    \"innovation\": \"把理赔逻辑重写为「指数触发自动支付」，消除查勘与欺诈摩擦，使保险可嵌入任意交易与生态。\",\n    \"learn\": \"平安产险可借鉴参数化思路，在小微企业主贷款中捆绑天气/营业中断参数险，用自动理赔稳定客户还款能力。\"\n  },\n  {\n    \"time\": \"2026-08-15 06:30\",\n    \"category\": \"财富管理\",\n    \"direction\": \"私人银行\",\n    \"company\": \"瑞银 UBS\",\n    \"city\": \"苏黎世\",\n    \"coord\": [8.54, 47.37],\n    \"title\": \"瑞银全球家族办公室平台接入生成式 AI 投研助手\",\n    \"link\": \"https://example.com/news/ubs-gfo-ai\",\n    \"event\": \"瑞银将其全球家族办公室平台接入生成式 AI 投研助手，家办客户可用自然语言查询跨市场资产配置、税务与传承方案，AI 基于瑞银研报与组合数据生成摘要与情景模拟。系统通过权限隔离保障各家族数据私密，并保留人工顾问终审。\",\n    \"why\": \"生成式 AI 把顶尖投研能力普惠到更多家族，降低对稀缺顾问的依赖，是私行服务规模化与个性化的平衡点，代表财富管理智能化前沿。\",\n    \"innovation\": \"用 LLM 把非结构化研报与结构化组合数据融合为可对话的投研界面，重定义了「什么才可被计算」。\",\n    \"learn\": \"平安私人银行可借鉴「对话式投研」，把麦肯锡式研报与组合数据接入平安大模型，向综拓高客提供可解释的资产配置对话。\"\n  },\n  {\n    \"time\": \"2026-08-14 22:50\",\n    \"category\": \"银行贷款\",\n    \"direction\": \"小微企业主贷款\",\n    \"company\": \"摩根大通 JPMorgan\",\n    \"city\": \"纽约\",\n    \"coord\": [-74.01, 40.71],\n    \"title\": \"摩根大通小企贷嵌入收银系统，按流水实时授信\",\n    \"link\": \"https://example.com/news/jpm-spending\",\n    \"event\": \"摩根大通将小企业贷款嵌入其收银与银行流水系统，商户日常收款数据实时回流，系统据现金流稳定性动态给予授信额度与利率，旺季自动提额、淡季提醒。贷款随经营节奏浮动，无需固定抵押，配套现金流预警与税务自动归档。\",\n    \"why\": \"小微信贷的核心痛点是「数据薄、波动大」，把授信嵌入经营系统让现金流自己说话，既控风险又提升客户体验，是数字小微的范本。\",\n    \"innovation\": \"让授信额度随真实经营流水呼吸，用嵌入式金融把银行能力长在客户的收银台里，而非客户来找银行。\",\n    \"learn\": \"平安普惠可借鉴嵌入式小微，把授信接入平安商户收单与好生意生态，用流水实时建额，呼应综拓对小微主客群的覆盖。\"\n  }\n]\n\nFile v0.1.0:skill-card.md\n\n## Description:\n\nBuilds offline, self-contained finance and industry news map reports from real searched news, placing items on China or world maps and summarizing trends with executive guidance.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[forrestneo](https://clawhub.ai/user/forrestneo)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and business users use this skill to collect real finance or industry news, normalize and deduplicate it, and generate an offline HTML map with an executive suggestion panel for intelligence briefings.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Generated reports can execute untrusted news content as browser script.\n\nMitigation: Use only trusted or sanitized news inputs and avoid sharing generated HTML created from untrusted data.\n\nRisk: The artifact documentation includes unsafe TLS-verification disabling guidance.\n\nMitigation: Do not follow TLS-verification disabling workarounds; resolve certificate validation issues through approved environment or certificate configuration.\n\nRisk: Supabase push is an explicit data-upload action when enabled.\n\nMitigation: Use a least-privilege key and table, and enable remote sync only when the user intentionally provides the configuration.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/forrestneo/skills/finance-news-warmap)\n- [Server-resolved source repository](https://github.com/forrestneo/finance-news-warmap)\n- [Artifact README](artifact/README.md)\n- [Skill workflow](artifact/SKILL.md)\n- [Build script](artifact/references/build.py)\n- [Pipeline script](artifact/references/pipeline.py)\n- [HTML template](artifact/references/template.html)\n- [Supabase configuration example](artifact/references/config.example.toml)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance, Files]\n\n**Output Format:** [Markdown guidance with inline shell commands, JSON or XLSX data inputs, and generated self-contained HTML files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Generated HTML is designed to be offline-capable; optional Supabase sync requires explicit user-provided configuration.]\n\n## Skill Version(s):\n\n0.1.0 (source: server release metadata; artifact frontmatter and release changelog mention 1.1.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.1.0:requirements.txt\n\n# 核心依赖（build.py / pipeline.py 必需）\nopenpyxl>=3.1\n\n# 可选依赖（仅在使用 pull / push 同步 Supabase 时需要）\n# supabase>=2.0","readmeExcerpt":"Skill: finance-news-warmap Owner: forrestneo Summary: 金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。** Tags: latest:0.1","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"template.html  ──(占位符替换)──►  金融创新全球作战地图.html   ← 双击离线打开\nbuild.py      读 news.xlsx（可编辑数据源）注入 __NEWS__ / __SUGGESTIONS__\npipeline.py   分类法真理源 + 搜索/状态/补满 流水线\nassets/       echarts.min.js + world.json + china.json（34 省）← 构建时内联"},{"language":"text","snippet":"references/\n├── template.html          # Palantir 风三栏地图模板（含占位符，离线单文件目标）\n├── build.py               # 生成器：init/build/merge/replace + 建议区计算 + 去重\n├── pipeline.py            # 20 子领域 taxonomy 驱动的 search/status/fill/rebuild 补满流水线\n├── news_sample.json       # 内置示例数据源（11 条，init/build 缺 xlsx 时回退用）\n├── db.py                  # Supabase 读写（可选，pull/push 用；凭据走本地 config.toml）\n├── config.example.toml    # Supabase 配置样例\n└── assets/               # 离线单文件必需，已随技能分发\n    ├── echarts.min.js     # ~1MB，内联进 HTML\n    ├── world.json         # ~1MB，世界地图边界\n    └── china.json         # 中国 34 省边界"},{"language":"bash","snippet":"python build.py init          # 用内置示例生成 news.xlsx（可编辑数据源）\n   python build.py build         # 读 news.xlsx -> 生成离线单文件 HTML 到当前目录\n   # 或跳过 init，直接 build（缺 news.xlsx 时自动回退示例）\n   python build.py build --role \"浙江省分行行长\"   # 指定建议区视角后固化进 HTML"},{"language":"python","snippet":"import re\ndef norm_key(n):\n    link = (n.get(\"link\") or \"\").strip().lower()\n    if link:\n        return re.sub(r\"[?#].*$\", \"\", link)        # 链接去 ?# 参数后小写\n    return re.sub(r\"\\s+\", \"\", (n.get(\"title\") or \"\"))  # 否则标题去空格兜底\n\ndef dedup(news, keep_first=True):\n    seen, out = set(), []\n    for n in news:\n        k = norm_key(n)\n        if not k or k in seen:\n            continue\n        seen.add(k); out.append(n)\n    return out"},{"language":"python","snippet":"out = (tpl\n  .replace(\"__ECHARTS_LIB__\", echarts).replace(\"__WORLD_JSON__\", world.strip())\n  .replace(\"__CHINA_JSON__\", china.strip()).replace(\"__NEWS__\", news_js)\n  .replace(\"__SAMPLE__\", \"true\" if is_sample else \"false\")\n  .replace(\"__SUGGESTIONS__\", sugg_js))\nfor tok in (\"__ECHARTS_LIB__\",\"__WORLD_JSON__\",\"__CHINA_JSON__\",\"__NEWS__\",\"__SAMPLE__\",\"__SUGGESTIONS__\"):\n    assert tok not in out, f\"占位符未替换: {tok}\""},{"language":"text","snippet":"〇 环境前置检查（Gate）：先探测 WebSearch 是否可用，不支持则立即中止，不编造\n① 定义分类法 TAXONOMY（唯一真理源）\n② 搜索真实新闻（默认最近一周 d7，不询问）\n③ 编译成 JSON（13 字段，event/why/innovation/learn 各 ≥100 字）\n④ 去重并入（pipeline.py fill）\n⑤ 查缺口 → 补满（pipeline.py status / fill 循环）\n⑥ 重建单文件 HTML（build.py build）\n⑦ 校验交付（占位符无残留、JSON 合法、每子方向计数）"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: finance-news-warmap\ndescription: 金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。**\nagent_created: true\nversion: 1.1.0\n---\n\n# 金融创新作战地图（Finance News War Map）\n\n一个「**真实数据驱动 + 单一离线 HTML**」的新闻情报地图工作流。它把 WebSearch 搜来的真实国内新闻按城市经纬度落点，用 ECharts 地理散点呈现，并带一个**数据驱动的右侧「建议区」**（自动总结趋势 + 给银行/保险/金融科技高管建议）。\n\n核心立场（来自用户强约束）：**只用真实搜索新闻，绝不编造；每个细分领域搜满目标条数；长字段写足；产出必须离线可双击打开。**\n\n---\n\n## 〇、启动前需向用户确认的问题（Question Flow）\n\n运行本 skill 前，按顺序确认以下问题；标注「默认不询问」的按默认值直接执行，标注「必问」的必须拿到答案再跑。\n\n| # | 问题 | 默认 | 处置 |\n|---|---|---|---|\n| 1 | 关注哪些领域 / 分类法？ | 银行(10)+金融科技(5)+保险(5)=20 项 | 默认不询问；用户要增删才改 |\n| 2 | 每个子方向填满几条？ | 5 条 | 默认不询问 |\n| 3 | 时间窗口？ | **最近一周（freshness=`d7`）** | **默认不询问**；除非用户要近 1 月/指定日期 |\n| 4 | 地理范围？ | 中国国内为主 | 默认不询问 |\n| 5 | 新闻来源 / 语言口径？ | 国内真实新闻，官媒+主流财经媒体 | 默认不询问 |\n| 6 | **你是什么角色 / 视角？** | ——（无安全默认） | **必问**：如\"浙江省分行行长\"\"零售条线总监\"\"合规官\"。答案经 `build --role \"角色名\"` 固化进建议区，**不在浏览器里做输入框/切换器** |\n| 7 | 视觉风格？ | Palantir 深色 + 三栏 | 默认不询问 |\n| 8 | 长字段强制要求？ | event/why/innovation/learn 各 ≥100 字 | 默认不询问 |\n| 9 | 输出位置 / 文件名？ | `金融创新全球作战地图.html` + `news.xlsx` | 默认不询问 |\n| 10 | 要不要定时自动刷新？ | 手动 build | 默认不询问 |\n\n> 角色（#6）是**唯一必须主动问**的一项；其余一律默认，除非用户另行指定。角色决定建议区\"高管建议\"那一段的视角，命中种子场景用种子文案，否则按关键词从 `DIRECTION_INSIGHTS` 动态生成并固化。\n\n---\n\n## 〇·五、环境前置检查（调用时强制第一步 · Gate）\n\n本 skill 的整个数据流依赖**真实联网搜索**——没有可工作的 `WebSearch`，后续 search→compile→fill 全部失去意义，且会直接触碰\"只用真实新闻、绝不编造\"的硬底线。因此在做**任何**搜索 / 编译 / 构建之前，**必须先确认环境具备联网搜索能力**；确认通过才进入 Step 1，不通过则立即中止。\n\n**检查步骤（agent 在调用 skill 时执行）：**\n1. 先按 Question Flow 向用户问清必要项（其中 #6 角色必问；其余默认）。\n2. **探测**：执行一次轻量 `WebSearch`（如查询 `金融科技 创新 新闻 2026` 或任何与任务相关的真实关键词，freshness 用 `d7`）。\n3. **判定**：\n   - ✅ 成功返回 ≥1 条真实结果（有标题 / 链接 / 摘要）→ 环境可用，继续 Step 1。\n   - ❌ 工具不可用 / 调用被拒 / 沙箱网络被阻断 / 返回空或报错 / 只返回\"无法访问\"之类占位 → **立即中止**。\n4. **中止处置**：明确告知用户——\"本环境当前不支持联网搜索（WebSearch 不可用 / 网络受限）。按硬规则『只用真实新闻、绝不编造』，无法执行后续流程。\"然后停止。**不要**尝试用训练记忆编造新闻，也**不要**改用离线占位数据蒙混。可建议用户：\n   - 开启联网 / 搜索工具后重试；或\n   - 改为仅基于用户已提供的本地新闻文件（`news.xlsx` 或传入的 JSON）做 `build`（此时需用户**明确认可**\"只用本地既有数据、不再补新搜\"，且仍遵守长字段≥100字 / 去重等规则）。\n\n**注意**：`WebSearch` 是 agent 侧的服务器工具；脚本内的 `pipeline.py search` 只打印查询供人工 / agent 去搜，本身不联网。所以\"是否支持联网搜索\"只能在 agent 调用 skill 时由上述探测判定，不能靠脚本断言。\n\n---\n\n## 〇·六、数据安全与对外传输声明（透明性 · 回应供应链/外传审查）\n\n本 skill 是**纯本地生成器**，不存在隐藏或自动化的对外网络调用。所有对外传输都需用户显式触发并自带凭据：\n\n1. **联网搜索（WebSearch）由调用方 agent 执行，不是 skill 代码联网**：`build.py` / `pipeline.py` / `template.html` 在运行时**不发起任何 WebSearch 或互联网请求**——`pipeline.py search` 只把查询打印出来供人工/agent 去搜。\n2. **离线单文件是强制硬指标（无 CDN / 无外部字体）**：`template.html` 不再引用任何外部 `https://` 的 `<script>` 或 `<link>`。ECharts 库、world/china GeoJSON、**xlsx 导出库**全部随技能分发于 `assets/` 并在构建时**内联**进 HTML；字体仅用系统字体栈回退（Microsoft YaHei / PingFang SC 等）。生成的 HTML 双击离线可用，不经过任何第三方服务器。\n3. **远程同步（Supabase pull/push）完全可选 + 显式 + 用户凭据**：\n   - 仅当用户主动运行 `build.py pull` / `push` / "},{"path":"README.md","content":"# finance-news-warmap\n\n> 金融 / 行业「新闻作战地图」构建 Skill —— Palantir 风格、可离线双击打开的单文件 HTML 生成器。\n\n把真实搜索到的新闻按城市经纬度落点，生成一张 Palantir 风格的作战地图：ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动的「建议区」。配套 `search → compile → fill` 流水线，自动把每个细分领域补满 N 条**真实**新闻并去重，**绝不编造数据**。\n\n---\n\n## 它能做什么\n\n- **真实新闻地图**：每个细分方向搜满目标条数（默认 5 条）的真实国内新闻，按城市经纬度在地图上落点。\n- **离线单文件 HTML**：echarts 库 + 世界/中国 GeoJSON + 新闻数据 + 建议区 JSON **全部内联**，双击即开、可邮件分享。\n- **数据驱动「建议区」**：基于当前新闻实时统计趋势，并给指定角色/视角的高管生成可执行建议（默认「金融高管视角」，任意角色可经 `--role` 固化）。\n- **去重幂等**：已存在新闻按 `norm_key` 去重，合并时 existing 在前，绝不重复存储。\n\n---\n\n## 触发场景\n\n- 做新闻情报地图 / 作战地图 / 创新动态地图\n- 搜新闻自动补满、去重并入\n- 给高管出「趋势 + 建议」面板\n- 要离线自包含 HTML 交付物\n\n---\n\n## 工作流（端到端）\n\n```\n〇 环境前置检查（Gate）：先探测 WebSearch 是否可用，不支持则立即中止，不编造\n① 定义分类法 TAXONOMY（唯一真理源）\n② 搜索真实新闻（默认最近一周 d7，不询问）\n③ 编译成 JSON（13 字段，event/why/innovation/learn 各 ≥100 字）\n④ 去重并入（pipeline.py fill）\n⑤ 查缺口 → 补满（pipeline.py status / fill 循环）\n⑥ 重建单文件 HTML（build.py build）\n⑦ 校验交付（占位符无残留、JSON 合法、每子方向计数）\n```\n\n### 调用前需确认的问题（Question Flow）\n\n| # | 问题 | 默认 | 处置 |\n|---|---|---|---|\n| 1 | 关注领域 / 分类法 | 银行10 + 金融科技5 + 保险5 = 20 子方向 | 不询问 |\n| 2 | 每方向填满几条 | 5 | 不询问 |\n| 3 | 时间窗口 | 最近一周（d7） | **不询问** |\n| 4 | 地理范围 | 中国为主 | 不询问 |\n| 5 | 新闻来源 / 语言 | 国内官媒 + 主流财经 | 不询问 |\n| 6 | **你是什么角色 / 视角？** | 无 | **必问**（经 `--role` 固化，不在浏览器输入） |\n| 7 | 视觉风格 | Palantir 深色三栏 | 不询问 |\n| 8 | 长字段 ≥100 字 | 是 | 不询问 |\n| 9 | 输出位置 / 文件名 | 默认名 + news.xlsx | 不询问 |\n| 10 | 定时自动刷新 | 手动 | 不询问 |\n\n> 真正要用户拍板的只有 **#6 角色**；其余用默认值直接跑。\n\n---\n\n## 环境准备（Setup）\n\n```bash\n# 1. 安装依赖（核心只需 openpyxl；supabase 仅 pull/push 时需要）\npip install -r requirements.txt\n\n# 2. 在你自己的项目目录里运行（数据与产物写到「当前工作目录」，不污染技能安装目录）\ncd your-project-dir\npython references/build.py init     # 用内置示例生成 news.xlsx（可编辑数据源）\npython references/build.py build    # 读 news.xlsx -> 生成离线单文件 HTML 到当前目录\n\n# 跳过 init 直接 build 也行（缺 news.xlsx 时自动回退内置示例）\npython references/build.py build --role \"浙江省分行行长\"   # 指定建议区视角并固化进 HTML\n```\n\n> 只读资产（`template.html` / `assets/` / `news_sample.json`）已随仓库分发，无需联网下载。\n\n---\n\n## 文件结构\n\n```\nfinance-news-warmap/\n├── SKILL.md              # 方法论总结（何时用 / 硬规则 / 架构 / 工作流 / 关键代码模式 / 坑）\n├── README.md\n├── requirements.txt      # 依赖：openpyxl（核心）/ supabase（可选）\n├── .gitignore\n└── references/\n    ├── template.html     # Palantir 风三栏地图模板（占位符、中国/世界切换、右侧建议区）\n    ├── build.py          # 生成器（init/build/merge/replace + 建议区计算 + 去重）\n    ├── pipeline.py       # 20 子领域 taxonomy 驱动的 search/status/fill/rebuild 补满流水线\n    ├── news_sample.json  # 内置示例数据源（11 条，init/build 缺 xlsx 时回退用）\n    ├── db.py             # Supabase 读写（可选，pull/push 用；凭据走本地 config.toml）\n    ├── config.example.toml\n    └── assets/           # 离线单文件必需，已随仓库分发\n        ├── echarts.min.js\n        ├── world.json\n        └── china.json\n```\n\n---\n\n## 硬规则（默认开启，除非用户明确授权跳过）\n\n1. **环境前置 Gate**：调用时第一步探测 `WebSearch` 是否可用；不支持则立即中止整个流程，绝不退化为编造或离线占位。\n2. **只用真实新闻**：全部来自 WebSearch（默认 freshness=`d7`），绝不编造、绝不虚构事件/链接。\n3. **每细分领域搜满目标条数**（默认 TARGET=5）：不足只报缺口，不编造占位补齐。\n4. **长字段写足**：`event / why / innovation / learn` 各 ≥ 100 字（必须在 fill 前补全，去重保首次）。\n5. **离线单文件**：echarts 库与 world/china GeoJSON 全内联。\n6. **去重不重复**：已存在新闻按 `norm_key"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn79n39ph0bt3y6khdjwn7bxt18bm0dq\",\n  \"slug\": \"finance-news-warmap\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1786768716532\n}"},{"path":"references/assets/china.json","content":"{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"id\":\"710000\",\"properties\":{\"id\":\"710000\",\"cp\":[121.509062,24.044332],\"name\":\"台湾\",\"childNum\":6},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@°Ü¯Û\"],[\"@@ƛĴÕƊÉɼģºðʀ\\\\ƎsÆNŌÔĚänÜƤɊĂǀĆĴĤǊŨxĚĮǂƺòƌâÔ®ĮXŦţƸZûÐƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃǋƏďíåɛGɉ¿@ăƑ¥ĘWǬÏĶŁâ\"],[\"@@\\\\p|WoYG¿¥Ij@¢\"],[\"@@¡@V^RqBbAnTXeRz¤L«³I\"],[\"@@ÆEEkWqë @\"],[\"@@fced\"],[\"@@¯ɜÄèaì¯ØǓIġĽ\"],[\"@@çûĖëĄhòř \"]],\"encodeOffsets\":[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]],[[126259,26318]],[[127671,26683]]]}},{\"type\":\"Feature\",\"id\":\"130000\",\"properties\":{\"id\":\"130000\",\"cp\":[114.502461,38.045474],\"name\":\"河北\",\"childNum\":3},\"geometry\":{\"type\":\"MultiPolygon\",\"coordinates\":[[\"@@o~Z]ªrºc_ħ²G¼s`jÎŸnüsÂłNX_M`Ç½ÓnUKĜēs¤­©yrý§uģcJe\"],[\"@@U`Ts¿mÂ\"],[\"@@oºƋÄdeVDJj£J|ÅdzÂFt~KŨ¸IÆv|¢r}èonb}`RÎÄn°ÒdÞ²^®lnÐèĄlðÓ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcŋ`ZÔ¶êqvFÆN®ĆTH®¦O¾IbÐã´BĐɢŴÆíȦpĐÞXR·nndO¤OÀĈƒ­QgµFo|gȒęSWb©osx|hYhgŃfmÖĩnºTÌSp¢dYĤ¶UĈjlǐpäìë|³kÛfw²Xjz~ÂqbTÑěŨ@|oMzv¢ZrÃVw¬ŧĖ¸f°ÐTªqs{S¯r æÝlNd®²Ğ ǆiGĘJ¼lr}~K¨ŸƐÌWöÆzR¤lêmĞLÎ@¡|q]SvKÑcwpÏÏĿćènĪWlĄkT}J¤~ÈTdpddʾĬBVtEÀ¢ôPĎƗè@~kü\\\\rÊĔÖæW_§¼F´©òDòjYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkvGpuARhÞÆǶgĘTǼƹS£¨¡ù³ŘÍ]¿ÂyôEP xX¶¹ÜO¡gÚ¡IwÃé¦ÅBÏ|Ç°N«úmH¯âDùyŜŲIÄuĐ¨D¸dɂFOhđ©OiÃ`ww^ÌkÑH«ƇǤŗĺtFu{Z}Ö@U´ʚLg®¯Oı°Ãw ^VbÉsmAê]]w§RRl£ȭµu¯b{ÍDěïÿȧuT£ġěŗƃĝQ¨fVƋƅn­a@³@ďyÃ½IĹÊKŭfċŰóxV@tƯJ]eR¾fe|rHA|h~Ėƍl§ÏlTíb ØoÅbbx³^zÃĶ¶Sj®AyÂhðk`«PËµEFÛ¬Y¨Ļrõqi¼Wi°§Ð±´°^[À|ĠO@ÆxO\\\\ta\\\\tĕtû{ġȧXýĪÓjùÎRb^ÎfK[ÝděYfíÙTyuUSyŌŏů@Oi½éŅ­aVcř§ax¹XŻácWU£ôãºQ¨÷Ñws¥qEHÙ|šYQoŕÇyáĂ£MÃ°oťÊP¡mWO¡v{ôvîēÜISpÌhp¨ jdeŔQÖjX³àĈ[n`Yp@UcM`RKhEbpŞlNut®EtqnsÁgAiúoHqCXhfgu~ÏWP½¢G^}¯ÅīGCÑ^ãziMáļMTÃƘrMc|O_¯Ŏ´|morDkO\\\\mĆJfl@cĢ¬¢aĦtRıÒ¾ùƀ^juųœK­UFyƝīÛ÷ąV×qƥV¿aȉd³BqPBmaËđŻģmÅ®V¹d^KKonYg¯XhqaLdu¥Ípǅ¡KąÅkĝęěhq}HyÃ]¹ǧ£Í÷¿qáµ§g¤o^á¾ZE¤i`ĳ{nOl»WÝĔįhgF[¿¡ßkOüš_ūiǱàUtėGyl}ÓM}jpEC~¡FtoQiHkk{Ãmï\"]],\"encodeOffsets\":[[[119712,40641]],[[121616,39981]],[[116462,37237]]]}},{\"type\":\"Feature\",\"id\":\"140000\",\"properties\":{\"id\":\"140000\",\"cp\":[111.849248,36.857014],\"name\":\"山西\",\"childNum\":1},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[\"@@ÞĩÒSra}ÁyWix±Üe´lèßÓǏokćiµVZģ¡coTSË¹ĪmnÕńehZg{gtwªpXaĚThȑp{¶Eh®RćƑP¿£Pmc¸mQÝWďȥoÅîɡųAďä³aÏJ½¥PG­ąSM­EÅruµéYÓŌ_dĒCo­Èµ]¯_²ÕjāK~©ÅØ^ÔkïçămÏk]­±cÝ¯ÑÃmQÍ~_apm~ç¡qu{JÅŧ·Ls}EyÁÆcI{¤IiCfUcƌÃp§]ě«vD@¡SÀµMÅwuYY¡DbÑc¡h×]nkoQdaMç~eDÛtT©±@¥ù@É¡ZcW|WqOJmĩl«ħşvOÓ«IqăV¥D[mI~Ó¢cehiÍ]Ɠ~ĥqX·eƷn±}v[ěďŕ]_œ`¹§ÕōIo©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs×¥ŅxÊdÒ{ºvĴÎêÌɊ²¶ü¨|ÞƸµȲLLúÉƎ¤ϊęĔV`_bªS^|dzY|dz¥pZbÆ£¶ÒK}tĦÔņƠPYznÍvX¶Ěn ĠÔzý¦ª÷ÑĸÙUȌ¸dòÜJð´ìúNM¬XZ´¤ŊǸ_tldI{¦ƀðĠȤ¥NehXnYGR° ƬDj¬¸|CĞKqºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBÊTŸʂōĖĴŞȀÆÿȄlŤĒötÎ½î¼ĨXh|ªM¤Ðz\"],\"encodeOffsets\":[[116874,41716]]}},{\"type\":\"Feature\",\"id"},{"path":"references/config.example.toml","content":"[supabase]\n# 复制本文件为 config.toml 并填入真实凭据\nurl = \"https://YOUR-PROJECT.supabase.co\"\nkey = \"YOUR-ANON-OR-SERVICE-KEY\"\ntable = \"news\""}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。** Skill: finance-news-warmap Owner: forrestneo Summary: 金融/行业「新闻作战地图」构建 skill。把真实搜索新闻按经纬度落点，生成 Palantir 风格、可离线双击打开的单文件 HTML（ECharts 地理散点 + 中国/世界切换 + 可筛选可悬停 + 右侧数据驱动「建议区」）。配套 search→compile→fill 流水线，把每个细分领域自动补满 N 条真实新闻并去重，绝不编造数据。触发：做新闻情报地图、作战地图、创新动态地图、搜新闻自动补满、给高管出趋势与建议面板、要离线自包含 HTML 交付物。**调用前须由 agent 执行 WebSearch 联网能力探测（不可用则中止，不编造/不占位；此为 agent 侧流程约束，非代码强制断言）。所有库/字体/地图数据均随技能本地分发并在构建时内联，运行时无任何 CDN/外部请求。** Tags: latest:0.1","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":924,"uniquenessScore":68,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T08:57:45.838Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T08:57:45.838Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:55:53.790Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}