From 33d3059038758ede64aee693aa7a6ecd7713788a Mon Sep 17 00:00:00 2001 From: MeowOS Date: Tue, 1 Sep 2026 23:15:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(panel,=20PANEL=5FENHANCE=5FPLAN=20?= =?UTF-8?q?=E6=89=B92):=20=E5=B4=A9=E6=BA=83/=E6=97=A5=E5=BF=97=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=20+=20=E9=9F=B3=E9=A2=91=E5=86=99=20+=20=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E8=A1=A5=E7=BC=BA=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端(meowpanel.c 0-warning,-Werror 通过): - /api/system 补 reboot_reason/upgrade_status(svc_power 读级 POWER_REBOOT_REASON(8)/UPGRADE_STATUS(9)) - /api/overview net 块并入 DNS 统计(首页严格单请求;DNS 不可用省略 dns 键不谎报) - /api/audio 补 vol_max(读 settings audio.volume_max) - POST /api/audio/route(仅 0=auto/2=3.5/3=4.4,拒 1/4/5;写级 PIN 已护) - POST /api/audio/volume(clamp 到 vol_max,防炸耳红线;写级 PIN 已护) - GET /api/logs/crash(崩溃汇总:每实体崩溃数+最近时间/信号 + dmesg 计数;256KB/64 实体/5 行上限) - /api/logs 文件列表加 group 来源分组 - 顺带补回 批1-B 前端读取的 boot.mode /tmp/meow_boot_mode(此前遗留未提交) 前端(web/meowpanel.js 双主题): - 音频页:路由选择器(自动/3.5/4.4)+ 音量滑条(上限 vol_max、平方锥度非线性标注、确认弹窗) - 日志页:崩溃汇总卡 + 崩溃尾巴一键看 stdout 尾部 + 按来源分组 + 前缀过滤 - 首页:netCard 改读 overview net.dns,去掉单独 /api/net/dns 验证:宿主编译 0 warning + -Werror;自建桩测试 24/24(crash 解析/路由 1|4|5 拒 422/音量 clamp 到 50/ reboot_reason+upgrade_status 值/overview net.dns);headless Chromium 渲染 audio/logs/home/system/ light 主题均正确。md5(meowpanel)=aed2ea17a34614acaa26dcbc8965ebb1。 --- patch_v2/meowpanel/README.md | 38 ++- patch_v2/meowpanel/meowpanel | Bin 236060 -> 256348 bytes patch_v2/meowpanel/meowpanel.c | 347 ++++++++++++++++++++++++++-- patch_v2/meowpanel/meowpanel_host | Bin 148688 -> 148968 bytes patch_v2/meowpanel/web/meowpanel.js | 221 +++++++++++++++--- 5 files changed, 547 insertions(+), 59 deletions(-) diff --git a/patch_v2/meowpanel/README.md b/patch_v2/meowpanel/README.md index 1b7f46d..4c592c7 100644 --- a/patch_v2/meowpanel/README.md +++ b/patch_v2/meowpanel/README.md @@ -28,7 +28,7 @@ cd /home/Aska/Project/R3ProII/patch_v2/meowpanel - 两分支均以 `-Os -Wall -Wextra` 复核,**0 warning**(`-Werror` 亦通过)。 - 产出(本次构建实测): - `meowpanel`:mipsel 静态,`ELF 32-bit LSB executable, MIPS, MIPS32 rel2, statically linked, stripped`, - 体积约 **236 KB**(固件阈值内)。md5:`3696e85b5eaf111f530c5c39fa68886e`(批1-A:访问级 **4 位 PIN 鉴权** + `/api/{power,overview,ams,svcd}` + `/api/audio` 补 `rms/peak/lvlseq`。 + 体积约 **256 KB**(固件阈值内)。md5:`aed2ea17a34614acaa26dcbc8965ebb1`(批2:崩溃/日志中心 `/api/logs/crash` + 日志分组/`group`;`/api/system` 补 `reboot_reason/upgrade_status`;`/api/overview` net 块并入 DNS 统计;音频**写级** `/api/audio/route`(仅 0/2/3,拒 1/4/5)+ `/api/audio/volume`(clamp 到 vol_max)+ `/api/audio` 补 `vol_max`)。 **重防火墙注意**:运行中二进制先 `.new` 再 `mv`,切勿直接覆盖运行中的 `meowpanel`)。 - `meowpanel_host`:aarch64 动态链接(宿主编译,仅供调试),体积约 **148 KB**。 - 依赖:仅 libc + Linux 内核头(`linux/input.h`),零第三方库(设备无 python3/lua)。鉴权用**内联 SHA-256**(拷贝自 @@ -115,7 +115,9 @@ http://.local:8080/ | GET | `/api/fonts` | 字体库列表(扫描 `MeowOS/fonts///` 三件套齐) | ✅(无卡→503) | | POST | `/api/fonts/import` | 上传字体库 `.tar.gz`(multipart `file`,可带 `?force=1` 覆盖) | ✅(缺件/坏json/穿越→400,冲突→409,超限→413) | | GET | `/api/fonts/export` | 导出 `//` 三件套为 `.tar.gz`(`?family=&weight=`) | ✅(缺件→404) | -| GET | `/api/audio` | 音频状态快照:meow_audiod IPC `MSG_AUDIO_QUERY→STATE` 透传(当前流/路由/音量/underrun + **`rms/peak/lvlseq` 电平**,见 §5.12) | ✅(audiod 不在→`available:false`,不报错) | +| GET | `/api/audio` | 音频状态快照:meow_audiod IPC `MSG_AUDIO_QUERY→STATE` 透传(当前流/路由/音量/underrun + **`rms/peak/lvlseq` 电平 + `vol_max`**,见 §5.12) | ✅(audiod 不在→`available:false`,不报错) | +| POST | `/api/audio/route` | 手动切输出路由(**写级**,PIN 已护):`MSG_AUDIO_ROUTE`,仅接受 `{port: 0\|2\|3}`,**绝不接受 1/4/5**(4=SPDIF、5=audiod 内部强制重烧值);前端切换前确认弹窗(选错口会无声) | ✅(非法端口→422;audiod 不在→503) | +| POST | `/api/audio/volume` | 写音量(**写级**,PIN 已护):`MSG_AUDIO_VOLUME`,**clamp 到系统 vol_max**(读 settings.conf `audio.volume_max`,缺省 100;设备当前 50);audiod 仅 clamp 0-100 无 vol_max 防护,面板是把守方(防炸耳红线) | ✅(clamp 后写;audiod 不在→503) | | GET | `/api/power` | 功耗管理:meow_powermgr IPC `MSG_PM_QUERY→RESULT`(battery/estimate/breakdown,confidence 原样透传) | ✅(powermgr 不在→503 `POWER_UNAVAILABLE`) | | GET | `/api/ams` | App 运行表:`am list`(pkg/name/state/pid/launches/crashes/last_kind/last_code) | ✅(amsd 不在→`available:false`) | | GET | `/api/svcd` | 服务表:`meow_svcd status all`(name/state/pid/restart/backoff_ms/trigger/src/exit/exec) | ✅(svcd 不在→`available:false`) | @@ -127,7 +129,8 @@ http://.local:8080/ | DELETE | `/api/apps/:pkg` | `nyai remove [--purge]` | ✅ | | POST | `/api/key/:code` | 按键注入(tap/long) | ✅(物理键红线内) | | POST | `/api/key` | 批量/顺序注入 | ✅ | -| GET | `/api/logs` | `MeowOS/logs` 文件列表 | ✅(无卡→503) | +| GET | `/api/logs` | `MeowOS/logs` 文件列表(每文件含 `group` 来源分组) | ✅(无卡→503) | +| GET | `/api/logs/crash` | **崩溃汇总**:解析最新 `crash_.log`(meow_crash 落盘格式)→ 每实体崩溃数 + 最近崩溃时间/信号 + dmesg 计数 | ✅(无卡→503;无 crash 日志→空汇总) | | GET | `/api/logs/read?file=&lines=` | 读日志(上限 1000 行;`..`/绝对→403;敏感名→403) | ✅ | | GET | `/api/notifications` | 通知列表(**优先 launcher IPC 内存活跃集** `source:"ipc"`;IPC 不可达回退 TF 转储日志 `source:"tf"`;见 §5.8) | ✅(无源→空态 `source:none`,不 503) | | DELETE | `/api/notifications/:id` | 单条删除(**优先 IPC 撤下 launcher 内存**;IPC 不可达回退重写日志移除该 id) | ✅(不存在→404) | @@ -366,6 +369,33 @@ http://.local:8080/ - **`GET /api/ams`** / **`GET /api/svcd`**:即 overview 的 `ams`/`svcd` 子块;源不在 → `{"available":false}`。 - **`GET /api/audio`**:overview 的 `audio` 子块 + rms/peak/lvlseq 消费说明见 §5.12。 +### 5.15 批2:崩溃/日志中心 + 音频写 + 后端补缺口(PANEL_ENHANCE_PLAN 批2) +- **崩溃/日志中心(升级 `#/logs`)**: + - **`GET /api/logs/crash`**:读最新 `crash_.log`(meow_crash 落盘格式:` `; + svc 的 `detail= exit=`/` signal=`)。聚合出 `{file,count,dmesg_count,dmesg_tail,entities:[ + {name,source:"svc",count,last_epoch,last_kind,last_code,last_time,last_detail}]}`;只读、无副作用。 + 读取有界 `CRASH_TAIL_MAX`=256KB、实体 `CRASH_ENT_MAX`=64、dmesg 保留最近 `CRASH_DMESG_TAIL`=5 行(行数上限保护)。 + - **`/api/logs` 文件列表**每项带 `group`(`meow_*→system`/`crash_*→crash`/`ams_*→ams`/`audio_monitor_*→audio_monitor`/ + `net_*→net`/`power_*→power`/其余→`app`),供前端按来源分组 + 前缀过滤;`group` 为追加键,向后兼容。 + - **崩溃尾巴前置**:崩溃汇总实体行「stdout 尾部」按钮复用批1-B 读取路径(`/api/files?path=/MeowOS/logs//` + 找最新 `stdout_*.log` → `/api/logs/read?file=/&lines=200` 读尾部)。 +- **音频写(写级,PIN 已护;前端切换/调高前确认弹窗)**: + - **`POST /api/audio/route`**:`body {port}`。**仅 0=auto/2=3.5/3=4.4**,其余(含 1=lineout/4=SPDIF、5=audiod 内部 + 强制重烧 FPGA 值)→ 422。audiod 对非法 port 也回 MEOW_OK(内部仅记录不应用),故面板在**发出前**自行校验。 + 应答 `{accepted,port}`;audiod 不在 → 503 `AUDIO_UNAVAILABLE`。 + - **`POST /api/audio/volume`**:`body {value}`。**clamp 到系统 vol_max**(`settings.audio.volume_max`,缺省 + `PANEL_VOL_MAX_DEFAULT`=100;设备当前 50)。audiod 内部仅 clamp 0-100、无 vol_max 防护——面板是唯一把守方 + (防炸耳红线:平方锥度 `dac=(100-pct)²×192/10000`,接近 100 极响)。应答 `{accepted,value(clamped),applied,vol_max}`。 + - **`/api/audio` 补 `vol_max`**(读 settings `audio.volume_max`),前端滑条上限同步 + 「平方锥度非线性」标注 + + 「当前值只读显示锥度后百分比」。 +- **后端补缺口**: + - **`/api/system` 补 `reboot_reason`/`upgrade_status`**:svc_power 读级查询 `POWER_REBOOT_REASON(8)`/ + `POWER_UPGRADE_STATUS(9)`(`st.msg` 分别为 `coldboot=reboot|shutdown|unknown`、`upgrade=yes|no`);查询失败回空串不谎报。 + 前端批1-B 已留位(读 `d.reboot_reason`/`d.upgrade_status`),此处点亮。 + - **`/api/overview` net 块并入 DNS 统计**:netmgrd 状态 JSON 剥外层括号拼入 `{"net":{…,"dns":{…}}}`(复用 `/api/net/dns` + 同款统计);DNS 不可用则省略 `dns` 键仅保留网络状态,**绝不假数据**。首页 netCard 改读 `net.dns`,去掉单独 `/api/net/dns` + (首页严格单请求)。 + --- ## 6. 与协议的出入(「实现为准 + 原因」,供回改 MEOWPANEL_PROTOCOL.md) @@ -456,7 +486,7 @@ http://.local:8080/ ``` patch_v2/meowpanel/ -├── meowpanel.c # 后端源码(约 4650 行,-Wall -Wextra 0 warning;含可选鉴权/内联 SHA-256/实时画面+增量帧/触摸注入/通知 IPC 实时化/字体库 tar.gz 导入导出/自然排序/audiod 状态快照) +├── meowpanel.c # 后端源码(约 5590 行,-Wall -Wextra 0 warning;含可选鉴权/内联 SHA-256/实时画面+增量帧/触摸注入/通知 IPC 实时化/字体库 tar.gz 导入导出/自然排序/audiod 状态快照 + 批2 崩溃/日志中心 + 音频写 + overview DNS 聚合) ├── mp_jpeg.c # 最小 baseline JPEG 编码器(顺序 DCT + 4:2:0 + 标准 Huffman,整数定点,无 libm,-Wall -Wextra 0 warning) ├── mp_jpeg.h # mp_jpeg.c 接口(RGB565 → 内存 JPEG) ├── build_meowpanel.sh # 交叉编译 + host 分支(-Wall -Wextra 0 warning;meowpanel.c + mp_jpeg.c) diff --git a/patch_v2/meowpanel/meowpanel b/patch_v2/meowpanel/meowpanel index 965d59844f8af008fabc62d9e1fe3c935d854784..c7bcd66afd955f241d8ff7e706e46ccfb63634f4 100755 GIT binary patch delta 105400 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 delta 86753 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
8_U$?NPPX4m@k%Um@^%=@u3@Y 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 mXrhYXE)y}_aF/notificat #define LOG_MAX_LINES 1000 #define NOTIF_PREVIEW_MAX 200 /* 通知列表返回上限(每条约 0.2KB,总 <50KB) */ #define TEXT_PREVIEW_MAX (1024 * 1024) /* 文本预览上限(超出截断,truncated=true;14MB 约束下 1MB 缓冲安全) */ +#define PANEL_VOL_MAX_DEFAULT 100 /* 音频音量上限默认(对齐 meow_launcher MEOW_VOL_MAX_DEFAULT;设备可经 settings.conf audio.volume_max 覆盖) */ /* 白名单子目录(TF 卡根下) */ static const char *g_allowed_dirs[] = { "MeowOS", "Music", "MeowData", "MeowAPPs", "book" }; @@ -926,6 +927,17 @@ done: return rc; } +/* 从 svc_power 状态文本取 `k=v` 的 v(如 "coldboot=reboot" → "reboot";key 须精确匹配带 '=')。 + * 读级命令(POWER_REBOOT_REASON/UPGRADE_STATUS)的 st.msg 即此形态。 */ +static void svc_msg_kv(const char *msg, const char *key, char *out, size_t cap) +{ + out[0] = 0; + if (!msg || !key) return; + size_t kl = strlen(key); + if (strncmp(msg, key, kl) == 0 && msg[kl] == '=' && msg[kl + 1]) + snprintf(out, cap, "%s", msg + kl + 1); +} + /* ---------------- 音频状态:meow_audiod IPC(MSG_AUDIO_QUERY→MSG_AUDIO_STATE) ---------------- * audiod 无 MSG_HELLO 握手(见 patch_v2/meow_audiod/meow_audio.c CLI:直连发空负载 QUERY, * 收 STATE 文本帧——"k=v" 空格分隔、NUL 结尾)。audiod 不在/超时/应答异常一律回 @@ -957,6 +969,16 @@ static long long audio_kv_ll(const char *txt, const char *key, long long defv) return strtoll(b, NULL, 10); } +/* 音频音量上限:读 settings.conf 的 audio.volume_max(权威键,与 launcher/watchdog/svc_power/sdk 同用); + * 缺省回 PANEL_VOL_MAX_DEFAULT(=MEOW_VOL_MAX_DEFAULT 100)。面板写音量时据此 clamp(防炸耳红线)。 */ +static int audio_vol_max(void) +{ + int v = settings_get_int("audio.volume_max", PANEL_VOL_MAX_DEFAULT); + if (v < 0) v = 0; + if (v > 100) v = 100; + return v; +} + /* 音频快照填充:把 `{"available":...}` 追加进 sbuf(供 /api/audio 单发与 /api/overview 聚合共用)。 * audiod 不在/超时/应答异常一律 `{"available":false}`(HTTP 200,不报错)——面板/首页据此降级,绝不假数据。 */ static void audio_fill(sbuf_t *s) @@ -988,8 +1010,8 @@ static void audio_fill(sbuf_t *s) sA(s, ",\"port\":%lld,\"vol\":%lld", audio_kv_ll(txt, "port", -1), audio_kv_ll(txt, "vol", -1)); /* 电平监控(261):rms/peak deci-dB(-990=-inf),lvlseq=快照代际;透传时别漏(ABI 追加键)。 */ - sA(s, ",\"rms\":%lld,\"peak\":%lld,\"lvlseq\":%lld}", - audio_kv_ll(txt, "rms", -990), audio_kv_ll(txt, "peak", -990), audio_kv_ll(txt, "lvlseq", 0)); + sA(s, ",\"rms\":%lld,\"peak\":%lld,\"lvlseq\":%lld,\"vol_max\":%d}", + audio_kv_ll(txt, "rms", -990), audio_kv_ll(txt, "peak", -990), audio_kv_ll(txt, "lvlseq", 0), audio_vol_max()); } static int api_audio(int sock) @@ -1001,6 +1023,74 @@ static int api_audio(int sock) return rc; } +/* ---- 音频写命令(写级,PIN 已护):route/volume 直连 audiod(无 MSG_HELLO 握手),发帧→收 MSG_ACK。 + * audiod 对非法 port 也回 MEOW_OK(内部仅记录不应用,见 meow_audiod.c MSG_AUDIO_ROUTE), + * 故面板在**发出前**自行校验,绝不放 1(lineout)/4(SPDIF)/5(audiod 内部强制重烧值)。 */ +static int audio_write_cmd(uint16_t type, const void *pl, uint32_t len, m_ack_t *out) +{ + int fd = ipc_connect_tmo(g_sock_audio, IPC_TIMEOUT_MS); + if (fd < 0) return -1; + uint8_t buf[64]; + uint16_t rtype = 0; uint32_t rid = 0; + int n = -1; + if (send_frame(fd, type, 0x22, pl, len) == 0) + n = recv_frame(fd, &rtype, &rid, buf, sizeof buf); + close(fd); + if (n < (int)sizeof(m_ack_t) || rtype != MSG_ACK) return -1; + if (out) memcpy(out, buf, sizeof *out); + return 0; +} + +/* POST /api/audio/route → 手动切输出路由。仅接受 0=auto/2=3.5/3=4.4; + * **绝不接受 1/4/5**(4=SPDIF、5=audiod 内部强制重烧 FPGA 值)。写级:前端切换前确认弹窗(选错口→无声)。 */ +static int api_audio_route(int sock, const char *body, size_t body_len) +{ + if (!body || !body[0]) return send_err(sock, 400, "BAD_REQUEST", "缺少 body"); + jv_t *root = jv_parse(body, (int)body_len); + if (!root) return send_err(sock, 400, "BAD_REQUEST", "body 非合法 JSON"); + jv_t *jp = jv_obj_get(root, "port"); + if (!jp || jp->type != J_NUM) { jv_free(root); return send_err(sock, 422, "UNSUPPORTED", "缺 port 数字"); } + long port = (long)jp->inum; + jv_free(root); + if (port != 0 && port != 2 && port != 3) + return send_err(sock, 422, "UNSUPPORTED", "非法路由口(仅允许 0=auto/2=3.5/3=4.4;4=SPDIF、5=audiod 内部值禁止)"); + m_audio_route_t a; a.port = (uint32_t)port; + m_ack_t st; + if (audio_write_cmd(MSG_AUDIO_ROUTE, &a, sizeof a, &st) < 0) + return send_err(sock, 503, "AUDIO_UNAVAILABLE", "音频服务不可用(audiod 未运行/IPC 不可达)"); + sbuf_t s = {0}; + sA(&s, "{\"accepted\":true,\"port\":%ld}", port); + int out = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return out; +} + +/* POST /api/audio/volume → 写音量。**必须 clamp 到系统 vol_max**(读 settings.conf `audio.volume_max`, + * 缺省 100;设备当前按 plan 为 50)。audiod 内部仅 clamp 0-100、无 vol_max 防护——面板此处是唯一把守方 + * (防炸耳红线:平方锥度下靠近 100 极响,M2.96 曾有 dac 写 0=满幅事故)。 */ +static int api_audio_volume(int sock, const char *body, size_t body_len) +{ + if (!body || !body[0]) return send_err(sock, 400, "BAD_REQUEST", "缺少 body"); + jv_t *root = jv_parse(body, (int)body_len); + if (!root) return send_err(sock, 400, "BAD_REQUEST", "body 非合法 JSON"); + jv_t *jv = jv_obj_get(root, "value"); + if (!jv || jv->type != J_NUM) { jv_free(root); return send_err(sock, 422, "UNSUPPORTED", "缺 value 数字"); } + long v = (long)jv->inum; + jv_free(root); + int vmax = audio_vol_max(); + if (v < 0) v = 0; + if (v > vmax) v = vmax; /* 关键 clamp 红线 */ + m_audio_volume_t a; a.pct = (int32_t)v; + m_ack_t st; + if (audio_write_cmd(MSG_AUDIO_VOLUME, &a, sizeof a, &st) < 0) + return send_err(sock, 503, "AUDIO_UNAVAILABLE", "音频服务不可用(audiod 未运行/IPC 不可达)"); + sbuf_t s = {0}; + sA(&s, "{\"accepted\":true,\"value\":%ld,\"applied\":%u,\"vol_max\":%d}", v, st.status, vmax); + int out = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return out; +} + /* ---------------- 功耗管理:meow_powermgr IPC(MSG_PM_QUERY→MSG_PM_RESULT) ---------------- * 客户端序列同 perf/power:connect → MSG_HELLO → 读 ACK → MSG_PM_QUERY(subset) → MSG_PM_RESULT(JSON)。 * powermgr 不在/超时/应答异常 → 负错误码(调用方转 503 POWER_UNAVAILABLE;overview 里转 available:false)。 */ @@ -1162,33 +1252,64 @@ static int api_net_conns(int sock, const char *query) return rc; } -/* GET /api/net/dns → 0xEC status(netmgrd 对 status/stats 同输出)→ DNS 代理统计 JSON。 */ -static int api_net_dns(int sock) +/* DNS 代理统计对象 JSON 到 s(即 `{...}` 本体,不含外层 "dns" 键)。 + * 返回 0=成功;-1=传输不可达(netmgrd 不在);-2=code!=OK(DNS 代理不可用)。 + * 供 /api/net/dns 单发与 /api/overview 的 net 块复用(首页严格单请求)。 */ +static int net_dns_obj_fill(sbuf_t *s) { m_net_dns_ctl_t q; memset(&q, 0, sizeof q); strcpy(q.cmd, "status"); uint16_t t; uint32_t code; uint16_t meta; char txt[MEOW_IPC_MAX]; int n = net_ipc(MSG_NET_DNS_CTL, &q, sizeof q, &t, &code, &meta, txt, sizeof txt); - if (n <= 0 || t != MSG_NET_DNS_RESULT) - return send_err(sock, 503, "NET_UNAVAILABLE", "网络管理服务不可用"); - if (code != MEOW_OK) - return send_err(sock, 503, "NET_NODEV", txt[0] ? txt : "DNS 代理不可用"); + if (n <= 0 || t != MSG_NET_DNS_RESULT) return -1; + if (code != MEOW_OK) return -2; /* txt: `dns mode=%s enabled=%d upstream=%s cache=%d/%d q=%llu deny=%llu first=%llu resolv_modified=%d` */ char mode[32] = "", upstream[64] = ""; int enabled = 0, ch = 0, ct = 0, rmod = 0; unsigned long long qq = 0, deny = 0, first = 0; (void)sscanf(txt, "dns mode=%31s enabled=%d upstream=%63s cache=%d/%d q=%llu deny=%llu first=%llu resolv_modified=%d", mode, &enabled, upstream, &ch, &ct, &qq, &deny, &first, &rmod); - sbuf_t s = {0}; - sA(&s, "{\"mode\":"); - sA_str(&s, mode); - sA(&s, ",\"enabled\":%s,\"upstream\":", enabled ? "true" : "false"); - sA_str(&s, upstream); - sA(&s, ",\"cache_hits\":%d,\"cache_total\":%d,\"queries\":%llu,\"denies\":%llu,\"first_seen\":%llu,\"resolv_modified\":%s}", + sA(s, "{\"mode\":"); + sA_str(s, mode); + sA(s, ",\"enabled\":%s,\"upstream\":", enabled ? "true" : "false"); + sA_str(s, upstream); + sA(s, ",\"cache_hits\":%d,\"cache_total\":%d,\"queries\":%llu,\"denies\":%llu,\"first_seen\":%llu,\"resolv_modified\":%s}", ch, ct, qq, deny, first, rmod ? "true" : "false"); - int rc = send_json(sock, 200, s.b ? s.b : ""); + return 0; +} + +/* GET /api/net/dns → 0xEC status(netmgrd 对 status/stats 同输出)→ DNS 代理统计 JSON。 */ +static int api_net_dns(int sock) +{ + sbuf_t s = {0}; + int rc = net_dns_obj_fill(&s); + if (rc == -1) { sbuf_free(&s); return send_err(sock, 503, "NET_UNAVAILABLE", "网络管理服务不可用"); } + if (rc == -2) { sbuf_free(&s); return send_err(sock, 503, "NET_NODEV", "DNS 代理不可用"); } + int out = send_json(sock, 200, s.b ? s.b : ""); sbuf_free(&s); - return rc; + return out; +} + +/* overview 用的 net 块:netmgrd 状态 JSON + 本面板 DNS 统计(并入 "dns" 子键),首页可严格单请求。 + * 返回 0=成功(已追加 `,"net":{...}`);-1=netmgrd 状态不可用(调用方回 available:false,绝不假数据)。 */ +static int net_block_fill(sbuf_t *s) +{ + uint16_t nt; uint32_t ncode; char njson[MEOW_IPC_MAX]; + int nn = net_ipc(MSG_NET_STATUS_REQ, NULL, 0, &nt, &ncode, NULL, njson, sizeof njson); + if (nn <= 0 || nt != MSG_NET_STATUS_RESULT || ncode != MEOW_OK || !njson[0]) return -1; + /* 状态 JSON 为对象:剥外层大括号,拼入 DNS 子键(DNS 不可用则省略该键,仍回 net 状态,不谎报)。 */ + size_t l = strlen(njson); + while (l > 0 && (njson[l - 1] == ' ' || njson[l - 1] == '\t' || njson[l - 1] == '\n' || njson[l - 1] == '\r')) njson[--l] = 0; + if (l < 2 || njson[0] != '{' || njson[l - 1] != '}') return -1; + njson[l - 1] = 0; /* 去尾部 } */ + sbuf_t dns = {0}; + int drc = net_dns_obj_fill(&dns); + sA(s, ",\"net\":{"); + sA(s, "%s", njson + 1); /* 去首 { 的状态内层 */ + if (drc == 0 && dns.b) sA(s, ",\"dns\":%s", dns.b); + sA(s, "}}"); + sbuf_free(&dns); + return 0; } /* POST /api/net/dns/flush → 0xEC flush(写级:HTTP 层走 require_auth;IPC 层由 netmgrd 依身份判定)。 */ @@ -1473,10 +1594,8 @@ static int api_overview(int sock) else sA(&s, "\"power\":{\"available\":false},"); sA(&s, "\"audio\":"); audio_fill(&s); - uint16_t nt; uint32_t ncode; char njson[MEOW_IPC_MAX]; - int nn = net_ipc(MSG_NET_STATUS_REQ, NULL, 0, &nt, &ncode, NULL, njson, sizeof njson); - if (nn > 0 && nt == MSG_NET_STATUS_RESULT && ncode == MEOW_OK && njson[0]) - sA(&s, ",\"net\":%s", njson); + if (net_block_fill(&s) == 0) + ; /* net 块已追加(状态 + 合并的 dns 子键) */ else sA(&s, ",\"net\":{\"available\":false}"); sA(&s, ",\"ams\":"); @@ -3287,6 +3406,19 @@ static int api_system(int sock) if (f) { if (fgets(b, sizeof b, f)) bdf = atoi(b); fclose(f); } } const char *bootname = bdf < 0 ? "meow" : (bdf ? "hiby" : "meow"); + /* 当前运行模式:读 /tmp/meow_boot_mode(meow/hiby),缺失回退 default(PANEL_ENHANCE_PLAN 批1 前端读 boot.mode) */ + char modebuf[16] = {0}; + { + FILE *f = fopen("/tmp/meow_boot_mode", "r"); + if (f) { + if (fgets(modebuf, sizeof modebuf, f)) { + char *p = modebuf; + while (*p) { if (*p == '\n' || *p == '\r' || *p == ' ') { *p = 0; break; } p++; } + } + fclose(f); + } + } + const char *bootmode = (modebuf[0] == 'm' || modebuf[0] == 'h') ? modebuf : bootname; char host_local[80]; snprintf(host_local, sizeof host_local, "%s.local", host); sbuf_t s = {0}; @@ -3300,6 +3432,8 @@ static int api_system(int sock) sA_str(&s, arch); sA(&s, ",\"uptime_sec\":%lld,\"boot\":{\"default\":", upt); sA_str(&s, bootname); + sA(&s, ",\"mode\":"); + sA_str(&s, bootmode); sA(&s, "},\"network\":"); char netbuf[1024]; if (perf_extract_network(json, netbuf, sizeof netbuf) == 0) { @@ -3334,7 +3468,25 @@ static int api_system(int sock) sA_str(&s, ver); sA(&s, ",\"latest\":"); sA_str(&s, ver); - sA(&s, ",\"available\":false,\"url\":null}}"); + sA(&s, ",\"available\":false,\"url\":null}"); + /* 重启原因 / 升级状态:svc_power 读级查询(POWER_REBOOT_REASON(8)/POWER_UPGRADE_STATUS(9),只读、 + * 任意调用者)。st.msg 分别为 "coldboot=reboot|shutdown|unknown" 与 "upgrade=yes|no"。 + * 前端批1-B 已留位(读 d.reboot_reason / d.upgrade_status),此处点亮。查询失败保持空串(不谎报)。 */ + char rreason[48] = "", ustatus[32] = ""; + { + m_power_status_t st; + memset(&st, 0, sizeof st); + if (ipc_power_action(POWER_REBOOT_REASON, 0, NULL, &st) == MEOW_OK) + svc_msg_kv(st.msg, "coldboot", rreason, sizeof rreason); + memset(&st, 0, sizeof st); + if (ipc_power_action(POWER_UPGRADE_STATUS, 0, NULL, &st) == MEOW_OK) + svc_msg_kv(st.msg, "upgrade", ustatus, sizeof ustatus); + } + sA(&s, ",\"reboot_reason\":"); + sA_str(&s, rreason); + sA(&s, ",\"upgrade_status\":"); + sA_str(&s, ustatus); + sA(&s, "}"); jv_free(root); int ret = send_json(sock, 200, s.b ? s.b : ""); sbuf_free(&s); @@ -3437,6 +3589,21 @@ static int api_key_batch(int sock, const req_t *r) } /* ---------------- 日志 ---------------- */ + +/* 日志来源分组(批2 崩溃/日志中心):按文件名前缀归组,供前端分组展示 + 前缀过滤。 + * meow_* → system(MeowOS 服务); crash_* → crash; ams_* → ams; audio_monitor_* → audio_monitor; + * net_* → net; power_* → power; 其余 → app(App/stdout 兜底)。 */ +static const char *log_group(const char *name) +{ + if (!strncmp(name, "crash_", 6)) return "crash"; + if (!strncmp(name, "ams_", 4)) return "ams"; + if (!strncmp(name, "audio_monitor_", 14)) return "audio_monitor"; + if (!strncmp(name, "net_", 4)) return "net"; + if (!strncmp(name, "power_", 6)) return "power"; + if (!strncmp(name, "meow_", 5)) return "system"; + return "app"; +} + static int api_logs_list(int sock) { if (!tf_present()) return send_err(sock, 503, "NO_CARD", "未识别到 TF 卡"); @@ -3459,7 +3626,9 @@ static int api_logs_list(int sock) first = 0; sA(&s, "{\"name\":"); sA_str(&s, e->d_name); - sA(&s, ",\"size\":%lld,\"mtime\":%lld}", (long long)st.st_size, (long long)st.st_mtime); + sA(&s, ",\"size\":%lld,\"mtime\":%lld,\"group\":", (long long)st.st_size, (long long)st.st_mtime); + sA_str(&s, log_group(e->d_name)); + sA(&s, "}"); } closedir(d); sA(&s, "]}"); @@ -3544,6 +3713,137 @@ static int api_logs_read(int sock, const req_t *r) return rc; } +/* ---- 崩溃汇总(批2 崩溃/日志中心):解析最新 crash_.log(meow_crash 落盘格式) + * 一行一条:` `;svc 的 detail=` exit=`/` signal=`, + * dmesg 的 detail=内核行原文。聚合出「每实体崩溃数 + 最近崩溃时间/信号」。只读、无副作用。 */ +#define CRASH_TAIL_MAX (256u * 1024u) /* 崩溃日志单次读取上限(内存约束,不整读大文件) */ +#define CRASH_ENT_MAX 64 /* 实体汇总上限 */ +#define CRASH_DMESG_TAIL 5 /* dmesg 保留最近行数 */ + +static int api_logs_crash(int sock) +{ + if (!tf_present()) return send_err(sock, 503, "NO_CARD", "未识别到 TF 卡"); + /* 找最新 crash_*.log(按 mtime);无 → 空汇总(不 404,不谎报)。 */ + DIR *d = opendir(LOGS_DIR); + if (!d) return send_json(sock, 200, "{\"file\":\"\",\"count\":0,\"dmesg_count\":0,\"dmesg_tail\":[],\"entities\":[]}"); + char best[512] = ""; long best_mt = -1; + struct dirent *e; + while ((e = readdir(d))) { + if (strncmp(e->d_name, "crash_", 6) != 0 || e->d_name[0] == '.') continue; + char full[1024]; + snprintf(full, sizeof full, "%s/%s", LOGS_DIR, e->d_name); + struct stat st; + if (stat(full, &st) < 0 || !S_ISREG(st.st_mode)) continue; + if (st.st_mtime > best_mt) { best_mt = st.st_mtime; snprintf(best, sizeof best, "%s", e->d_name); } + } + closedir(d); + if (!best[0]) + return send_json(sock, 200, "{\"file\":\"\",\"count\":0,\"dmesg_count\":0,\"dmesg_tail\":[],\"entities\":[]}"); + char full[1024]; + snprintf(full, sizeof full, "%s/%s", LOGS_DIR, best); + int fd = open(full, O_RDONLY); + struct stat st; + if (fd < 0 || fstat(fd, &st) < 0 || !S_ISREG(st.st_mode)) { if (fd >= 0) close(fd); return send_err(sock, 500, "INTERNAL", "崩溃日志不可读"); } + off_t off = st.st_size > (off_t)CRASH_TAIL_MAX ? st.st_size - (off_t)CRASH_TAIL_MAX : 0; + size_t buflen = (size_t)(st.st_size - off); + if (buflen == 0) { close(fd); return send_json(sock, 200, "{\"file\":\"\",\"count\":0,\"dmesg_count\":0,\"dmesg_tail\":[],\"entities\":[]}"); } + if (off) (void)lseek(fd, off, SEEK_SET); + char *buf = malloc(buflen + 1); + if (!buf) { close(fd); return send_err(sock, 500, "INTERNAL", "内存不足"); } + ssize_t n = read(fd, buf, buflen); + close(fd); + if (n < 0) { free(buf); return send_err(sock, 500, "INTERNAL", "读崩溃日志失败"); } + buf[n] = 0; + + /* 每实体聚合(svc 行);dmesg 单独计数 + 留最近几行。 + * 有界缓冲(det ≤ 127 字符)保证 snprintf 到 name/detail 不越界且 -Wformat-truncation 零告警。 */ + struct { char name[128]; int count; long long last_epoch; char kind[8]; int code; char detail[160]; } ents[CRASH_ENT_MAX]; + int entn = 0, svc_count = 0, dmesg_count = 0; + char dmesg_tail[CRASH_DMESG_TAIL][128]; int dmesg_tail_n = 0; + char *ln = buf; + while (*ln && (*ln == '\n')) ln++; + while (*ln) { + char *nl = strchr(ln, '\n'); + if (nl) *nl = 0; + long long epoch = 0, up = 0; char src[16] = "", det[128] = ""; + int f = sscanf(ln, "%lld %lld %15s %127[^\n]", &epoch, &up, src, det); + if (f >= 3) { + if (!strcmp(src, "svc")) { + svc_count++; + /* det = ` exit=` 或 ` signal=`;name 为第一 token(就地切分) */ + char name[128] = "", kind[8] = ""; int code = 0, k2 = 0; + char *sp = strchr(det, ' '); + if (sp) { + *sp = 0; + snprintf(name, sizeof name, "%s", det); /* det ≤127 → name[128] 不截断 */ + char *kp = sp + 1; + if (!strncmp(kp, "exit=", 5)) { snprintf(kind, sizeof kind, "exit"); code = atoi(kp + 5); k2 = 1; } + else if (!strncmp(kp, "signal=", 7)) { snprintf(kind, sizeof kind, "sig"); code = atoi(kp + 7); k2 = 1; } + else { snprintf(kind, sizeof kind, "crash"); k2 = 0; } + } else { + snprintf(name, sizeof name, "%s", det); + snprintf(kind, sizeof kind, "crash"); + } + /* 聚合到 ents(按 name 匹配;超限则丢弃剩余陌生实体,仅计入总数) */ + int found = -1; + for (int i = 0; i < entn; i++) if (!strcmp(ents[i].name, name)) { found = i; break; } + if (found < 0 && entn < CRASH_ENT_MAX) { + found = entn++; + snprintf(ents[found].name, sizeof ents[found].name, "%s", name); + ents[found].count = 0; ents[found].last_epoch = 0; + ents[found].kind[0] = 0; ents[found].code = 0; ents[found].detail[0] = 0; + } + if (found >= 0) { + ents[found].count++; + if (epoch >= ents[found].last_epoch) { + ents[found].last_epoch = epoch; + snprintf(ents[found].kind, sizeof ents[found].kind, "%s", k2 ? kind : "crash"); + ents[found].code = code; + snprintf(ents[found].detail, sizeof ents[found].detail, "%s", det); + } + } + } else if (!strcmp(src, "dmesg")) { + dmesg_count++; + if (dmesg_tail_n < CRASH_DMESG_TAIL) snprintf(dmesg_tail[dmesg_tail_n++], sizeof dmesg_tail[0], "%s", det); + else { /* 前移一行,末尾放最新 */ for (int i = 0; i < dmesg_tail_n - 1; i++) memcpy(dmesg_tail[i], dmesg_tail[i + 1], sizeof dmesg_tail[0]); snprintf(dmesg_tail[dmesg_tail_n - 1], sizeof dmesg_tail[0], "%s", det); } + } + } + if (nl) { *nl = '\n'; ln = nl + 1; } else break; + while (*ln == '\n') ln++; + } + free(buf); + + sbuf_t s = {0}; + sA(&s, "{\"file\":"); + sA_str(&s, best); + sA(&s, ",\"count\":%d,\"dmesg_count\":%d,\"dmesg_tail\":[", svc_count, dmesg_count); + for (int i = 0; i < dmesg_tail_n; i++) { if (i) sA(&s, ","); sA_str(&s, dmesg_tail[i]); } + sA(&s, "],\"entities\":["); + int first = 1; + for (int i = 0; i < entn; i++) { + if (!ents[i].count) continue; + if (!first) sA(&s, ","); + first = 0; + sA(&s, "{\"name\":"); + sA_str(&s, ents[i].name); + sA(&s, ",\"source\":\"svc\",\"count\":%d,\"last_epoch\":%lld,\"last_kind\":", ents[i].count, ents[i].last_epoch); + sA_str(&s, ents[i].kind[0] ? ents[i].kind : "crash"); + sA(&s, ",\"last_code\":%d,\"last_detail\":", ents[i].code); + sA_str(&s, ents[i].detail); + /* 最近崩溃时间(epoch → 可读);strftime 本地时区,失败回退 epoch */ + char tbuf[32] = ""; time_t t = (time_t)ents[i].last_epoch; + struct tm tmv; + if (ents[i].last_epoch > 0 && localtime_r(&t, &tmv)) strftime(tbuf, sizeof tbuf, "%Y-%m-%d %H:%M:%S", &tmv); + sA(&s, ",\"last_time\":"); + sA_str(&s, tbuf); + sA(&s, "}"); + } + sA(&s, "]}"); + int rc = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return rc; +} + /* ---------------- 通知(数据源 = 优先 launcher 内存活跃集,回退 TF 归档) ---------------- * 数据源优先级(MEOWPANEL_PROTOCOL §3.8 / 任务): * 1) launcher IPC 内存活跃集(实时)—— `MSG_NOTIFY_QUERY`(0x25)→`MSG_NOTIFY_QUERY_RESULT`(0x27) @@ -5106,6 +5406,8 @@ static int handle(int sock, req_t *r) if (!strcmp(p, "/api/apps/install")) return api_apps_install(sock, r); if (!strcmp(p, "/api/notifications/dismiss_all") || !strcmp(p, "/api/notifications/clear")) return api_notification_dismiss_all(sock); if (!strcmp(p, "/api/net/dns/flush")) return api_net_dns_flush(sock); + if (!strcmp(p, "/api/audio/route")) return api_audio_route(sock, r->body, r->body_len); + if (!strcmp(p, "/api/audio/volume")) return api_audio_volume(sock, r->body, r->body_len); if (!strcmp(p, "/api/key")) return api_key_batch(sock, r); if (!strcmp(p, "/api/input/tap")) return api_input_tap(sock, r); char seg[256]; @@ -5153,6 +5455,7 @@ static int handle(int sock, req_t *r) /* ---- 日志 ---- */ if (!strcmp(r->method, "GET") && !strcmp(p, "/api/logs")) return api_logs_list(sock); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/logs/crash")) return api_logs_crash(sock); if (!strcmp(r->method, "GET") && !strcmp(p, "/api/logs/read")) return api_logs_read(sock, r); /* ---- 通知 ---- */ diff --git a/patch_v2/meowpanel/meowpanel_host b/patch_v2/meowpanel/meowpanel_host index 5f940a3b4043eb900a89e386057d6daff5ec35c7..daeaaacd31a6fb48ce31c99836df7c00174880e8 100755 GIT binary patch literal 148968 zcma%^4`5Wqwf|>#LlXWeuWk}RD*h}GViNhYzt5R_Z*p@buP++z zo$t(?IWu$S%$YMYH|wvz`3A4YqwF7_`h}8Eb2gK3aMN*fPXJnm#IY1 z1b#zStou31%4R>4t#m$~l5evW?|zQ5(%Da&LwWYI;x6`R__dkRekxrX^Ize$^HVdv z^HZ~6`&pfCQd@GZP1Q^%sU%b2Fd)R2KjC)2^S?O@3Ed@$Tms;^fDEN?Q4m zr~KAf^>9D^#L16e|7)g|*ZD`+ER=k^UNrf1KVPs4u%A{?-AX>G-~aVzh?TIwDzC5h zOde_`w4WwdCckM!N&nCJ`fcios&8CXe0;|7f6RHk`L?>(D^oZ9B!1=cr6pG`U-;$a zOIO^t_RGb^t4o(m&G}0C%CB5y_M_0U>6xYc-~RO>wHv?u#k4+^0Vo{x{OqUSQhI{j zZ;SfC|3-?7rGK=K^grkW-%G_VM(6K+;45I;-_2dm%eFrF`L90kKlXud=mY;+AN=^J zR~C8PKQH!C-~a4`&cl7Ap9?3_fAN9)XBmHH4(EoNHbjJ5V=imBBzpoGa_x6E5)CZo~N4c~6 zNPkBk={NR~{PlW{HBle zEq%1x$v*JA`@l>3z(47OpJ)2uC#4VkP#<(E`$*r}NBT8=@OiKgd~hH5q&~`B(ntEE zeeg4&5B#$}=zOIQd`};Ap6f%-#caEnemmSpy{_#8U)cv8Zy)2Rx)1(`_CY79kM#HV z!H-&e_o6kW`rmR@zGijlss~m1idCzZu2{2JEiYeFyhfETT2sEVblJ*PyslZjLQ<42 z2Ph)vnx*$HQbk3iBV4*tM zx>}ViU7@2eBUh{YR$x^wla#AUR_o`Ql?&CXmCKi_#Vc1WS^@2)aC7zKqVn?6;uVWk z`Ge(a7Tv3a!$oTpd=)PjrixYzjpaH+>6!;uEh;K0B2ulsSBku^eEFh9tDtr7qI;>2 z=9A?7ukKwY35tsDU+kzuPoZm8uURP-yx(plotKtawREA9N^16bSuUly@<~QYym#gO zi|is7>lUQo(&F+(rS}R?&Vq~AtXwJ;DJ@^MLfvZ;1zWCG>EQX$)oS@t8i$P3lD37;ik@O5o#vvbsB~>{(c+~mikB~aXpt_B#H(~`lLa~} zSL>=t!%$OO72Wo~eaqF-m8D3);#Kz{daD<$ zC`O1RfCMhR8#Yww$`vaXm99}z)#XY!F*~JKqf3e9<+?->S{jLh%gR@-mIC2=#Y*Y% z;x$WGu22uGUb<$HDlU=8<>iYOS(3F3Fa(I1$|^>sCL%&l=CL+)Y$@VDjT(wVh?fOZYV%-%owb!glF!g1W;B@6lnO zDz(BUJ#RNX+n?aG7T7hmKjEKJJ64$%ezS!qyYPc6P`vyMcj4DRXX3do{6-58x$wVP zbmqJ8)TJh!RW977v(|;rx9D$l;U8Lbwz%*mR{9zjzQ)2|cHwrpbuRn~D}93tueI=) z3%BVUcj2#C={sHcJ_}Di*}GrfvhX1;{Pz|<+=bia`d#=3R{BXU{3qWx+kd_bx9QyB z!k@m^Ouxj1cUbh-y6|%r9&zDGTTMC}UASFtwF^(T($~1~@fKd^!mqUOJuduO3vY1Y zcDV;#_$^lY_g%Q%Zk;aNrlU^v?#Cq-ogpsVrZdTf+jMeW_)e?+=eqC}Ry!|o;WnLB zE_}VkPsD}W{M5K`o6gHF{7H+>9v2?9+s%dl)WTyf{O1;a(uE(i@FAyrx2H{KxC{Ti zm43VnZ?^EcF5IRw--SUqW9&zDG&s*~E!Y{G#EiT;F zlY3maO{c+y`z<<+E_{-OpLF3iolX}%#Y&$n4k~`^`Qio(AMe8Nu<%JPyvV{sF8qEA z54&)i&Jq{C&Pu=5g>Sa-EiT-qQ{%$7Sn2CrxGn#UF5IT`z6<}cMd!E+-)-T^XL`5W z-zSTrojY8(O=qnOx9LP&_<$G8a;sgqO{dO<+jRE0 z@DUcBgD%{rbKHg7bWXbPphZWu_ij&{j^BmbbjG{znHHT~7jDzJ!-d;)!Y+KiMQ4=@ zx8$fPg;1c3%AP+x$u{)^z&V~t@l>B@Yk*MYhCz$3*YF%-?i|UUARrB&V?Vg z(l@y9;}#xs;WnM)F8pIFeWwez=?w4a-7hvBzYABEoi@pZ+wC*oh1+!QaN(&Ioh2^Z zmfMXk+@@3Q!Y{Yz)VT2R7GCGVzii=qTzI~PH@NU33qR<>7hCxIF5GU1P8V*|QJuZp zd9_7nhzqyv@JTLwy_G)Kgy0rW14FbyoV5F5Kp4h-~;c?15id>4&@U-&y#07jDbjTo-QBneW1nS#-iK z{4)!WxbQLSEc?oZzr4i6x43Xy|L<|(=PmjTF1-CQlTM=xx9fG%h1+yGUHH!|ev++y zeA~XV`5EuRZ90=&c-Ie1esW#-77Gu#@E0w7t_!cV@cAyh&cg3-;lHr(unXU3;Y(cj zZ!LV43%~HJ$^Tjxe%MMMap50W_(m6=yv3wb?ZS^*>9@G>Cd*!`apAA5G3mVQ!uMGC z$#`%1Z-A|Jxgzlcj4c+@JTNG#}=OJ!tMDwpXtCm9r#@i{NOpW-@Wi-_NW=z=)f(PnvQti zfjiF$#T>ZvyvuP1E_)mH&q)VvpXrgfP6yuKPAt#!J$w#y;K>erkOLp$z-3R%{u%DT zFR?+Meg}T310V0eo&7S&fjjp}a~-&IzbWLvQyui@I&e7~VgJl`;KOW?=N%4QPSw~y zVFy0k26--V;3FLPDhEE&fvmrAWy#opX9*DJMgO<_#_8@wFA#} z;MNqPV?z!+$B}-n1E1o+=R0sYlVtzg;lQWaAkVM^&voES9QbqxzRH1HM=^EmS_f`# zEl5PffzNQz+33KXdbrwwf7OwGivtfi@EQj`%Ynb_!1Ek%jlRfkzzpHy!v!2VUgBs~vdQfp2l(#SXm2 zftNV&mmPSi1Fv)73my0#2foOG&&>Ay>HNCAwdZ}xnCnxU&#&9}@?Nk8U(sPlGIf$P zt30Z1Xvqy-L%fp>zc=%6rr-A``&Y*;CN9g2)8Tsv=Q+YF2$wj*s|i;+!uJ#2;RruO zc)uh32;mk-xRS6pNAse~`!?Y$NBA+qd5-WCgi9RZCkaN4SY_r6YWp@D4}#uY~tI!ha{+;t018_D<_5{}|ycNBCpHd5-X> zgiE@^)k9Acu5^SyBfP^A{+#fBNB9Ea7Dw1Shw^jn@~ej?63%jj2N2G4gfAgn;s~b@ zu5^Tl5#Helk0iX`5x$&oizA#x*gL(a{3{4&Il@80d5-W`2$wj*R}-#ugr^eT;Rs(t zc)uh3Rl+Tfa2{drH9h6uKsd`0o<}&(5&k;i5=XdzaHS*sZ-jR^!rvgg-x2;M;TA`@ zgs}J8p7IwH&T@qBA)Mz3uOM9F2(Knw=?LFXc!wkW5aIof@FRp<9N|jB-WfgRf17ZY zBm5ZQJV*Em!X=LIlY}cB;b#c%aD=xK-tP$ifN+Z=yo0d!x}NfXNI1(8juOsugnvS~ z#1Z}(;YvsN=Y)4S!oMWE-w}S3aEl|npRo6|bmILi_KE#W*z_z#3j9N{Lym5%UX z!aE${zY^Z>2>+dMiy4mle231jORPP=!DF=FnOyssPX*IYZzu?RRJA%Yr>kv2Qf)_R z|Jn|pC%Tq-qiflK+Tr;_jbAF&c(#0C?dv?>;Mb!d)eu(x(MHUty7c=* z-jl5NyLcaHy;t*osrBB-d#d%GaGA00fy;~+He6=JGAwM;WyW+BDTs|yU7_xN(p6zZsgvdKrV7Uzb@BMKp)qPVZlAhm@=^?+s%To2r;KKwFWPW*s*wkc7vZn! zlT73L7vj(Mj-T8ef4_$`X@2AVykW*uu5>~}O}^C7bY}aFO|E#2NBo+WntY|Pfq2~x z;{(P<_-hEL-4S>@3~kS(RKru~?ea{TY*cCa&)XzWBimwY8t1lKm$%(Gi_fv*U&u1Pak2OrR{VQe zM#076bFKK~Y-1kr4Ho|u@V}onDW+fi309g=wlV8sG{$?oHVjak6*9TktCn%!pm055 zomVB)OW&(=V~nfGi_Gfw33yb_SD@dHEH}ir6>Lvbx8f^W7N)%93{{v;z5sGsPPoPs zDaau0e?W7McXs`qJX?J#3XdmSd}+bJNxz}{?(uBnr(U^k7AYWaL5SafknfC?k=8l& z63SO9RR1toGx>F%o5vVC$m1vNeM+TGUjLs@HTyzcXYMKQjQP@{wWNjTDc2;ap+(3t zXNL>hys4YId?SP5#8B7y^JX2U6Mua?p3$5X>XLlVlh02+KX|4Zw(Pgc%vVev596#0 zp4ue+Kr{XKNUt2}qt5h<#WRxjQZsGU|CW}q_YX;%YNmbge@n}_{=1~jFw?I1-_kP1 z-<7nZ%(SJXy=eWA`4Z}wgw zUDb~zZN$?#RoYi%`&Wcps7tdiHK^O-@iE579<^EWyiME04i(V`V#ocJ2$6`bs%}Y-FeM5+?#q0*T%S%IW3%3Fg@f^(=^Y==X6EL zqsvGLb^VI^ypP`T)0g3_l<94Z_w(!acdz^G_W2uanLv79Lse6@YB()(^-Ps;Vn6jj zZl@PTR2lai3QNZ9-D?-c4kUE+(Dt1^#Q75WlF)7LNe zlx;_Mv6*5>x_sriwRE&fS>LJ3W^W8VQ~_=8g?J9KYuEOc{X~={PH~LDWlG~8zL#Xud2OeF=%FP_LddLgq9BH zUS^!*J?`swNVhlR^i$;G{JNpF=kpVcwgoA*?a!;OeA=S*J4(yQ80r!jqKvGDqTI13 zi*l=G3|UYa_6EnqigI7{Cj|3ULa=1XSN4>WX1(&9s<;p@Z1G(ZO+emf<%a6364cP_ zn=4XFXYZR=Jbu=^8wQ0YFfvK5K@m-=;ie z9%v1n8=CMYdg9X1tO>__DZxQGc@x@vLxRa;@+X||4Gy;W1_h7$E)AaX^$&jROAfaB zh6ew>VTO@}Y~Q8^4wyBuGBq%K|Ge3rtN~RjeO_SU{&{~|diS1yN*H)#$s>C{f*0_C ze^UJh2(~b1Lux>!4SY}an^%>5VBTi0Z@^}6`n;+;4$P|ppQ2I+p79L`O4>GGzhGP? zoZ3zwUFG!*eAVL}Sm5;y{HG^z;1F-WfscFA2PS(44xHc_FmUKxHQ~~bXTqQy?}X$r zz6tc5wk2D>!~8^h=PAz#8Sm1!yO80JeFLdiV(^5|8$9OoQO|Vh<_W$-|Fu6aGJPw0 zpn!4TPmlZa>)xnsy)=>{zK*s9p4v9#^9*CqQ=^P_Y{>K>p)QpZ>e_w!Ki~BtYuQWu zxkWK`Y69hjf1r$_bL!M@5>#Q#ml|!xj(mVIBy)-AAstUzAa!K~Wz>)v`;17;|rrp8f9PC5v-^NEw15hsN83LQiUpvSh4pr>wxk>)$O}63CTu&aeA#t!LWr z^oq?NrH|^QEz?3NMtb$^`psF&NJX#g^`OukCl{!S4ahZ?kWho;&ZS zA5}b_vpLUWlqag8qTB50LrcO1VM~3JRyKihclD?BUbTUtAt9X7t)_F;_=MQ)o zGs(J6wAsn>Pv>+sZyH(~;$7Bztxu)Y9(_Kw_M;!c*LM()H!iN1bu&1N( z4F_gm4;i!I>%xYr85h>8SHsYWZ}`@XN2OhP4`Gv!psKWf6D2g&$vUfDUzbPB2(!z`0*x3n)0v#id5=} zXLcy#_Ufm$Hel(ns=6|nTeee2du-i;4YdvYGkAUg z8T#;oI+ctbF1~QXyRoFmlYxiT^W|R8kC7GTqtxhjujiczWqlXgPm!+!`RN%?rk-i` z4tq!Hc-ZSXG!6PEw9Nm~A@jbdj8S{MPI)-=R7a_=wi6xQ;Y)~iWvi|c36X+KU;47; zl)LSo$+-hq<1{>UU*`jqyWXo#6(>HmHK5d{nJVK%HZr@J`ffX&ncJ1!!%s(PKDy*> ztxL+WZJvXUjP-rc5r2Y=jZ*08v4Nc(VSRKvVJSz()m^-o({8fXka@wL6J)%e5neUV z=r`8eQkSU@XFX4U1w9+{>JNXu{@s}>eOU$ktH<-|GnIE4I->9a(#Gb^>bg~AQC4i8r>mU!F!74@rnGAd@y)*B$U+`=s?_JLm%s9PJi~5t8*}Pi(TVWq zY~!HFQKdKao$b_-GK2p?`I$ouAGnz4~s3p5>OEU+HAssa7Q zI=1SyfNGa0)a`znl}n^^lq%PAW<*%k4suBQgbn2!`le~9fZeO!)Q$@*LB zV6J28y5&;J5;-*G(xb;wJb%EU<_&|5*oJ{d2kWt}ogO1=kgD~CM0Z3A#-w>_S=$&# zXs2TbJY66C+9PFN7dtQz8=a?b5Oz1u{6YA;cy1UZ_5tyOjD9+Pu#u?a2aBzEovl~3 zKA+>!KD$`{C6tdYhY#_UX?@tHR{B?LLKzb>Hsbj`dP;QC8TwN6Qa*aB6g}0>{6fD6 z7c%aTpqs?r%|-{cqJvros`_loZXJdHB2#=A%4oU8J3;i;A*=uBa~Z>BRU<>6BReuL zqG!^O$MoPqD@`nQ+c)~sF%fwFF8oU!rA^wIv(B$G^$EOp>ye|(B@R7;?H`e$L&yVm+p|7=mkTGz?=c%m%uTlX+#zSl;{*O-PDxRBp zHuJRX)ZnAky}QmCvwG{*L{&JSI`4fisjPs`myW-wDw@gy{op+#Y@0Tb@PE6zj``sK`_+ zzQ-pldGI4At@taE!Cfu1t0^z3!5I#DG3lCX1(A(&l-HX+>rimhF7yUpq5T`YozrAr zg?Z^#Y^s7C-qf2a_D|Mxd>*=|)EXz>HOI-o_1^Sl`0|(|hXqfPf7@>-=i2tYbF4wj znqPW+Mvt-1k$F3WZY#zH3b3A2lo9YVuMdbcr6zcv4_|?fm2pXZsYBBPlu@iP&xzQN zwvDv?NHUk%b@aoxIhXCNl{_NzOC=v=$XSEH=6qyHod`8-+iKc5Z`OJe&2-|+k~W7% zlgMKTI}iO{?<~h$pP0Ux_B&Jcn$#Xg;;ZS{DeDgAUwk#RZ&R3Zw=-@6vj-Y#d|uaA zg)TO}@YXHg_#2#dLzuC)g><5W#isjxNBmiAAl7i`g>3v?{zyR%eIe_HkWcLrY&&bz zzmZ3HO_{_!(zwx04#z(PNy~Fw8L)b>AUZoF9mK5iTPi;2wiukzKbE5g2 z_=+-+sbSG+&%+iBMLjf(v&>pGE>7m35Lo!E@`F2%khEU6rI=!rVEjV&r<2uuPFBtP*bG9BrD&m6n4BRaV1VL~JI; z*z_X8igkhXPbFpNQAQqgiYSwB*cHm!W`_&!4_?XG*~xmfNcomE&>m8^o;EY}tc=xG z+5uTMj`9>A&PP0D{U_^I(V>5!UqTn+QzEQuUtba?z@O#j`kKZ=>@XAzewDd9DIPjRkt=+b0xp)->-0op;zaq0n~YubyytR0+Hsck6H-L_8XT9#0I z_DiZOUi#&CL^pII_jWzIkQ?Da>xl0pYaQ`@&CeyL<_<+aGY-yVCm4L+@1*#NE6~{u z_^UUQW}o=2$!o3wQllBPPYu3mJti!lGJF^AKo(k&8`)D9Js|ta2g(0DW2J*WS=Y)~ z=@%)OOx{Q}t6*)+ee{$7y%Te}J-d{%mt!dJp+yyss8s)rb=<1KA6tjhew? z_%jxQOS^D(m-T*VI<|bB@K3!97c)+O1-+`yY<-SLc(T|0KOvvkHKKoHeJ1N4dDrPf zml$%ULFNhJQRvBB)$n;dC!MlvOnm7c=B!^n5_-x!6Oa*&-*ZiFKJDZ0iZk{?(_@|S z9MKi{nWBLYvW*$ic3!j2kD_~}ZlWWYs}Hg7lUqbt0eGK`ebApe?fu+WCjQabZ>Qv< zcZLd2F?f?Ull>p@b^L_z?)G?&_&WsmY>wbJ9l2@dxy)1IQxmM6a>UkXrv0}wzC;%G z-s8_*@AaROGfbsf8@9@rELExRlzT_wUmi(YWkm0yon$;dO&PSa_|(jKA5;KCFn6u{7E?j z;lpm1KE0B1b>C7qEiZ{`SEfokQNwzaId!`9LnzVQPpP0iME*8Y*Uz$t7+sk|jN#CV zWe=Hd$zzU9>;FMlrS+wU$>hU!A?$a{2W{BQljHHV%tFGgoF-F{{y8Zwik>OFKe>Yj}9)({^XdOXr zWsb=!?4ft3B_F%VBmLDa!?dC3L)$OxXMN|Fv{oOjzmR#VM*5Au`8#=KT`YQ8!aE3y zuR-c2`(rO8p(}ij^_NaJIx6cwDL;}R^T+6S{5;WLhboqp==GPZ0mbgkRKrgc^K3z< znKskt=zmiNax~>yc(&^$WlKG!ourOqpl!Dgb!*y49%+}?;prT*DrYxj-O<96_>_G- zx15jf5tx#p3xR^q6fM$DW+68z?`9 z%;>phoKMd+o`aDldpzgE<9+DWDb!8UZNDy3P(t~%bTRF2d4BJC#j zqSQ;)8=|)Zv25dyltcendOTI@@!x{Qd@AP%?HIw=x&eCGQXj&(T!UhlCzdq8H9_Ze@7UL!!53PhQq6(uZPm$W!(eh5weB zrk}(fw_+14VBDJhlYFR0f118TbWxq~qt=cw^nUVZbGqJyXLRMMLGT+(n$@)(KRREh z)8{Ngl>ZI*jprvDvJa*r1GN1sZR2d$`ZM@|(Q(_DS46IEBM*7e#ikCH@m@+EPbks^ zRwlGc)#j~251BqGy8aFLaF-vz_aS9F%QDxmJ?nJp+i3DOZ#rd8`6c>E!eT!OeS2@k z=}Xr-khOXIfVq~U{p!Rn*1GO?&d)NQX!B>;FNk6vR9Ed9W5`-X)+TzLveRq40Kdq| z$r$fq2fsoX*_8DX`-due_~QxqPA&gXTBP6=+N8!O>!q})L0bBvT6mW;s2CmEM?v}1 zp_%ht;)}6g{3@Zooaa8yqK3V*>(L*#%9?X2{UYaD!`_5?#$KI1OL%+l^<5a9asoPf zY@myBDMNe_Vb&OJjF&Lu(DoTMAanM5t&+NbpM3t$<5R*Zq>;5x7rKuzbvL+-b^nlr z`rjafGS0N_IFMpoY_C{k)NWhbCu7T|Ij?lfWwo@W@{iSR`R|ky!jC5HBW)>d(A}1y zNWs5Tmk9F+^O4@`xK7ereb|Bw3vK(X5O`rN@p?T*y)T!3Ko3qPuZ$z1Ay1Jr#&Gb9 zvbIPa8uw*xw22AR0Urhi!^z~Z}^Gn z(_1)x|JH>{O`RFzEC6HLmxhf~>gD_v`UhUC>c$#-4+e5Yj!&FspFc6bOJsILsH*Ak z+hdKh=&b4Z3nK&ayVm(+Z8pl@vq|B;W7-bR0R_-W;#U!!*9`67z^~}gnD{vfe+#;6 zS=WWJYcqG@+Yoy-hjXdS&k4ilJv2OH%T}@BU$^r4>5mLG{GAy3EPf#gn`n5n9Uj#pEj;t3eb0P(Sxsd{) zPk#nu9r0-;&=CHv$KT6X4i2LZ=wz`i%yGD__ufc^aoC?U-@r}?S$2Z>Uj5@5wua+L z)66~Wk*tj)O>=}6_Dl?0M$5v)D~#1(qMu{wSQ}U@RW`oyf6o z@V}VHd&{Wo``I#S%d51btSRN*#OGH=n$C)y=u0}(*{Y1Q*_KWCq2*6UkNDx)rqS|Y zZ{Gs;U!k<0$jU7I5z<~_YsT1{!pC+(&OB$H>qnobM$@aeYPk^q$!O|#;*{hY9?e`f zCAZ>I&U~$#(V0m87k22=sWAaT~&_8&OoKDfddDRI_W_GcxIy`M&Sm36Yv*1RN)Glme? zg+CXpE)f0_ayTOTOWFecG37b1>3?S5p0!;w_z2os@@?oTt1d7o#SkC=eR6h(a|N#@ zKC_iQ@eFCpS12#^S$wzX;B8><^87weu}3pGbGU63=V(5Q7wUa2UlL_!bf3Yyn0*&O z-#Tp~(O>$Ul4TP$V;?n$Uq<$b(5V~j{doF{`fQ58Pb4u^%XuQbA1~`uw=NYO>D<4y z&Y5t2#T&H8kL>Ac`_VdA5>OQd|A4liGXeqHNXDVphn`rkYMZm!!}W0{c$|8$Jww&c zp=~q6ob^NRNnc1DZ5oucq9pb}D@R?v+$XOwqZrcJc`_zi_CirR5`(9*Qc$4)^BlC&0DQOEC)3VMs z^$7aMY4hIB1EyAP3kfl3#S}UiPi^-rRpi3Thrvqwa=xNh|3nvtYZG zR`##OK2}4%Q{Y!MtL02}J92t{-7L-o;Q#WOzQ6beFTPA{%yr4^Z+MNio6P+(?B6AqMqO${a_bH9T1apq`MHdyvOlQ>(Htjf0IH{?8#>{XV@T0;DX zZ8u5%IPMw-T+a_r3_H+pVEPd2mX`-hX1 z$2mK>pCV`Uyw#QHEY?(vlfA^XpcmHPla*`w@63G&*#ofcA9GxJqBE76uEO7xGx|9d zC6`NmWUu1cu-Ik7H~L=IW48S&dL>da(g?ga&S*h?-k?21k5oJ|(h&P4Qc^NKf?wTC zmt_Rbj5AtEBmM}_MAl@X$dmiAA>_Ps3pPYV%E4w3KSXGJ!&dm1wwe7DMV+>JJ*PIy z{44cBCp}8N*58wpD}HJ5LrHnaYQg(F)^>Kb~s6IbukL9)nLrk6afY}C=v0G@^@vRT^miHKA{TzHV zzNT}gEl0+Vy-xCoJ(uk6|9IubuWrk2Yms=d@a973Hji=;6yu9!~KoUh%O6_mPkG>CuI*b9^QNc*!vQqC;;Q`%Y9C>{7Ed+F^BmX15%rQb~b)_&&z&g3e+ zcWcW*+k*bJZao)ZzXm^x)?G1pX*po}sYIsa%*QdpM|l^&m*^PLEme1n*Lz!@5s{|B zX8n5l-=*(F)*dE}=&QB`H_{jL*po2zmhH>4&Zh=@_>^;@=6;vn57557{)aU0v;kdR?czLI*VW{0VNQ=^B^#~SqT=6Pzbq?P=$FF({ltek|IAqJ68_aIW|rW$>sKkXy<2{VLd*j4X?0adWG~)e? z*@tLnX+Pm#@{7;sddl6Fl|20q#M%7JAUzwHQQ7k}`5tj1|19SMXoHzP{6^4dp?$ri zQ>-r{Gkf+k|M98WcQdd9WbI?x>7%1NNdFmSMM%G48a@u>NPHX($cXSG_45p2Kaeys zhe`X&9+1>g$_tE{VC;v+QR2fw+`np1=Ek<0j( zGZ^vw{{LdV+T(Y2-kXp$m<-9?9^i!}J_U(7vvnKcF-n31!uQm(5<=)GF zY#y(dy>aSy7wIz3`A)TDMw-&F;lwwgeN5E(Ys87YBlT~_R+aIO4DCj~^?7aQSvu-G z-QN4{qCWi^s+xo!AN?>EKgw)mFvi_9d@?zli8+O=6pH7cq!ou-n}aQYIJ*$It2%S zHJ6&}h5dsg1*fSaYssmTz?JMbaA#EJlg&aSo3oCe%QwUsf9AL+oqa?=82_@6~oO{6I5_Z_Sr_rUk1gE015# z0LEOZs;{)x$<4^Urn^@BDe2Lt=#S^fcbsPacPDq*77tSQ_7U;Nod=qu=ZRb^9i zseems3=(fhnZ#NPe$-#42zb3HT0z1jmU)7 zhwNd(bAkAYCVL_&@)Q}6y?K!ldymiF4~uU|!u}n_x+RgZIa=<-cFRTk33ES8%f_G0 z@u_8FQeM{pOEx0xwTmpYi(eH#L`2R7T78&+?ktf$97G?k_fCk%J+<+;xAs!2FDqy- z=|AbKx8S{7HvZguT%pek_YmK@(`&Rar#64dl#v8K>wo+UnXh=t#HNg8u>P+y@02%_ zHrA?)N_56wK8Zgo&t~*a+mA!_($DXK$=;}zRi4t%au-b6OrGs0>@jsGW9lx}LP_RY z$S3Os=eaBul)Xcn_x3xJ^x99i**Hg=<>Yn!H}~aS{*G$BcQdZ{`cL%8!_-%FnCxle z8#TuR>yCJmdT=lD97a!zPQdSA`9spRKjaD8L;8?923JC3{pG6cRk5!v--xXLWbTf5 z75jXV0%cU+bKa*w1#ob$u^Q?$IB)d0iD& zeH$zpS#HTlgF{ASoM$B>BO|FB<9wqYtK64%$i{U}*|>CWFTLUC{Lxh+8>O@bV_(L+ z$WwxNgt6586z6A}?D3S|J)SrKs?Wg4 zcoLZqS&=oew3nPA5?PU_w2wW$+&)j4i+i=7b%)E*hCzIS^>#aoAEW~v^qDWg)X9!E zJ>%<#Pc|{CX5@7R9kRsv#hy9I)jlEG{vXuiNK&Yt^B2KZ`kpftL2p83K^(v7MA|#T znxMP=Zj$yJuG{Y{>vD4*9UlBZ+5-QgmZfo_2l?hoeT=($`?#ama&73r*v!y_I56dI z+k-{tX6k!fA-@{R*a&74ejL3m_X%V!p2@v>Y>{B|2ALz}40CGqRfwfJF z>@T&%EAaPvgW_}TY2&nR9oGB&CvrN{A*Zyn-NuZEZaF=c?K6)47(3}TYaiooQ)aQJ z>eO91Msq3WSK9h@w(iv5q^MVuLVH^7RP|ow+?g|2m%P?*Pvo*l!DFKTuy^H7PHX|P zwaZtwopU6yE1BPu)fC40EwMKC?tLEPSS$X3cPTU5YsmVsWv9nz&c+AD`Yo2vyN`Ju zzVzIrzHG$TCr((yyb)iYG-31MiG&ks?<2hXW8S~S_=_i^N0ZP=8@W^WD8G;KyJ^N= z+ECh3)7khH<0SppOj&~6%UFm_4%O?pSH5Bh?}G2}Zr*xK(!raAOG$SmV|J~iqfhGt zX;&J@zGV7RTfTS01WEHF^8AH7qCaLapKBdI=u31!H1LMk_$hqa`C6v+ z)*WHK0hR@iqA$7AQy@0`4xY`!(M1{R!9}zMC)cO6(uO_rPHON7a+w2N+r~_{#>Uq~ zx5^yk_mwrXmTi-KKC}IO{US}YX=9*nlChpMeeW>`wjlq~o<4k!I<8@oA?KTXtifCI z%{YxWPBP?tnHT;fy~fT>GCG6??IK}a-{Dso<AiThao~$QGzJb{ZOD13qtKCitgSvd7iNAtLgzbjwJ}xr(Cw8L zeXWO&Cw2Vs3C64Bm$?c)p6qVF**V6Kz{O8v>Yy~UT?=!JEQ`jDbrF-st{me9i-us` zG~UWFo&o$!Bk_#NI63!^ShMa@8OyO!msYf z+$n|!9ttd7c(>?3#)fm;ICWnUYfwMu1-Oqv9YfRiV~@(71NH5`cObkhWc|C1Gs{(+ zUu|Zb%;a8(Jn^Hx(|jp@rwg7_+wr6wi zXsX9J`@2JOP`G5($2 zwqpeQU;=tk+SuF+8_wNnukjlCy9GamiH(Z>l<;QO(dOEgZy`{QeP`hZytD5y)Vyz# z8XalLhnBD8sm3$HQ+A%YZ$rCn_dd6EXiu7xvXA>+()@`wl5f(8{K(xY@}HFN(*!=4 zY;=?sa^~)~+Ow~PIG5DVs5mKUd-m$3&Fnhb`}Ey@-VMozJ}*r$OdHJf^=g@$G}Sm) znrO&b$se;uk};t1!l}lO2#ZeD;m4;MI|kE9s|9HEP+b*j*Af&lishE}*?@hS9(H-8e%X zyoIpY-Xo)@$lovs|6}P5)A2FXiO)`a40_I@ynNpaTPKl5>TK7q$|^6lkMgELKjJ8F zvMx{b$jIoQpcU!gM|sps%1a|n_qcz5sxiVLAG-hPQ!Ni_njt=OTaLabvSG)KpJoh{ zIBYP%Hag=LPBRiDj`~R){oj-C#c9TQ@ngV?#69GUJ2K4>pXc@gd0MXg)T_I^iMhr< ziL0>UMi8fYT$8KII8L0Lvwca|ZCG?CPg}-XF717es)70ZcH-CZt-ME(V|ni6DQk)N z2J_ymeJ96xcJzsl@$nsyy>TCFO!@9of*${}S7DdcerG?uPuMY8)=Su@?6V?cO%($| z_3Q!W%p8RO3qSKr_I5>Hv4t8{)iuWMXZYnDPj`J^zQ%Y>>dP5M!6sSlBx7IK``|Uk zkBN^!7k>l(?P1ZM{llEcB|bvFfd5+KR%s7xIPt;g@v;0`<739N=xz4UmU+?LVhitn zd)vq&z5|k1^E6M-vOI7pw?cGPILWA{tfw!@pRgWVYY;k$a=V_PJl{e2{vtj+=#{R` zTu|B&87bw%XE1Q^TC@Lk-&itLIK%i)sTcW${^wR5WUpKFcX$2Q@Es$a&XfiDPHA`C zi!+Sn4jTX9-ERLD_Ohkj?K5)?_+mbQPig1fCD#}))6e>S^)<#zyjObjC)o9tdfdyt zND=oE^BN-~8;H-OzbaVciB87=tkZMcZ)HCqUGKBbf_4pak$wJ9p&Ra}EQ#NTy}O3ZMLb;+r+C)F>BHpZx{p$-OK&hfn&GI{jv^Q7vV#cPeruSRQAO z-T~WAxwD|%a6Z1f1p0Z$C+fUU)Av$dfV-!XzR}GC_gW=?7#{XPL*zp8tM?|#xBbe5 zj^xi%+`$+#!+0NlY#s0fe14bk`E~i0?!VsB{j+OjZs?dSI^Sa?{8Q5OoE2a$ug9;e zzn7QFcY~9n8e_7_@a`c_7>shZhiErBe&byp# zjX{S#ua~j4kFo6;#J&sX%+!!=TkZ3V*zSD3Qtpw4y7->L^lckCTfuxPe&!oEiz+tr zBJjQ7FJe<{M;7IM7W5=d5qCg;k1u29!7+TFfV->M9(J5hsV?F1L(<$!`mv;`!j6!9 zvM-S7`68~%g2s6E4~~uh)z)JdlBQ9YjB$~wC+AxHd=&qm)8Z4)YRKAD#5c^u$J2Wr z^+cKH>uh`E3v;Qj{~>L6WO~eVI@s`D{4Vm1;n)Uc{5NfPG#iZdU^DCSqwKrw0h9HU z7k}4oc`x-DoDC`XnY|{-e95yo#9%1bl1#2y}Y5Ah9%%_Ym^7k{m=!PBg z-kNAIuNH8|3p_#7eL>#Qr9$gDoyL5BM&5nU1AmJ57`%(z%NTg!xb_)!#n?-?u?)cm zsQMUtZmZ<|2fU-t@0Ir*yi>+K^8U7`UVLeH%lmJ6r;LU2{s&KeEA_5qJbGB)gs)b{ zJn&ZPuQAS&gqxIcyUnA`XXk2=Z~P%SzMneIiI*lB_>vo|j?XZLz*Crf6(W0_7xxnuyNbIryJDmh zT>MM{?$3-MPV6si*WEHl^&>1kC!2?syKm^NuhF&Af6dw04*8cEv+4VyBvWt1{y3|? z`Q2F@lk@}?x+{kNvq5!EErzdHo5u)@zRq}>yb`DFFY-V4QT*9{ob{D&Fp2Fpi}8ld zKUA-~i1+*y`;R;k?j;F-|3iAQBmTydyK+-@(_T`i?bLS%=|Z2!r%Je$ck%B?J3}Zw1)C4mp#HerlBUlGa7H3^DK0&~87ZZ2NAvou>7c`Mu5x`tkXFLOSiA z;JlTe^Hy@ss)qAcG0s|v-5%nsRRd?OLY%dVan?%vqBv{Sz*(yZXRT^DYb9q2!ko1V zbJohwSu4d^s~BgkrUo9_?~RJHAl zVL5-v{MKzt#`2ZS&vk(}zKTDMeF*gVc>KoN7ANi{-n-LGnrQ?ij`I|P{h(LeSB;T` z+frp8G(Ct7P?tADN(yxNMZ@g?x>PR@|Zm3%~=s>YYgY$`# z@uq2QoM{Lhp)Yi*(NBHxRDs{j=Ev`*!hO_T_`Cu>We+u;?VT=XLYlJ^;WJgs_9o&) zu7A(j(iUXgj7tmN0F8f=)_Go9bW=QkxSlth@+f1uowm}lnB>#*MWeN*Mjo+OxmWhP ztBoAWig0d0>t(Td-}f4&U?Q_(kIEh5m6Arjxxl?vxtolircnB;bj&z|c5ciYj}Mvl zm3Ef(Zg(3e<@cH|B12T+5!wnn0o&MGV z-%*qE4#&WcqWksy#=Ysb?Bw2eq@cTiJk8idQbr^1(w6rnMz(g>alX&^3_Q%af^KZB z&o~9v;I#jD`HWA%sQVOM-*Z0WEqE~V(0&^ejGKvv@7>+2e44GZuqM--)c|RcRg77^vY+nW{u?^*1DfKJ2%1tmPiJ z>Kq`Q*z=mkaq|p_e!rP-McDW&9=&G_UKc<=iN8*#neElzhSBfKz4~q;a;wL>jB|Tm zSkF=EOsO5Zbe=X<#g`7v^Zsgt@yP8>FIqwzDrruUxHI^># zXXL%n&uC^&9!#00E=vExK2IfQijZx6CP(_KM#ci+S)99z5RR}Wa+kFapL};YA5hMa zM8ktj$ocoF_#_WwtC%vJX!xEnZMR?jTONC4=#~7jMyD^q*nSi_<}S8`e@;0Pzkze& z$AlNs>HK#kY8?bW#?z#i=Z}OZ<^%Cve?(Z)>$ICG%V{V2a*d5rhW78|8r}%LPu7fL zPsV(+r)!z__tRrs%gN(O+@F*?ROvynV`j)Y-_^#RcJ!##mbM;s`izCY3UsCy9%JX? z)8soWnzyy^hJKCtsioy1~z!%r^ukLZJ-mK|hJzV9#Vt9ZWbiJN~5M*i-LQ~$}| zhS4%{rRmc_W=>8)R(2yRDwNmNDd+dm$BMf=GOx7S`@iV6e(=W`)fC2Ukabr5>+o^( z(op@+`F4cnwJu42`$TlV?ypj1OqF)zN&SNQ?<8Cq>UF2pgRSiR`vCB6$U0QYu=jvu zeYB4?-%;!o;jMu=sTG=fe_8L3ns*Og!%rl44}Q;?(-?cA;*Tlj9Ui;JVh6u;F8nV1 z7s%NW)?nPV;NF9EPG*+OlP=yu%t?>Hzwjsg%ik}MzL&pcP)eZje0`XN2|4fxAQ zR8x-9Ub+u%M(<-^iyzqT2eGN&J0kLI>aR=Lo0GckbLfBo{m^lfoXPI_TMhQzjMjYV zzjS@(A&b74MPJAnpbD!$I5XPQA9}yvJo|8q)gP})f5?76{V_}4=?@t<9oz*GdsEI+ zDEeZ()fdH9UpV=bz8FPayLAWcFKsSu@9ZDx8>xrz{tfyg)DfTJuIoO|rdV|9O7|pp z&r5PHoparc9qWD#XU$~{*m|{nf#dv*eb0uuqeA?PHzyf6^yOyyax8peJM_#+TapYv z81q{X_DPZ<^^y53Hj_JPj=qq(#^|qZ9y|MY^C)M~Wo+nk=nKS8U0DY-FTmCr zqOK~I@6O`_@Dmh;wyq8Yw&v$B78vTA%1Wd-RtX*|nXR;x9 z!tm>_@err&C2P)+`kg=)-24`I@Qrl%v(Mq%XYeazo#U#Thr4!G`!$w6KESYTu{!F| zx_~=*@avKNVOKuxDD>o;IIw#j#P^e-`Ci-KXtLj5>2HYqI(5Jy!lr-S{C2bXoo2mP zq}M}o$4<>EcROoLdA28Q1vKBwgH)$3AJfS6b@Sxu%_wd3gQg*_LO8V0-8(ApC zo{g@h|2*VjOtR+XjQ=W6*>=t!&Lq8;Il;reMUHw(BnS3M0>ZX*(TU%KdNOn_;oX5(eRK7%k^a zA_WVnZ{G6J3o7_N<5<28^+Ucj_aWzeU#4z5lsAZP)Yzuf3Hio#5#NX4d`Pu?<45XM zK|2d?YvAoK&>dUlx%DOT@5Og4XNv=Od2Y>uhOAk}COG2o+Xp^Sw+ipKr>PX7_3sZS zF6i)%xVq?EX4!G_W+jch+NOUO^f?2-`3L!S-k=47=OvH2TFSnSxU3A7lBY&oEk5U> zhq;gLkSE=L*d%`XG!t3dj@$>Vem?L?d^fUIC+l~&tYPC7*0;)B!nge3?`>#{%mt7s z`9`<+g6!{fi%g0i{n1v_CJ9(~DP8CFNH2ezF4?@3HO|~$z5zQZ?T%3GHqNZG)?d+fCzyw5 zCwSnSr07^(fBgE}MOKlCpY!)vWQ^lK&&Z@*wxe5r$@|RZv=L+4?t=(zyTNeLy=uO&>_v55vFk8t#bidI{Qs{l>vZWm^v)$c^S>x5bB?z12Lfp?v1@XN51` z>r5)G`ravYl+SaVU*V7e(pE!5HJXU@EN2D(^q8{p&NcoWg>b!)-E*EU6 zV0`l(A4f)~FY#yX(B9*Toc;ylH1-o^ezO$$mHR46zO!&PXsALKqcb69s9iJkRr_z?XidW$mk+C%oI29N$$uXFnP+i3D#Ke@+e zowpT#>@o6n)4x*H%UT0Fysj!XQ2Srx?`?W0vw3Bjp66v=aq>BwUUbfQFq0vAxf4cyBJHcZ3 z-(TljWnu1T$o};#bbXk%6<_%j@EWg)@8dg!yV-v|Gf>XDnpg$cX0SH|v-5*R$gjU~ z%JUfVYxxT5s_>UdUud5@{qQL5!WkXbP(GuCcd0`IzKk$BLh;=s`I`#*9UovU8{Ji! zs{iJx+*$i8=|g-EL*75)UHVYkYo~2%sch# zIlq*$ZEG`F#dN`u{*`a>6;jq;cuwJo zOf@ZoKheR$-x2Nxwle34??2FJ(wI#?>5tKjBhnWXAvYbge+|$3$g`WjcOZ5#wolz= z-jSgU;X&~Y_aE}!oEhp$;@h(^UsCiV=JgMyJwB6f&(5y>fcFURM>ou>l|K0h{U!Y& z{UYN>`lBl665|TVlS*8v$M~td^LHI%b3*!CI8vU>rSI^R`R_8TU3r;hUel)PK* zI)rz3yNXZQZr5bq-R&xS0?u}g(-wBSK1|$JeBgPM^&HP^DU*qL0K6=ky&p&-IAUMC+}M z8~?T58mH?0mVKvnQ)ZUdO||&Z6+Uk}t|hai*E%DFzPv{IU|gtvFy#n8tcmK-wRKLP zVP8Dn-zD<{`ex?8qa2*x`2l z`l^exx94W;&^?@mVjX#udMIT57~@HFl<=4Ue;eL&>_4}TGFHQE}s*Rj})?{U5>wqdGq6ZvG!%KLk~ht9*>*&g1+cbhQhTTSOm z$51Z1G*r=aB-n`j+=(6_pJ2NsJ${~!ot(|^TRsr<$erN$9Bzs2?5FQz zd%pASrnB5db=Xyc_ixH=&bi^h8M={~V+B9b=Tc3hBnv$O&U-mtH%u)(Tn67no zfIb>6vV>j6UBK#>R;3v)@ojiywz_Iby0KxbV~p=)pSE z*MOXu^<|%IPrC6<=+>}a1EXz6=sOaN=_8xpmVYknrGv3K3;zObnLFBdDq|D2A3p6S zsmnF+sSd(3`p4c=4`U}le+u7XIEAjRE@f^OpFyd5W~=ZK_+S`y91*>dGG(q$gr8v9T?2?a}S3zi=&3CTU&SfDQ^^e z;_1-@&JfLl$2;i9&-Hk*_SYCMpW%lZ4-cQAM`e%SW7n(m3Cd7&;Of-xq%E zbc~A;l7_Mbd&Y{J#W)S{eXtb5+yA<*Q{ukIdt{ipwdSwk&J6f(fnO<0;sWQ=jUtrI*1oqn*Z@rjW$U?K;6n3`PS`}DRC<(qvo$`Iy?UE zDu2r`<0H~b8*E|y+{T(c#2PEicVnKQPX;6F|0f$@`M(|$(x*4tGJ3|up5d-B;Ws`j{j%{I_0?xE=_eTzUt?{8Z068b$o_CG z`#+-oHeW42UDQkV{oD^4Ntq(2ZM5U>nCICCDG=EgJ5c#Y81jug)`Z>i-(boAwlB#4 zW>fwrj-o!pqmN3zVf)@7^tJr+-Fw>p>x5;k(=Goy#hx7&{TSPYbwN<>{{Nma*^CeJ zGm%l^#*(Loy+SQlgae@wh968hvG53E6j<1-Kl)GBS0jvJU=8M8yNSI#!Wb&_IDgOC z{9tS8SR)1x2_f$0!{4{?W1M3SmbtK$_C-I`W85=0TIUF4E@EumO8w5r*fR0z!07QB zzv=%|cJA>}R@dHtW+sq8xF?Vh(994}7`&hmAr;LeV7*|y0IjX{l;E@##d9iZt6Ve_ zg4G&q^C${}ErV!}nPY8^4V6?|f>=u{)fla}TA3tVRJ?%P5(MY{{`T|CWD>!i_m6xs z&%Um`_S$Q&wf5R;lWz7J(zUh}_wGf53)a88e#%t__*8e3@{kcON~c}YwRWbEhrO^d z)yE6N?TKz%W<4AoZl7t|(mUd(kNpa7%rWV*^((6Ttv!#0MTdMb~^t}24yFhto zI(a-!VR)nIuerd^QJ%4l=frB$^9~f){ggM^sprhU!C7qp9jce|glqa+nqCk8;4i?r zaQWkpiPr&N(;97Jjs8Gul(qNo*C=-*dv`y}r;d3mKzekN{`WJ_iiN*pqU*1c=iISt z=e{*(u`OQa${HD&IRjsKt;0*Pd%3m(=MG?A_d9^>3$rf~jhK7c+>ca@Hs-5>_g3QT zi5rQ3w#K{gU&v=o%UZ4_CP)!6Gb)go%hKK{n#(&yfnL^RWUGDn9L{c~uI#Y^ep|%U zo=cq3QrQVP7pznaV%Dn88Fb%#5wL1*4uU`I4Z*+;t-st@9XKVu`C9B%0psVA8+(kj zL(uX+;6tjTdjo;2k*54F$tx3mPB6Y+v4{EA9`h~6CtX!%1%d^;`IKhO3;0f-m!w}s zVvFL0^(PjF;)D(4-h(;sGqS?|Sp%?358@usVC+6axW9!wb)93M_Ge6!jNd?7Ntuw*0Z_NG}e44%Yk&!wtu1)$p99#Si>`uct%e#y_-j~zY74&r_eep*2mJB<1 zh_`YEeZBEK?rG}`7hWN|{BiryS)S=*+eqU>VsP`;N%j@ozj19d@L1OAyW{N{q~#)~ zRbekl%2*M`l9aik(2>fXjBIhD{^p{mnEpndWZr-qYGkw=-WLgV4x%2oskLrA$v&U? zFtGPkd{JnuuQkc!J#msfS#w1?{g!OzeIpO^HWOSSuLYxhcrWK_?2A()Ggsc((3iKj z=Fb3^lkqFxc;|+`g+9xC=kxt9WLLurSh)*flL$rhb6!d3zOpfAH(#l%W9x;;l zM@D?RymN7p^zecpe&a2=<9&egt;qI;A!}cS?hTVyO`7%%-6@{r%YCU8{|#dC?OCpT zXqvcOEuzbEEBB=UxK7geA;zzC-O&q}_w0rRD`_WSJ+OKL@$OE9)6JjgJXSOzA63PD zyX;Fe@vDCkTb8zOIeVo26m)HHdHYEFfBEet7M*aY{b3}qdz$WPX#*$7cR`IWf}gQ| ze}mt3l<$~x!8m2rJ^8G@Lr$cjEL)_Czo&TQ!43c+$O#d41 zTHbO!*eiOo+69-2b=Ro&)P4ZF_+02f1y2S(Y!7OK^3GT| z`!z65Q*2e<3B`7^&n>%|d06ND#+A+-cklasx6C@u_|#r<48o1tizoA$Z|n8inSSDq zmIANJ`sq6~E_$=ds!z=o_67q-i(9Ytv&8JG#M=AQ@o2{G&ga%-`}>aHf0LUpSh(9c z`w70aez?~hlzyT;L2D?m_hei9Mu0V?^<>g|tf}w9&wA3z>ClAH4=YY!4;#;ZY`(pE%o-uCDx$=^*M%l#?Z*L@q|BuXr`05RjPg`Yi48%fq8@B z(~|<-_8!4>zwp+hAK9P!yKtWfW@Gz;XO|sIOjx~Z*ds{Mcg#D>!djZZ9r?F3$ z^A~1sO74A)z+I;On^<}Ojb9>mN9_aV{?j_n30)gPeVl#J*bpL-mX-f>_W0Y;NpIy{ zpF`wTfiua@lNhswt;X%EIXq=l%4g=!^abxXapl=$YFEIodd*qZ(h(k0GaVR~g?ig} z;X~N%O##}zoBoWSA-^A?eU&lg9}AeX9oe*ueGC0ziOTX{GRU>i3bN5zRqR)SC;U;s zUIz@iv#;?mhxH!Dqj3qYxzznT`QL#CWP{kncuYUbNA>VaJjcG4vYt6hTaIAIYQ^ps z_nm_-wRGkY>M{qx5c))jxaOwcsn7}iOExUOwFn=@)vGrXL%oW=T8$s@u-MDANB+JS z@dI|oR%CZyTX_S?&w3)h1{0<>AP*?HBYlXXAn1@vY9o%m zC7Kc(zXA>m`^oF_(*ob7&5cF&UeblPgTw`fH`*qhvp3=a8Qt@s>?oRV@@|$rI$37P z0Q(d2;?<#&R{GXBlo!A+ejepEagP1HJ--*Xdf9XC)o4O$gTTjd*uE{GW>>b z<~zb%_3TIdFV#ny->~>!a!tzzK1pw)$Gg5)Zs^dlL3`~7L?>bN_psLiI8T>Ng7|TI zYquM3*gM+1g?Ruu=Xmq^7__VT^aHQ#657+c&7Iejj9Q$#Z1iOxe3pAn;rekK3;r|~w;HRYW-v?V)J z6Z^u6`mE}j*XHm=V^TbO2V;#-bJx|AV^XqpA+&!rb0huxyZpbpy~tj?y~w`C%vXMF zky*n!f6b5Gt>4KubPj}kF_8L_Bf4;%my*pd);{E}gPyo4V;|#v8qqVdxpRN4XWag0 z-r+7CXFv{L<~>pRulQW&oz6MnTEWBHbyb^AHSMfXKHqcM57chpM!)?KX-({Hg3qKK z9b?<1`AJKaTk%C?_lC40rt~JmL{Oep>XRqS1yWvZ(y-ok{4e3JH zsQw|&ch2oP-;vMc!7jUOy*bAKXV1eAg>UuM20rCS%=zR@@fOXq@cKL6B2byNhDN); zzngkju6l~OkCV=CbXQ?0IG6vqq1AzzM&9}<`b0$hX5fY0{KZA1!-4&{G+J%qCv?Jq9N{nR~S7g zH+G)vH9h+Bz;{evSDa$rhK}RwAYNJoUZ~d~esSh;>Xk9SrrxSk%vw=nh)Z_c#xTe$cK>3+%N;Nora zQn+{yxLqG~`2-&-a`=_{3>@X%1y>gMOmm?=>HkNrY+>jlG}hijp5y@admH^kk$Dss zEcpg-06(C);5V?Xj~UB$%D0Vo_*Xl=%Yk{snr2Pw%tw8^N&X>y1M5@3x*fT|^ySJ4 z0nU8}3cr-Cp+EU)nEcv+E&uNStDK;93;pg*-Cc0ygjJkvB;|z7J>-P(^q0b2`rZQF zXx@A7qc`yG!>IL zt$*|-v!>o<9_Z8Job+(m3y;i;XcL#qT|P}bKG^j_xHmz+8&i&{`-`7Y5QHqrSe+K z&(pr--oxk%q8ns%&ds28SH6)=&+$F8>;`^gi*31*I>|8&Nxwh=n$vcS5BRpi# zFLG}WI(=~U4@|rmoCT<)ibCvfgBA4$i4`-yD& zoRx&6W4L7pQnoF8W{rFdwHJlc-rZXQ49BD0{=nnt_ys4FjW!ZHO1M(I^Q4YmPkR>U zLCL-cn7+^WQr~4=^3mS#MM1m#iJ;xe9JYZE?@jl$#Iaj@*oWo2R!E!l(`@?T-Lk*% z&Gh)Gy<=>pQ(xPuBR?2sx z?^E}|&z-XIa1cGw@oAxa^Ri3F+YeFh0rvguqMx^{5PpgSzze;#>_RPbtSur+*&%lcDb^`w!#eJ-VR=-J_WXP-df0VPZ4a7}5{HO6o zmtX76pTF!6S1j6$UuLR4vgc9i-$dR0ls9b}eq4}}J!A5PVjQP1XKR?-Yi|gccio6z zlGn=n9LnPyJ@!}j582cGCQko|*Z^SvG3PYNx80B@OL1;-+OId=pvD`+Ix~j#8hs&z}=IQc@II z?a##T`h&!zV%{F}BBMQ=NNk`VbPUeV@L#=yI`Q|7j^U)?$9g+y#DGCpA&xw4`?2pu ziMb`8(9GxWYsp&wbJoYHH3!3EYpVQ_mW9|HN9j!o=KOz|3&#h`YAR-SP|8>d@Fh{K33Mzi8RTyzIuGtNY#COs(~1$z{8lgJ07&=atx@hsM0f zZtLB)@gFyBXUSgB#<}Idvbu~nxu*+Ep0T`V?|W>`4q%JKhuS|=8}y~In0(qeUN>_AJ?0Lob^C&6IieL#8snQ&;mb4xbLic{uzVH7scOWopJBS;$7IE@jJjh ziQh4w6>Z-v(fmiuy>jQhg7Y*-dOs4sEYaaH`il6lJ@8xe`Z3?oO2cs4(0OcJIv8{_ zSN3nt@5MXjA~%TF7(A1wv};H+b}_!+=6BmP<>$rPuY%r5n@w7RJx=xTKN);WTY>!+ zWB5uN!nBal(Gu?e{<|L0{$|dmwO_VA8?vFdX4#4Y(UH(s*PcrHUfo;Wjh#XB&l;YM z?h|ZbuhqAodw$5Bse8R%&dt}c-aZ9Rlh1vz_GdzN+ZNt9s2FKGG7aU48UGyfT=-Gx zg8t&m6S+(J2)<#+#;uf(e>Y?YC~sAqZ7)q!wQT-}6C+jWO0%#lha_|9`=+xM`(a_} zwo-E!s|sAp2AeJ4G-6Lj{OGsXdZeF4lQQ5SY;yRIzk_~7*&!Ok66S0zvE>8fICE#* zX0C`MWUZRs*`GYE^QKd+hC|^jy$v%{eGLB^YgXf9-Ywu&+@8LojZv~!{CQT(Pfs z4SQmXpT10Nch*m7CU-SQbC(;OmQl}%*P0s)te9YEF(Er(!dLfK@H_P^;J}APffbb=)w(i~tfQ<-Gmv*Z!K8~&OfyNz*+ek&bWu32ZFI`iBwzhakW+Mu6u z=%%NP6*5I?A`;`vsvRRnR~Ocf~6oJHBi(=uPx+X1@YSHarRI#U_>$ZROjgs%Ru=2Xh<)S8#h&fUH$?qM2P zOuUM+&ysIJFUAhM$DE(VZX}*gQwR>Zec@NuBW9WGk((7#;X^;P^dc+tr_3#xOkzQ}Y>GnxqS+93$eErkw-E_J=kb1|( z`EIKb{ILfLf2Z2LPE_tx%d81gj+nQfbMO7Q?J>ux`Di%Z-glyM1HE1S67OsGiOS`8 z8@2v@(6-tCps9#={TlJ|dtT?gHR1`L3;l_ww6Ye&Q^qld=+%vD^v&I`!J@-EC~FaG zXRX(ozv9;`3f2v1Dky&48u2gog2V7c;(xUqzV>W8pMHi@F6zz6Ry|L@w+jN1;Ug-( zw{eYRtiZQ7uDOA>Do6SDwX!a}SKQa)=z7D5brk(9OkN9Zig$_M9lrTAyV?CdeC=sA zaeMN>8~&m?x5|li?Dy3D59_sKzhXCyh&`$}pl56dW{`;|_7U zx5JbE0PUKGK%=ZHC#ugAh zqh=lT22!SV3+EfyYsLvK-U5$rndaC{flGb|2Qte$*LsKV`8#$q*+|>rF`dZuz_!-| zKDEy*r7ihUwcVooCefBTR@uI?Xw~X~RrV@^-JUA;UhomL=;JQR@!g?4Zdx4)Vcw?N90QdxPfo9;BXPzKeJNnY^|MEw+i}`dTa(GBt$LLa4?Dmdy@7ose{r#qgY{0yCVctUCF@F_ zbnA|#?tbc-HjRCx>ul~?_DHq=9{4&H+^`4QqAA%J%FrWrkRHbd8Df6mZ6$qf(;668 z(|6&$E!q4&gl(t;+m9EyLbP4DM0baW#SAV=tVl=DHTHcZ4{j$!tfI~JH_5UbqCvae* zok!gYbC=ZkCGbA^B>NAfMMj`UsyuHxQ>QVG?^YZ0a8&n>!N25yb?7r|zpxgZhK^>9 z<*wzOp$D9PN5mpGN7o1r>Cb&ZA8ki` zxixy5_g@>0mA&(-{TrtVcQ5oV^#aVyCS)BDdM4!_r`+q@Uod>$UDs!0cN9M``k0&c z8`31lDt&|3Yk!2yP_;DF=)n)TRd@K2<-moxOPAyi{!}}x4Y!>Uq{&tz-mr?_)n8XX z`LU(6rL-K?5sy$?qM?2lPniQv1@Na)ehv9cS36~e`#{Axc5hRMxbe_bHNShYw&VDU z^{%J>BC0rk@8aA#O#kVqvkDbDuC6 zLEflk%-DjGz97f#)Aa>Wf3@KilkKGMjqwHX8T&-C#r*HZq7Idd8o+iT`P`}MHcvGn<1KjQqT^DfHnr>vO+vlk6b z+3GiOmoJIao_L$OHnl87=pXnOLVC-f5-l_3)AP*&dn~;a*a*p#kYs#fNv#vDG87Z8& z^vJy+rC&gL(jM_Vzs09ixBXlfCsU@_Q%M(ojNN|O+4l4BqMPYEimzNM{e>weZpn?L zhtkvEnquDe{h?sRR+=iGTVl#rkRC}-A6sJDznXME>5tNv`Ze=2y~LhPI_q$OXos}s za^7{4UZ}X8g4+gGckK0ge?@Wr`;jJkSmN+q!ygVNe?MZ`pE3(|-XL_|8|+$h`)Bnwv5h+C_u*bgU*`@9{ND@wJ@1gDXbN0Q$4S>; zG`~iszFw!bsrLbOuBW&$9?tbT=U+@;&KuXa@Jpu zep;Qg#(Md%$gj@e_L>rV6ZTwqygXFWf5C+#OHeRYa^Z|sysR_AT~99jwN zEwLYwos~Vwz-iWK*FB3jOx%;)*i7(tA{gi58}Hy!YxP3&)}nBjj=%C(yX<=&$={jI zI#>iw;H~H;nv`I)@@ZYH#{FH zXaz^?|G_9SgKX*Orm}wqmG(z?z0xew4vPnb4No*Y-~ck-CE)P@?VEeLPF}NY5z3oJ zULJF#eA$~Mqa=MwrPCOgrhLsVq1-RYGiUTqb-&wo+}JtD#L0Ov`usC}jXrPDSL^zr zb}@DY;GN{qJURk0wrD-6Qz~|SvVPk$mvmb%P3K#)YnzQ+O{|Hb_Mcx7FT+2W-ydR& zhQBGsyw1hz!}HEHYnX8~i(h0gZ;}%=F8TWgcARS~=7+we9|s0a1Ot#x8Q!%Wo zjE6FLP8ndL%%xN9cPJAb+Eu2EyRrG{W#&z_Up-ElT*}-+y~@5scX+n-dz=p)3(>cS zvkU&$T1%$d{{mkcs~;cgc48;UcLV=u&KsRKG5!T^BRS~7tc4eoxP|6hv#rKI={p;m zhZjFdY&6s6Jj-q3QYOyoR!smaq`jXjIssl0~s?8PR}v4?e} z=f%&nZ#8+2Y`Tx%v*}au^iuUR&bL<_I^VuQ3er1(|1f`w8}^;Fbd`ZVJHO3;59cV?@n1A#HIKJ% z!T&i+*9&4n7bsJ2YN6Z_*U#u37lf9oLU!mvQ#5+Q7Wh)Op)3(w}AhSBU?^ zL&{kHqF3p6fk#U1f8t{o&$Sv(&I%oS-FN%10)}^x*L=49I(Z@TP9pF3N1rkAWr)*G`a6?6DeoB20vKmIv_pK?I$phy9CeI?TfV^*|U?vZkqvTZ#jM}0 z?7P$QGSc&I_1O`%SCnDiu!bJ7x%I0v`d|@n)F%3KrE&m&1MB|Ce4FzaYz_Um)4@I^ zUADe$z0VHp<=*KmkL@F7V`9Cpq!a&`uDHD(`zg1spSs7eZKvuMQ8yPJrn=~mi6URg zhsKxGmD?v}*xwfH^r3nDhhXKu`VB0}u&-1eZ7A(!ers+d1M6EhW9JN){SNs-d#!th zTbn$?UCLgfvR?q-D0I&qzFtA`io^Wg>B|Tnm5mM@)~57d z_z81|?tn~*o})V%_u~8P>Uw6p?6E0bPjT^+^~Jj-tE9{2KLH<3{6M|+HH~+=Id^;c zD|GYm^f_&i@v)Gck!%}z5dP=oooOFO(%3LE9X(xZ{=vUH_bB8a62TUX%m_cujcvwv z;@9*qd8P>&GKYJ}rM{d!Phi_?!v^Bmn{s3QDWmg~IJUyb4YyAzJiu8s@mX&1<{SSi z&h}od@(!=5#Lr5;VAuSQH(1YpAy^j>{EeD!NC-{y@mY+lpG{B?D^*E(lCc@^Ykkyl9GMaZ?6joG?-0C}Zj zoH)0wyi*+@es3Y)AHcV-B?fN=ad*q96DG#)9QbNQBvKHttl;6k*5Cl?I@^B{{=V*p zF;gA~*M9?^rPQl(>n(HZRYj@_r1zCRiM&3jra*ckei_8qv+Py;wix^K{AZr+uew7i zS=py`4lPPXcF(vBt?r-YshjA};!Mh0$69R;aNgc^&nNR$`Q5Y~cJxTCtF|rJNE7hb zOlX7O72wpv-T2a4&w|aoeP&IlDrjRLRDZNbTx593x!8xP`%UU;okW>G?Uh$j7ky#D zfxNW^A^3#FUHwa$E6dSSN;ac^i~n6mIr;bay&aQNchBLEcR2Mg-|zF;ZG6jLMt9LG z%dN)BJFVYT-s$LdU0}#{Jo4*u%>jZ$}TxSmK+tYDvxrcpZLR zS1ekGKlqV>WsQqCGpkrsI4eHQVlT^||313xh{`{#!7dv-TB!QSldQ`^`j!qD$EVU) z`P>?G4CAAzF}*;Z?E3n>fZuCtBBs2)e@T6VubX<=4YYIZot3X0C0+bhKCzX)VS8HflMEL< zv^we?MvT5;FUjV-oqEQfEqi+18(weCBiPXA`10phAs5PbJ-yFDY*6hvml*qknU9UV zY!AKxh4A9|ENmvURgIiC?__K6#f8@3zR(r(RBwfb*jfGmRxpmgffw->+#P*Jw1UUq z4n|kGryRW?XMWjWy`TE5MP}jP2 z#E8lPp83K@w!W$3T~hf#d`778CXY39yT_Uz|L?U0gHGUDt{!!On|V*aJrPIkjPjvFk-&WbLI>jHvhn1xR(k|B7Sn1IZ1qBZJi*S$IUXbok5 zEF;cIIrgw=*jT1xqq>0iZC-rhgKb7um?^uQbPwGv(|u^@xm%iOK`}m|7qi|Q;6q=v zW?ss(R`3oDarux*ksI0b8#SKHoJfJjnH=-78#B?N&=WN_+U~_`azP`T&JzrZ{`M{sqKik7rvbRGTu`?Ydvf4~i8aeC zZ;j?$v~nUkk$=RO?kBNtCaO;{@)R;eFfP3S-&Dn2mON!-saGY- z2YqFFx4S&-AG5vgSfpQcKl3;R8s=<2?e3@E4=mfEweH-FnMU2H@d3y)Zy=TO9g$t5 zM?bQ&3SXv=9(S27^aA-*M@LLC)RA<1G zMc)@vb`tIGek|KoJYL1p-3k5N?Y&!Pd$r4Q`*n{eP(8>#Ty5Fk(0ouf&Np|KX6~lF zCTwr5+))Q7wH9wE2v*s2v?u$lm8+e7Iw$DSJ(`~5Q_PX-Q@YKgaAof40jD2%hW66$ zx7SL4gSUa>F1dU(yvpDl8$GtpeO2BES68@kp56uKHt5CJ8+-rzcz1^O8G~p;Z@?M4 z$aCUA?%^DOy|oy8oBX!C?lBj^!R#gU*PnhI|DoJqYX1HY{zDsi|KJwp&Y8;$JFrdT zq(ap2i%7iM6IV zO2*fa4zn6uU9LSbTwZc8jQ*N!^ib>w+ylrMVE>je#n%tA*Wq_j{Ve`Cr0=4SounCl z*dDM)t4-FtVli*|8#YhAr}EdQ*Ig}(!$J1H0mSwjS0f+7+ZNx_v6DJG*lT@T#b1dL zPhHa%y7}*@-wNF#6UC;|w?9krpRq;P21XA^>0`gfmX*9iR%B?vEi-k1y;ga`1NBCx z=kaFWDpPMLGM8l!P0zb$fNhf}9nawE*8aj(vvgdYF^2I`uHxK8IMY2?&CPV-hH;8s zdeXzXPx0k)Y2mAQm9a5|xnGOV?bqG;sv_Qwfnjuky#o4`UuES0YhM7{Q4Vshe6`RY zT9$z;&57{;1LBS-Mv3q!e4-~1Q@6yPLmB-)COZYZ!l8o!h7OW;@;m8cG4(4b>$!Vr z%YNd95TiKg%(oK*U2&?_t{J!Z#K?j6MU>B+R^8%zzKVIwiD_QVJmTLXUSen>I?z6! za#@s%W8WWNgx&b;Tu{zMt$LpB~6q#tn?IGdyna&bn+MW^4m`}`*`gR(#x9% zLpQnR-ANzxq4iVc_U)(dWxy#oq}xoOF0y^lpGZu0eAb-zRX-#hnQh<4)RUdn$;%Bs z4t=S;b&{nyce#~vx;Jk4(?$3GTmMG&m83VlCu;ap;W)EzZGm>W@u$M;zhsA)O@ICA z$Kg*y|G)TCZJQI9+w46*LbrieXl&v~0b+4$&q>mz_NFFy+1Ag22|9h}uZfkS&m^sC zo;%q>iiG?``xzG)KOX0Gqe#MLJZ#1YSfj}7pmGwlPE z3t>wLz<d6t@!mtkdr-^7%bFKeQ;0u5SU8^yd!b zUFlRE$h)ubKMUN`Uu~afmbF-~=d!Ww)9g1nvDL^< z^a~Hnjb#Jp*U1;H7#>QRXwlHoFM-wJ-M zwcY=1)d?OW6Enxs(y?K8cHtJUiFL#cDV2x5>O{o-H5IR{Ae6?@tuOLge`s)4`mx z6~w0Ujn6Q6c76Mx`N^bV?+ilET{I5e3t!-%D-F6oP3;{@6ko`geXT~9G;^E81$&Sq zH|ZWDdeg1ogmY2pim|`)JEV6k=6CIZn|beOcMwB_r%+p5%|w z`&0H~@SfyprZ0Ta)YmfN=6{!VGbv+aC-!N@%6f_OPRqou$cbIy;^_y#?(EI^_7?Ot z!F2R5;*IP<{0?CAmW%-%!n<-}_&_lJ+}Ksgdc-r{K)ts0z3rxt?&IC^r#@rPZ0X=T zlws9*2RJ^q@%G;KB8~N_tIA(MB4hS8ql$U8g;Scy@82IZr~kuPJ-8u*c)$B`C?m!{gN z=Di)x+&su)y=bF#J+cDrN|xU4`b>z2sD2#1P2?SzgqCRVp-kCR`a*)J)l7;GupLuS|7{fFvub^*?s1DB4r?_m7W z?ElZBqTGm?s;o?OdqOqM?yU?Mtcj6OGe1R=$N4%Z%Z);wMTa)Blx&ykN!hxoG5&fut@xJ)_O9V&pap3^oAEm>=I~P6SxFrpa zcIeZUO-^=?_UU2eu8-}Hjm zK+}&uxO;tBT}frAFZNG6!P||pZ)p9Lfai%W?O$Zd=EY=ND+1Ty6(h}ix#QjZkn*=+ z=MatZPDb)xY7ur)bC-*}D8Ex>cqe0|@}PO8Jl}iG#fpzhul5)G4w!J=Kd-@P;~wh z?FuKK8vhewo-khFL3(Idv25MgEZ6du>#@Zrh@UlWRJxtZz@*qFMpwAdv2ksL2eGzg z%Wz=6aQc^Y1_2;0gvMB{L6;?jS~Ly+l%ZH{FFr>+sLoLb|~MvzU*(qjDN8FiiX8Z|HNi@{BeiH`U6je ziPg>?L%oCWFBi7v@HSv`X(=k$=zFGUt_%L=@a#Y;w$DnHfes9Q?+MuVz<(ukoR9{q z9U43&Spj@%U8HF6a)$+|7RN9^`1+E;qEjz23im=1qTi- zccZ~!!M7OGE#UNE7@uR6K`zZO@66fI*pHFd8BX_VdYN&IH zM|Z)72ft5RiryN!V%cs3jzZt`eYxIfOYUncR&&qBKK5tl{5-^4pk4ROh6gv%#sO$f z?TP+Yn0sb9vHSR~^J|O!pprXgYrWQ<0Ov*_?$xa5+q8P^^ON`NG57imKi(VI7D(CV zHnFZ8-x#(d0=NuPP+ZeCVsS`@`X2d7x@+q}S93p>-TB1)MDG#=wD;4`rL>b; zGk);v##Oo%yp)bcpJp#Re9FoK`HIPgbHbRLKCF;FFKeJ{J*4c*l|Ey?nI(Vzbe>!} z?Mpm)2XmP4nYRtTv>wD8#gmVBb{1ew9B%j774SsjX2*P?h;-)W0P$qz9H!q)^i=vz zjdgiZ8h_3W4rXnn@Yw?{#WWO5>AX4p+)g}N^Jx5i~Y)Je_x!n_+QA^icu1A`C)j%XnQYZ8Q)&nqK$lr9M$WI>D^;JV;k&8JF*>0 zZas_N&fekh{P6cj3yyl(h{gAxR{!fg_CR1Yw#>y{dYr~%?0>W&x)0w|Y75>&mvaY= zwK{}!`3N&cbgQAk8=P{@Iy=+;l(gGEOr0&1*W0Y@L#(Nx!DlE7-!;Fl;rAP6Jr9pP z?6k2r{M=}BPvKy@BS(oBnfsoc0iNRbX*a3h{j3T=olggO6#Hw07gj2&Zt4&1USD`r*~Kj`w! z`WJCyw3fd^yO)D6Pi|;RsbI`oRUmr~XA(1s!PxjFzn}N!5swO86M5ne%FAAYe7`}q zCY{Y@L+g5j3fOYn@Ue;z14%KypCjW9Y`IFC zvxM@i@VA8qWPdwMzpdyQMwXCH!+faDe^FQGu<9$>{|s<>RI>a)Yyif7G}N)b68}ed znCs3Bb?T+3SugO$IQFMRCGXMdE*vs?g83@KSA{ao9^s$SJ`*i zyLz?8sdoiOeV!TGtaWvCA8!$Yua)S0CXM;V=N3OFA3k?| zctgbtujpH+Jx4r{aTxjF;CHj@bQXI!+|RlHa-rk56d~S&?$%oPt8D{k6`beG??N?%_&#nO0!iej$j7`Yl8TipcLknME|0LdhDlK=aeJg2Aj{UM(G!j_h zwSPn!b}#uZp?hN2fEHq;&86*i*fq7M@5BZ*O!ET#1Ig2wvf7Oh(;?tL*M3Uvq5}q? zE%01#-FU8jA$y(HLsh@X%v)Z>m&EeS?*)&m^!A$ngGcWw*u?kad`mCaoGh!*8EWKy z=~f;;?|g1Cw)B~;;46SU)qY|3x11~3o3EkYyS&rJZGu)Gk3K*j)`I)6pKY=%+Kw21 zG@T{=p7|I0DmK9fGV zdu;fo_Lo~GR^RpC}$tXgXNzmfaM=)u;47^;9%9Mw$_+z zTF~`gwQX#oz|;gB?~!NWzb_aiD+xyN8SyLeMN=Lc+)UZmDBBvw4~#Z+4_{}W0d$7r z!T9tEV0^a z*G4<7;74aHlfQ6qH1`DX%I0`HnhK}E8|Sy7<&L2J4cZs1=KJ;Wc9!Udvo*eJGXd*yiYzsJ7=Y}^Hj2(8^_rr zgeQ20;Zc%9*^5pgUvUbPF*q2LN%xcfHtFd;VA`J#AX_B)jrIb)VIhC&M0M7y;_urk}$nF*J72-yI={<`o=$m~&wuIX7s?$@p9@=9rzw86nMBIPLHCWILdB}yf~`!llhF-&)Rit~>bmje&Ah*Ly8RaWYlYDza$`?3rk>-` zdp;UVc<W=i z!%4rgE}rJbxr2w*0FQi6zM7{|9-g+GveFq^@vjnm-{b5@JWX=HfzdkCz?js}q*KUe z%amuFHL`cO{v@V+1!w4#fi9cn6WvC;3HEN?Hz~Z-(^_$oW-s$QG8_alnAGnd7N@XJIi}mWm2eI3DGbY%-pq?}Dx}!SU zZl_-KXrlN(;IkF{zmflb{u_8^Pq3>^Kg43d$4zZDu|6FCjG?i~E^JYJ3274u1|bNQ*)*nhOKV`)AwbS4?zZ zLEhEd0P(x0cP^z|;_i&jL`_EL+u*2*eziWwus%EZ#*R%tz_50reH~@BXS#FK9C&x4 zeJyF4mk9Uvl`cKBwS1y|4e65On=Y}6BeZG8FlmzgEz;qo!O#U(@hkBAg5ND`kuK5^ z{#wnud~1A8Y`@&t&#`Mau|Hcr^mU^%=f@=Xs=m&f4y^as*f18*cI_Dcq$@s-tpRvq zk8(E{eR;up{%_*{WBix?_c;Gk@ON-Wc`|FZGP6!L-?vKHFDAR|RA)!zsq7;14mjz} zfsw>b1wU(z4Rgin2KckeOkiA3f-h$dz}Mc1_6X9VhZ63*kjD6jk!Gc*-9E_{eO4Sy zOv(lqhwwdeea>Q+x#Mp_uXDyfEcPifvnAgGU`WmF#!0-{QEUg8*P+boy@G@J65fwA zIrxf?VcwYU3P*P-2{?ArWE=J2Yl>5L!wlMxywsX=apN%Thp9cw>9bzEJpHY=4sh_F z&e&@M8%NpW;deRXJ&wh|edCkT9=y^>#L*aZ^bNferdx_C#XzJb?216YRjjdZ?7wM_OEZ!rg+QK z^mztj?*sgbM+S|RNOsNyKE>14_dog0gqwB$G zKK1h4dc910V@$n>^oOqbuQ#!D+0C?R zT-pq|xc^=k?&|~5DLrvtE8IVd9jYhpuSmna7g*DAe~7sf?q>npE69sxEbNuvamV5V zSFQLR{Jjeg4$Ts$Ah}LvfQKgPKFGMdzgx;%fum{y_+!gQV-w@p#5hg{7uvU2E7*L^ zdQ&^K;Rf1So@wr~mC%l2H3<*D0OnS37U);rnP+*3^^_m0MMhT}QGD^NC7}mA#4o^8 zZB5=-cndTLP1Xmjb5ne14!AJntM;|Uw+^@CP@cFIy zdTcMS7HnheZS1Ax*0349`bK6(rhP4SsVGI5+{%bLKIP=lzB9QzrtJKELJ(?m`}y zW|41`G`pO3JhU^CdRjZJ;i)y^1ue*L$E}O3o2+{Wbw9(0A(b?qCl&MxHCXaL4|9`&8Oc8Oa}kC(k$g>nPH`g=`|Z znfX{STyud8+8QpYS%O@cMxzc5J<`QHg5Yv3edL?@%L%rIr_@A&X>~g8UO(UNLm&R$ z9zz%YPZBHdCx2suRqSEz415jaY;e0Wa!j$8O+1p|)dvzQ?@4cGLMd;Uum^Geoh&nM zKX&c(GPjr7pNJ+U8@T(U_Rk+0lz(moUg2&p^=?dW>oMY3kcM1Z zoTu@HC)Zqz&XR@?(RXvWxs)}Fotg8`U9|OG+8CC?$2m3EkoGO7-DWdZVhjBFcrdP*DZT3X`FQwYcCMqviWX8m-=&yhQ@fvz0NI;QN*)^KsnKK7are%(Vz6Rz9BXV(O#I`!V6>|le#vudF$_JoQeM>{Y3lH9usFHH+CKPXg@01#H_XEz&ww=o_f05ol48{ z+P@;r_>w2fMZNaJq`l$n1r8lt;j^dF9{WY{KyYw?IKjIpzXM#iPxIJ{Vc-R~It#K! zMrIz7F9_?izxML=yf3lLw_qLei+pq|SQ8QPpYAeobGR0tQj1u-&}J#~-T>^$wex$% zRL{3?XXrANVHX0ApZOoa9Lk5OjabII1Ln*H_5s)bHBmXF?xs)Wi;OJ--qBzD+?NUe zKE0-mIQ-wC9mQqn$GCQm@YuV!>#(DUape#fm~!6U+;cvO7{2b9B!|Uo7}I0E1#|U# z24}EcdtU$5^U>UHXR3K3mZ_bj~O`)mh_f*bxtY_kubP{H6UDp@q_`y!=)y zmP&Bg4*x4p*P~W3Hdl{2lX?1y>~7E!In(ru;zA+p-N$ksnBf zODpe^|7~D&&c~g-Vj?yr+0ukhgY(mR+0Ro>G@Q<_-Uct~M|;RzBfI6swyGR_E2T4~ z;bSX(o=0EO-;?E^>sh{{mt9_uy%$<|j`C+w-r<4LJG>U=_b8TS*taIeSCen|bSLC!hL~!HvvCeC%hQbL5gHHx9M%5a`$2&Y^67%A$MM zPT}wHuo4qfyf1XcJ%am>pi_B6+T#k0e^P%lHsVq9Uv|xq&dHgRiF{{@7SUTQd}8BA zdCQc&H>rEz56C@-0&@>w4Djf@LuUwzSJ?n;y`d-8+srsV>u))*2AhuPepQAod>UVh zoU+utunP1!`V9uili$3$9@&OM^;@x#Z~ z*wpJo8TBijY&h*l6fZNaZ@sa3=(i#K7e?&)4ffA=`V@Y&Ry^QJGTP_ZJ#MD04Zzm6 zCe*po;?9Cqw(qLw%GHOxiXWc0$7ASgXmBs(T-n0R$y3}DdE)a#-ZSXiu0Mu}DSkEO zBAnyi!++T+DqKI2xLY6kbZ7y8k)+J!XMP`~E%}L5Q&)C6;cYzQ(){UnGxfKlyY@5i z&d`RFk ztOMs9RDKMcZOV`2ee@Ky|1ZYUmN|W#1<&#E*VB&#`0EX9_>jmiV+gPvaQrkqNWACeEq$Jlf_;X#j4N9o;sM~De_h(25MLY>Bj%v>0}Q%802E9`un zdRpIxf4tS((2M^!U9#Kt$bo|xPpZtkOuG`e;SEMkRC-`lrac`Qv$s>O-n8{xrv2mY z<%qePX@8A!M~|e*>_;>0`IL*M$%}a%oMBPMlxWI6IDQOtfd(z+WI~mpP9%o~8}yiI-z1OV<-q<~g;ykQY(c`*)r4IhbM6MG&zna+I5SVvp1lZ|2?q$`S-NniB%BQ58HGwEO>NpF)L zhVG{|mwDLHxi+J7sjobA_-=R{+b5-m9tF<}7?aM_H$(q_ChqCUwCAJ!I6A2Igbe0& z8Ry_<(BBSd-O+LIzemTJ0-dbD91E#SV?WcQ%w?^Km8I!rM)$R!>QQF*dx@3jq?fs|ul+b> znvmN>=VmRu-`9?k7ID|!D){xd^g5Sj+pAPZXJjLgCz*HYMBIHfGOJ`fWK;3OdMlD` zmyWa+CgnYy=RpSx+kBozuVQp&dlyEK{k|?eA6e|ar0mz=TYx+PE>m`@`gHmA7tC1( zFiAEn9K^ddIG1p8lq*zsv%suh4dC9+vmBMc7z7hB%HThHfF{%Ohs z7x84r**BrnGVcu@=BbqRzPmh{;{1_;DV&GEx$tfDxE?rPe}lJg4@%+f7223i8^a9Fb7R{nD}O$Vd9)5p zvM)o1C?uAe(sJ?TTXAPY-=BCpo_P>k>GtO*?b-0?L#vZG4=GL%IDgwc!YeJ8ah+3`)(xc4*;5bD%i#T0;+l@4*f}9R9OpupQAH zr0vzOy-(bR^fJ-G_H8}Nl)TH?Uq>Qu2dBl__FoxVEYUCk_@pX$-bbsie6|m z^AsFx_KmY@B4;>vKCJ=K&ko_AfeulpH5YempC#+$%ftNsl=;)R zSqL9+vu4<@TH#^t`95+TchK0cJiO)l0DX$ijPH2vc>6)>F~-zdE2ExbX)Av|^XZi3 zoGoLBJ(aP-57TX__2GPC42;aN*TJjwRz?$JPu1Br*glgw;%^?{G-sZ~;tmRD6(w{s!1{ihZ~ws5 zIWYP}ru{l;@Y-MnwtU$goO!@5wAbnD4c4V>Xd~zkKgoK@(iOai`3ABhe#7t7Yg9j_QPGSU9hLy49Dq@5()%%BZFdPVgq*c!M_JIg?}~)4SfU zuqM*?5y>X3iRN_wuFJsH7TRxPpOalyd%dyeL4QfPg#Y91fsODV?bpS?rFogi z|KFy;TgbO)I(kMLt#8eD!vw3!rr+884)c*caVh64@+DxOAz%05F4Z2F#y3*^r`?0= zMgNQFU*oI;r<{>OE3)|yjs1mw{Z6a_+0h*Qrrni11b*hL?gL%-B^hfvUuzB@$g`7o zD?g+>cbH6H7HuouKIO4RIWnx_X(RJf{OLW)&!T*Xbg5~U{g-E4`#SYJd<(`)Xh(Lh z!`Qt1{jEs}uT|2Gzg&}V=34hN#b12TzEc<9C#?hK)vUj)!S+#XD9LlGh2+6gnw770 z5Qya42TZ=~Rk^VRN4}c5tJxlV8;)B2s z&2R2p$ri@_4q}9is}aAH-|f`O&;zG}t0wcV;E32Hek+Ei_#l2;wcaA$ma6S#kD$Fe z+CE77;=-}K=V8^te{18sBd4}XeZ%H^`e=>|Vn3n{!4Lk-JHj1|>3@VHV4RE1(xkg` zLTO)kB(9K6Y9c{gpTjP$WV)Cuv%U}<9D zg5`?)UgX@}(0j`2|B?C8HR@mIG+6?UfWp&W= zf~BwYvCZ6a2N1eo9WGrR$QW*D<8rs{)egU|HT*g{-0lG0XqtRz?Sp@Vf7Lf-;=}Dv zDbs{+Ng-#SX*{ag@X<6Lb(FbVK;10XndY>O_&MqPr{sg<)K9y!`w{i$QeXCB*_#hw zFP6<&yjXl{6nnV%R7AQhX?IJf>*ARXJZU`ZE!z7A?Wt@lcX(~af!ww4LGBESCsa7~ zCyB4PJg-@I2b1#ER_dQeeZ3#=*j9;qC>mad{}g%WkarGvQu~|FF0db`{Sfe^a0ic% zlExZKovmi>#r{t{_R!)7k*QTyummnGupgu>V>7bpGGy?RDJL6y2XB!1Dd)uY9vZW5 zEwD%86HuYMmej5JJ>$x^_FWH8wMJU_K3jXEUaKbX?NU2Jo6h{2w<>}k!7H<9*YTyx z33mJw{hx2auW{T;`6kAYLBFO?e1DAWPoD{7#W*x8KN@F$E;9S`@IBc74tDL&VcKAC z>cT^`!2Vv^*qV26jz#${JQdjAO3Pn}jb?j#e%1*4GV+~qIOo{Iq0=|g%S<0(Uy#wNP3oH=_^{f0Hy@r2`}Z`RbvOuGPh;xiq8 zJ>em6X{NoMKGxC3J6|MhYSqi^=<7>-AH{dAwKt z_4ctFvwERl1c=8%e=j22Grqywt-gDz@UwRA)cq-SuN|Lecx$LGKpbAiw}->s*|{B+ zybp=Z$y(O3Vn}3lsg=8D9_ba_g%mF?Vm{%!4HaIi^VYtiCns*mvBl4uSg$LNRKB*K zagaXb2>*{Q?&^;_YC-jh-M)o;NAi6vzP5L$u827Z_qIB#@64JtZC+qXdfIHh<@=v( zU+o?}LAwFk-AcPwk9PkrZ3wQV@PY7F}a zy6_OsxQYSTO-EV_Ze)&tYo_S%R_?c2e(TDL0aoLRQ<@4^oNNtoaTmk~RD5ib#*jXy zwO`9zF^vfPsZkEMux0ZIr!PS%OoG=#CY>VcR{ruim%4FJFqf-Oy821 zb7I)CTZpZ7dP%;FUY)U4DVW4^}7dI_KUoElac>^OBQ>;TI;%Boiymi zlU4q`+rNMGz1!v#{?&K;$sgQ4dZYNrTEDfgjI*W}En?=ezF2Pyw6;exZyDG0X?(vZ z!?tL9JnQ%aUsf!G_WN2(XZEJOfzZd#ufJ~N>GQ7JsD7I~{YNAs$nvzunp<$;rdIJ^}F55*cXMqw&AY^-)j+_eF_c&WJ zyFdM1PPq?#8L`W(%o^sgg$0>=>GeO{n9bjd^d0eJkJz5p_a4^fuOGjU{(EPivgD4} zwq5_jDN$mT{PYe_PSd1F_WTbPzZPKpmsDX3?6ZbuQb zaqhf|+a;6aG57F^N!*DYlAPzZ%nS{<4#@m34JJy4d@!9)4X6|3Z ze)4Ev_C4TR=M63Vqtu`bVzINv-*041UFSO21#NcSp2#y1m)AC1_%t$R3i!`;I(s z9Wu^7?)e85Pt&9OFIV*v&uaNQ@gC+t!`#aYF54P965@Ld{@(DN!H0alpvH-A*hu^?~r_Qvi85`h{NG%6}cxTstO6>ks~ z6#*r-XlXxwT3W58)%rmt7h1m+TidFo+28xjoY{SLlU2Wc{a)WczTfPNFweZ_%$YN1 zX3m_s?6ZsNF)zROoB9ieqc8jq+Nakg*jL2&`aj+|9A|Uq;=Mh+*Z%9@*jv~+g5&9H z|A}}X@F9QX!-2R1lv+RQmLBy3A4#ttcvHXnfq%iAj{U}0PoVDj?*DHD)eSZjbNZkZ zTdzI_%5mB9Z=>IK&hL?T_5R-Vvx-vieSPTYk|Bd4s~`B@#VLJoXS>fO{d-)vItA~Vgs*U2Z?SebWWzbt=k$HU z9r*2u5pRsS?|v|OVn_UTTk1mj`^xZ5Pow{|;&1PiOYb|C+6Uh!O1-Zijcfe%#h(p- zH167Zi2)0X$3V`W3rq2xbF3F<{(YwnckFsUMQcd3`7E3<;*NceeKbHzNgKfTNG zqad)aaUM6Qe%6hIVc+AU33w0Vf(%JFOVVM_3h5s`4Se)~wbOx}D739bIRpP2&&|VO z{}BHut$yIo5zpf|rN2q(mvee*{lGUUo#QwYne`;4UxsyN5bwGMkDuUsGPsYu(GE

^nD+suRs}1l&<5rkGO%-heqjV?WT0ZKSKYfJoK*1KLVruN{U|s{otPRMuGT8 z7!#W2U10MwqkIMu-xHUp_($*wa8G&Te2!lN*=s4?&h*gfy_Al)^bt@_fYQHD@w2a> zGH{=G<9x*F*#Q}TOz9V^ILUMyrE@$VzgM-G(l28ENDopv$MX^QQThlK)4PenG7Kn<*XfPtZ?3Mn54rSE{w8Y^Qqs=HMsjFCU}7P+AfC zL<;z9N51WYk%oTrG5U?pM|FA_Y0c*$4SnZh^c|g#$|rrEI5%3qffJ~Fj_*J_UrFib zsPq+(V+f@q{x$25_UJ|eYaRp|JX3ii5XbKc%6JOm!zlf16(^m+-`JSPagyO8N*}1w z9Y{Z)(m77)=TQ297{39O&T;gKS^X%ze=NN>r6WH7TKvup{%DM!k3X?2?d%hi#jDLf zMp!6bJ@F3q8!uPmnbx2ucG}j$9?v?FL(k~9xVMVm=Nl2ZUA$_?@3V~e51CEBF9ZBl z>=h3n;T;P)eha<;jF3xfL0yW_rbFt|Q z=XOFyi(96f{v~A&pXs^PF6Iq$ig`7|a>v$+nLiY>&ER6U)3nd=ITkzI9!G`86f^u` z`!sLBV|u~Qbcq6o%Rb9oRAYw10(3RuYJbpu8xp4YgB5O<%k;@CQ~WhPmzZuM*<~jl z`5upd3CIflzDkeV85U)ZI*%XB%Kd(OsUuirf?cR45by_4jD5Q4ay#thbpe6{LBG=s zg-9NIu`lcn*NJHmCg^i`>?E@pv=;}1{-DUs9wkc3%gb^`WskBCbJ>T5`lTy^3E;@p z&LI?Hgi)c9RKf&Fr;$?AR~4=X=JB{BozHZJ-G1K$yVK(jnf=m-g@}O&kP5Q{ZXZ99 zDvW?56cRZ#p8OpaeUUp9@Q2*8!ouh9nv*gs-5xVjEX{N;E`B z6qt@6T2T;*5%w=MeUntztqD4O;DHPiAnLHILiSto&ZY!Lbo|Vn*$PKDqz?mghFLY~C$eAKcM;&wVHNKi9h9 zxz7$g(pvvy`<<^TcCDMAZfSbH?cmd3xAs*1iq>t9x9@$7`LrBpYy*^}EbT!^S{Q zrjJIAYZ3-SO&}Bwnhx)zVONd`*_{q&HE3KpNLe%qja6gE*sW7fmF{3DtR91A$nRNf zfTO$8Eg7LJ5P#X`%pR>B%F5IQ$P~%nsCI`#NJK|a@vuKk9ftszkf7V7RFsX5V)`sG zDS#0&O>`ZVo*)O{&~o7j1Vp7bEQ0=;ut_qS!hylM*o2Hx6P7uFw3C&oQY1eVkF1b0 zbzrpw6sIP&{-jRv#3**zW;v>YO?mhmJP?glIGhWsAS*2W z(o9K+JXx8NNIt~~WK@zEnmH3%;wl|x5#|;`YgUF8iLs2qw=B&hQbm7l!3TTVNCk(^um~ zofn$Q9)>ZCp!8uOWL@m=ppXeMB?aA8)nOmzuPz|Ni}@of6aSOy@u1p3)R`fX31*lA zkPrfi%dC_dvFZYtqs9|9ROMkKm37Sydjqhfm_Q+-A1y8oLslkwt3Q}IVQHpQ4&Tga zGs=r+&B!lBIq0q-X|*$3?pg(V2CLTo@{5_vLjon%82tuw&HQ~yU z%)6a)j!g@;qH?MUyhn>>)c~^gu}2<GiMb{D=I3UA*VGp@zDe)pNwih zJg8_iI|N0c+l#g*R@D~2K(iQy`Ll{d z%j#7vYwqWHt{}h2m{olJoZ{K#G*wf7QUQFYY;RzpD9bM|nMBUZgq)E4pIx2_()S_A ze)+J_<+^K(gT?xmU1K+`M{ zBPXN2Tqx?8B2Y!jz4o<}2X~3K#+RTaH3jo@PBZvj4>RAkLkC)#*0$V#ciVv{S+^>G z+lvR=4sL6?clXKHHbY2<(`g3am8zL!c^u!?`yOgLxaG4$4N#pu=!d7<-gIYME50;*i7-?rnelbM5BMR5S$dJ99#AR;Jqr56pwfUQc*#A8Zk6PN|Cd3C=IzKRSh+s+RbJ3(=pw z#29mDC5pjNfF)$1qyb_hV<{hU5f5pWqI}Sf((#M3(}0qb6B9-ChTUYpDV64*Z|4@1 zu`B)oM;LQA7|DqgQ_0fhWJ~4h2C-XiC3_k$eXeLk4SlKB%*^G`zH|zS)EXguP(n6Y z1O4oF)kdFX(}mq;P_PXVRi3&)wc#W;oVYr?ZjYKXmY6gzNGU0Ue6SGfYQ_ z~zKI5`$!w zX5Ua)r0YcMj+&4iT|cg7@XUNzJz=``2Lf=w@K;tE(vKp7FlO{BZn02M^?$S0t=f_v4Aq;zMJJa2DD{F-PP6?|lmH(ddc#UG zVLd-eA(a)mLfI~Rh2K>Nx5QOvhy7_;(|}cq{kqvRXHdGmHm44T3Cow3`a@)or0U9N z&M7Q0ii&Sg(J2M;Sz2NY8#Ffz20IK`Ex;7Pv61UNtjlVg)dsuK=nim(T>d3Kr5HJK zJ)qIK>5))#lTta@BoVUlp;cF5g&&$^aF^@>2Ptw?4$jj?Id z^O(ex1(lYzq2jDa17*Y1U{ zvbR0Dr{%Tvv3igv2)iU_4`ihgDq{Y1NNP`ZFs;TMpSeVOn?gU>Paa&Q)C2E9v_1S9 zf|mQ&x9r-G)Beidme*IFs=xD8{eGdE_|)C^V`>IT>-JYwvWP;gaLn~#(@S1zbi!fp zT97|1Cp$HXSS=&wWNvApDoI*W%ksjRGp3YID=Zf+4Ue`QJiy6n36HU?Ja?Bn80C(s zG@kXT&GoUq1N$HJjwBl_ERAVQFD{yvFJe6`t^sJ9W#mW^b7Nr{R4s2IbD~6$+bqdz zDBJ<3@cDhF2v-W_pHOofSis7FTvE8{W|co!Cqgw|FE)4ttXh>BRzsF{&1w+!IqL*A zk+9N%%jox2`N<~6JS@di8a{fAHi9lhrs#rXgbP!)5|&6la7oJg%RK<;73hK`4Hr(9 zjygEjE9x;pYDsHx{Al4H?YT6$g#0x@C#E5_{vyT7o{UM}=MQ7oLakmTh8dW4vnJ5m zD%SU17+qCrj+SFV#lx5$l&>InzU1x%xdU<|Ja(S!v5wY3WXF1l~%%|&se6` zIN?bhancKD!6H7gMzw|VVp^b#az-};{@A{UL>6LgBikTu#%FSusnjHf-86ETcO>n( zmP{BneZsKWC`xAFxlry*V2j4*4r8NMsjag;qH#!m8&y;`SkeKJl}S4fw1?yHh77gw zq1hWSPhmp@u;Cmu)SjZiQe7D|daz?oY&*D8ko$tcKqJ9}-Utn&pG9Xu<@?1Ua-t?* zL|8ZCtW(jnvO;_N;jOI?Jf6cFd(zamSggsJ8}*7V8lYTSc}B;z;w_a< z{N+PT5)4Q=Ziy$^WG+oo@g^WVYiOI65J01kC{h<=#CD6hUgYG+oj@Ts=>*(##a?d@ z$}(wFO_wj}RAhN4au{qyiw7pmrB#H|9u-DSj8Pym`GM^WZ$^GgY0*6F6|sF`$VOro(k*e7(Fj0x1Dce)KVnEn2fPYGU zFZjDm4`w6Yo8JFq+o5$WcfAmGuA~nMkCA%db!EjRT%MdGG_haXn3ZapNd9&rYjVE7QcXIzdaF<&i-w3A({QwIgT9pd5A{9Zis>b68 z3c1h~=q^M9FCBSX4y?0J6xZ6x;O$x6x_%#ZDmYaq_wQ@n_;Q?U#oo0yU=SYz8&SqE zmod!a%Et7bU3DAzCiaoeO8ZFr$U?PQq*vB<`G94$dZ0D6b!BH?X0N)<9YALLwJM`^ zK})L$Y-K6`PDNtwJ9bK-w=tddtQ=@5YnHjjLX@nE~uzfQv8ZtdD1Nn8)af^!V|1$b)B2f?_+q#k4jKQ_&#x}Vg0U=7;7b^DG}Pp{TGSbg%fyJ%Ii_Yju8Bx#Jz|9)QD!^8qw zj%Hqdv76D*wsS?>qnla}?qEG*X(>-OV+NrbM;UN|xsPg*KB>Q>eeWynhaXjI?@#Ji zTFoAMe|P@MY`tf$|@vSNLo!qHw>|iqI&_5 z^yGonRIi4YqvoTvac}GD6^OQOepb!4BATWan;2_2#6?fUG;Lj~Vkg8$YbLhB=$Uf# z+tuN+@VIe2#Ju8H&Fdd*UAava!aj3Ci8PFqGtDLsUN>>0r951J?NGtHPmrODJtI3A zgXecZc0M4A9@(G?V;c}^i(GY%Q#)S8HbgXo<=h}HiyB+lg;Iyv)-0AqbX=CQX*29C zhgY520V{F9KGuHnwfku!>$#2A%=#c9E+=)ohBbD{U|mDYejb6}nlE}T@U4`pgqFQ` zksp<$h-CGG5?Z!x%W2*E$jSY$E4`pRb%8@(A>kwSm{OB*!jNfM)xhnr<+0W+hh?3~ z-b=~Ab}5`itQV-?$?l+bJSmdUh(exP%9*QatzAZF%ww8TDR$Lx7;_DlqkB;5PJDH*Og9Y!`XT*G|ZJQmM#}XGiKW>JvE_fJ1m0QGHE~X%*lhV zSyEUS@Na$o4!A~Y_`--_M!~b%5ybze9$rIsq%8lY(wR6ME1x;jD9xWWwOHLC5hca> zbgubuYyAp7n!~o3G#B=%#pT#(Eiai_WYBoZFD;#UBX@)gd8SRU9;}Z@~Uk{v4D$Yue2yk7h$OE!qv8Efm6f zjSlU<;dHokX5kNui{eHWSf6TK(X!_eHrTuGZ&~vItbP05^*BVQUE+lXoKIZ%fw8x2 z3v=1HE2TS?MpzOJciqfrjhJF^v|1COrug3#9*gp}gU_jBz}9DXz?jIkrn*GyWglm6 zX}IguL)*TwI@I_1I8k+CR=l2FY3aqoL|JQSE-X|g~+`i^(gmf_&~L7&yKb= zcUjLzvAK`XspyU)mi&-U)=xji zom9y+{qiiN(PojRQ_o!!O5tVes^c2#MI*%x+JkhGgoML`)C0(KSaEHyt!+EFx$FAQ zC@$|@TgnU9#23QN6M6p;RkZpPaXW&Nkc@n^Sez$Gn|JcyPG~r~T_vcj88hiDC`yVh z1^vZ#Nwqf-b0)CyVJVxdEc2^F<7~N`pa9t;a?~CMHUAhKa!-+ud#s3eA$A?D0Jd##n@Ay88HRA9 z7VU<^Ql%v8o^lTFOB+d&ogQ3lo8sc_mKGP^Qa19DAo|T)GoCf?9wk zu9(lxDd?a$M3ZvJewZTDm zf`#zsjGi| zFP?gAZNdNrbIw6?(cv|8U4=G5RWHL02g;d0r)b*DxNeAqhsGw!f*0u+lUlK<<_6lNRgFxSo-$r!SU63b|J=7bRtL*v-KJmbaU8lif= zbF{8ePdu(M=H(_ajB8NdO++KBE9LClMoWfyvRucrF2k(HdX`dQS8xO?JBG3mWSHns zSQHhP7MJS@2bMq)Nt>V^VJ#V?ryO}S6icx%jys7`6md|FK<{b0<5e0p>fCZ<0N1la zn36}z8CE~j)T9&menvDd$DvNdl%XF3UVaiItMOEAdIEwDh0Ev)yPZyaaTUf+*UM|@ z7T^Rsog>I4iT#$50Xv;n--@T0H1;w}oFuXWS}H3hC9?vM&KeDP5u^P!5^Lsc{Y0nM z`g!JT@|3O7cm>AAaPCp1?l-{ao;JlOojFxSVVR7w;#pIS*>G6Qq&-bQ(OsVZZ3ae4W)8B=E)Q>MXziRqrNXPHDt3 z5e#2qR;b%#!!R3AFMz&i^@dI8kihjimmM=f4552HrY{yBl{-qbZhF0K*MaDzQ#Cmo z@+ONs_M*nmk{4z%>}dH28v(nK)qdydmR0w(tlEvsvt8w;Qz}}UjLD6r2F*&$$khhj zo)%Z;;$PO7+^kXK@KACa9`WC(aV58PqIYYG;-Tm-4zn!DOGxvv@SIrVchr( z)5N2WB{3;U|A&TJR<*mLPWFnKv$IOv1$7t!xC+y{`G8v2$^!MifL!Tv8;}&^s2n+u zWvc?PL|8N{ zy7673oBTCd)2GduR*Q=mxL8n^?Sxx~BWB$+>N2WM#57?nsv)0t)Rh|Jixcqi@WKtv z1nlY71`{(X??c2xE_6@WwQLW*+eJ5yEB!)V>CU3<)hvom$THK0b(3k;6F!=EeGf}++w@!2E zsGSafvzOqeMN|`NffG%uz?Jwgrtj(~K}aqG&|}q6v^=Euhu9EVuLxpz7y)lKnZQIC zC3lG{xx31NJ2YM9P{XvV95nZ;EbOmjSK!+g*`{x?+D5^>!fFS`kgPy9R$i5uL(O0| zwm@*2>#KBEsq4JcYeH_P9419{bqIqvu{!utmvV>{7a{Vm9g&rD?X}mA#^1PW$K!u| zt`VDZ?k!kbbk(9?{j2$<$KQYH)Ga@`;p)!^e16leJ0?H$+aC>iX4BI>kEh&n=fKxj zjT-vX<$dRbZ+$)3@%)GNPoDL`qv6jVed7)HqbKj0`ub;YZF%E+Z|~?k)Sq=~KKa}0oxeD%YQ%^^tI}V& zeEcOBW}oq9O+UNe_}S&5bn{^Pg2mZC|H+C~S;2>Pv>$%#hm{xX4&3*{pX|Ke^Rx5Y zANuvsvmSnL)wql=0^1k#KlhDY=lAklb#dvElFMH@)HL?RzC*6Q?&;$*X8vOHEr0W8 zSO4XX2g82ni;mc=#=aAKs~#(H>x_4N~$PuE-5Q`gJn`Ywvs$K*oRhrxQ#de-&T<#IV%&y#m> zeYxDp=dwH^rC0ynw$$_igYD-J?331`@7WhzGCX%g=7od$oz*kroFSK9F>3tPqkk~; zqI17@-o?YR#!R?o?8wW$e|h$}iIc9(x$4@<{rjZ%A3S`_q`rMK&c0y6#H%v;A$oQ3 z_>2MPUNq*$vTFyPJ8XQBw`%&}ORvhizIxHTQF$|Ntg5RuOXe9B0aulCz`(&dPJ9NQ zb3p-xgD)6Qfip+O;fsUmGakAatr%0KJu z>m5Ba7Y!P{V(pGzmliz##yPWoeR}Aair^i+)6YF`@c9=EyX^AeBd$;*W>VxH*DPW@FS1y-1Ybq zPwsx|=@(wy_tML+?0@yZPkwsj&9{Db^yk0$%{%Y@_PyU7|NS36`uLNREv;?sr~dT$ zU;p;S-~aK?FTeU)*iuqcZE2}JdZgh+mMP2QYLluega1{1P@Ms3JuVq_*1-JhdpZ`K zojH0%uR#TCcRc?_?@PzbI(<$>@Ym_*4juc^u+OPNvOdxPd~0>?_>bxnt&X)ewzRa= zw4PL(6x)*Prc9e6NP7HmA5|gc!qjUvp`H)nx$lD=krQ^+{ z;UPY173CouysaaG@8*l+2p;R%E*5e|M9`a;-*@Fc>q__5MK zczIa>;dq3b_jW`A2t7?5kzEMCK=?MoWzTm+&LBLEa7bSvhQH7e$wgR?upD9DOVA&} z{V#V!jv+j=AAI`>apcvGND;!-2T(r3hJ%n7;UR=45$3)Ic{5NB!V-k`*HJ#gBh4L= zeF#7J3CcxS^i${oFVPxuq$5&>@HE0@2;Y7adO-Lo!hHzGzlHWkIOu24GhRM02=Sf^G4?p*MY#F*9g*D#=e^$%`2gXj4^jWK!S{bahcIxWBT|oW{3qzA2wkmc zUxdvF?Smj6LcDiF?8i%^$`QVOsw1)qVffFe55kg9QSLd=-~WO>5qj|AsQ|+Mr%`W& zpZ>KY(vEQO-_cLcg*^X2I>PcVAwR-RUw1^lK=|yx(J$~qun+K~IV%y)wM8Pk5ccmG ziL@gWeIt>g!O-9LB9R7!`v*oMZzC)kgkQ2hAMJBNBr+Fa*7qZkCWK$uBatr=Zn_jN zx5Ar!$}a~$gr`SDBA+50KPnO_!ApaWTpfvQMkoqFkFa41=!c-+PK!jIML1|yByt+z zW`u(;f?mo|4#F>PiA44xO#2bazZm_wA`+R0@VGA$IfQWDqDZ7KUhYsG29B_yE)v;~ z@YAK>hw#f4kw_`*MA=;^AK{tjBaxw(fc}L@WIVzX2ul&>y%>q$-87;JVFSWmc!^dM z!cv6C5uQdUGNCX0_*X8%w3j0h7sAq4QD21UO7fF(+boe*dvVHz5Q;FUP7GR$Hlft~ zo);6Ag}?d0atXtSusr-N12z#MeTL$%9Dlojl@X9XGC#w`}Bn&6ob+ zA3+Rh`^d6}gWsp1EhAcdNEZ`<4Tl|}ys3@8Bw04V zHYoaIw)`zawq97U?t;ei!&*nVNVD6}7cke%C%OWzBg;HBCId_$=KDW>C@4=k@)RM@ z3ChEIm9iABPuq}MxY6cD#^1$sGah6O$a5NbnpK|pTl#M8Q?M?*v3KG6UK@HAZaiyK zkHUx3W+UV8e|J2VRZIl^5#$YTg56hnWjm_!Hrh6&$U<+X5~KNwViD3^8eXP+9Qo&~ z{Hh(J?J|>U8Er?Z-&oN1!n`{aIz;{E=TpZipt=>4#tW#_<*GE<*+}2j$nz!g1XLMv zL=>*GHKtINxRX#_)_^V#bGbmBz`NeI#lH3X1?w(uyr^*fkPR1ZykOJ$g&AvlK0MgA z2#LiObzn|HmSe~-Fvm9`=&XB^tUOK?vi@lpGsxpoc@pYh5?6ofmt#TS1o|V2zARsM zd{S8PdRtX=h{-WFAG9U#HFhgq#p+#JJ64)u25Be`LPm8$ji11R->;_GPsw<7DxQ?;WW}7R!y)r?PZ$0vyfsa*W;ajxM zHjQdbve|*}0?iP-u=AT}j)G<)Xs8cq`CxGyQ+}xQOZEB`H07Y7@n)f+VJyp{rl1N_ zT?WG^oDbSfineS^`qtis>v}czTz}Sv9)%mzu16-z5SI3>6nTyy&q}KQREw>UMlsx} zU6zsGxiem7jEU=54D5jku^lwIpvh7?m1Da&<5+JRXf)!eN89o;@+?DI%6}aBhQdcZ zrsR*=1laZssTiWJ_zDaKU0?XQ&B)WB@&xjE+GRhvXv&#|B*znAG^{Z!VInl5H9 zsBgJIUkm!M;+tDYoolY@1pR@nMEcuEm+gYM9e#o-u#Qhktzk_kYkvkjgrP{JY?n*DBr0HlC7k zqQ7qDjcJ=wAGX=9&nSzxGkM56z88ED`0hoPvZrR8?%%oW%_+7!ROuhYikEs^Mm*r( z9|b?uQR=ZMqrM+mlJz!sMs6X`!APe1J`4I<`2Ui=(9*v!?r$ZnD?6&^BFt8b6PYKf z@2AKwo`YYGK$ll6?R-Xa+IrjU^o(4LXXbKatav-fhhvS>jJ(t*E$uN)_fh%KFIh}ZD1_ji; ziZZsRJ!%6Nf5v?1?|o}COPO)sP8@#`>qYQP^dYY2>J3NIYS0bdhjjzdd zLtn<4hG_7y<8KJCTwtXH#Qe3Hy3MIQ@<1~eG|XGiEsZJUpz*v;ZB-4rzOTU7Rej@F zN^H`EH@6|BPFD`JM8662Cqb`e#$2MkOIbx<0{v0Yuh}1^PxMJP+PtxuhxmU9`iWTM zHsKj{Yhrn#%C4~Rr@k<}FYFEIPp3(G<)4v(DWVZyoYB;S`h>DJn^RIpq;%?0s$K!` zabc~@xUyIrWziBE?f_^2Q=|kghAF%Sn9g)=puXSMu13t%ibhbR6`D-o%(w^m6`#ZMVnGo6|G$VA=JQAm`2guppnlg*hdzochdY zy(^Vn)b*yaijb!k`xFz&_vH4NlF@WYTv_-bSL+;2`dWs3%l?boaZ1#ulHMNKvng0q zU`Ziu|8CHJ0NPR|*J+FgS|LymERHS{ig~unk4|)QeCMI8cI0n=8*@jZEi1{Wmt8kD zS;CU>bZN0<)F-mAKjXo^OO~o9`~!0DsFua-RM-y3MwznL^O48(o9G%YW*=x-!S-PY zcsGD<6XCC6BN{apSn|uUFa-N%<$r)pwb+27jOM=4v9QOI3G$WTuMBz4e1JZp@^HPH zFOSu0Q_4;0apNw(4_5PWqXPm^KiCXjAAHFEbbiJfi;a+TMs>P268U`=M4yZLP`e&S z-l5pL+pp@s9eH(Uoud5a>hx$|&F|y0M)Ht;j)^>@()7xo1sE zVYDuCaZhW2aC&UP4K5GHMZtr{*r(uA_9xhXJY$UI7Lgx*lQa=>JoUxC=CerOugYP6 zx_MUTv49!w;?6VNT(B(z5Bq2F^JGcJ_IpygVp5)-F(2zQtH+ez#{-ajb&K(VKJ&o) zS@7QXx2Qg~e2rc5w!PGe4e>Y)9xMNWaiQ8o^VrxmkKcFVkqaJU2VqYB3U)hgY+-JZ zemmyIo8resIr3B^&%}RWEMW}_-8ZrQCZ}O4sm5x4=cUIg&%I)0CkSkaZ!`Ed<3|zt zD!yEw6L)n{9}GL`pT-PWexFKKwiT0oZZP(w!#yIAqpFT_9Ao~s`0{gk6l)U_;xVk_ z@CzXy-diocI178N${tAhre>^3@2We%CM7!1`F-lT0^w_b_aX3}*ceH(PAiH`m!#oLFh9b2<2&$-w?O)|Y5&Zj;ju zwyrAuqps=)0lOFjWnf2V0`2ESBCC7Fcu&nZQJ>Zo?*b(B!gkrO`lR-=Wt?d4Q_zVm z$(x4r1N+61$V9A}V)8b<+(jSSjP0|G`K5`&6HCV~k-d;~6@|`b-@GSoczBo~j4kGSIP~&Ew;Aug+!JZc_!thAQc|8Tsd56^YQE zjBY!*TP)WlQ?bbyw=T&_=}McnJ3G~Z=JFvp9~yscB+@^AJe>W_bNQ4`b2-Ub4PIv^ zMUzk46EE$*t5%>(Zv;GI_l9bkQ%eGyJZf5 zO~~lnhc;uoy^G-s6WPV^m1|8q&iszvgflZ$_hS}6N<017fV@BEd_W$OX)f~78DL-R zL+Un>yCo$V%{{Dw(ay;%lz&~KO|g{%P1sM#??dge54?Bb2bkunz9i?S*fOLr<3yU; z=TG!9Z|T%Cm9Lxz=jd4z=b1l<$%$0}xYW&eI>UF9KL33v?kbwm!S`Zil^(G=n% zw+e_!0aZA4YfAhSFVEOkgU7Ko5w%Ybo^avCc3{KTMk2L%rVnBJfUO2Lp8$Nw-W&yX z99V#W*okAKJnrCi7SYjJt^FbBE|E^|tg7=qqNB6iGSC$z($TS=g6I{C#mQy?sL@GQ=_u!dE%B%YJYb?0!P;BvI4w zM{PuI)6^Mr@V^iw4w>ifPqzlTHPEerZVhy6pj!jo8tB$Qw+6a3(5-=P4RmXuTLax1 z=+;2D2D&xSt$}V0bZekn1Kk?v)L-5TiDK(_|EHPEerZVhy6 z;QuuZY`;d;xRk@AKDuES`xHN{;`F~O21lQ!ar*lS`ObF7_(Y=Au?L;6jPuhqSo-{r zB_GABIX%pw&i4SviH1H;S>pBA$I4czLg;+YGMz5(4NE?vJ;L$-=1}MRfa7%MkUo31 zbS^`ssQ-1o^ zfo^d^T$iImoo{IZU1LIA)9X;@+r)HQFV=poX|18o_YCLL^?T`C z%6p&F+Y|ErJ*YWYONl+}eE<9p^QF^Enefr2eAn{M{}1zB@gL@!{2%5k<9u3U*7nnN z)@c-KeHsb*{0VVu9&5f}0^N#)c(Qz}6YTZMgnSJge~3dZ=i?mL{qx(#?Lnsh35Qyq zcM{?n*P+h$UIJY^$4QrTS3dEh^Zn@?^3nbJ#E;G=66QNyKPs=Q_S5;!=6qT&)^<-U zi{d)p#hg#u&*2H>kK}kEhX#k09P0A4oL!Ygn9djEe45Vc7j)(K+|KlqxWDLpcUky+ zQ@(pGbd*=iNxJM}nijge&74o`{HX*!S`HoRd`(REUG?%N)4!dN@7vl>=WFGBTF!rP zT+5Xh4qd7!cgq(`#QM~?*};D^-@o6h^6UD2o18k|3;$txUu{+8ZQ^hjhfi_X#NjI( zzQN%yIPBP{^1sLN4>;_#N#QLV{|(P4&&rqo;QcflDk>o|xxzXw-ys3z_GJY(j8qSJ zZHN2}sZx~qYM=ak`4=_9@YOH*p|57r2VZ?tpU+e}zTPB1I{oh*5kCPX<;ANIAeZ`(Q?!G=;=dWMWT-`A74?DA5HhKh^im7C7}+EpI{>y;kcITG{*;V`d1u3%6$J% z1x?)E-J#NWw;ui<(ZknzB!0J%);y+bx?b{Ig~Ixy4?g^Wp3BJXn!X$D)%~a%V>=I9n`g>NE_*ICgpBIn!5ZWJ%$IlYlPm0HT3hiIT>1AR*INBBvm*LxPXGG4-j^1T+oXwgUX+ZmVd z!v}Udyo$Jh zJhxZ@^BMm><7*g~?|4Vr6^!qjq6h;_KaTOCQyH+SaJlEP;roWN#GmP&>oIZLS_1eaOf`xeXTJPjhy{$NO;9ddVV>4Bpn@1dCd{9|D{tL$EGS1yvyw7+e zv|QJ?<&V*8rqHIZ=a=b&A%VxLuV^I3;F4D0pn%mDt=4_ z;!?)#>eVNrf$<#1cPHRiF`j#aA`CNqA>+Fk*Y%pt_y>&7W%`>LAA6$$nh~duoAEDh zQt?`r|2D=ww4S_nkzv6{?~B~ec24{bvcpITGJ<-4o#H~`Zk;cKcC zUabOgA>&^%ew=aIpCkHXO!zM2lNsOTRsh*4`b=ZIeu0YHRUqawzMXL%ej?2Hr;KYp z4={dop<>XB+v_RDkMTg%^e;31tXI)%{LLizyNoyZ6nzuR`5EKmY2v^~zULX?8ODcm z$JF%aq$&LzXMCm1h4;}hKCears~NwJ@pi_SalI-TcP&wbL%AJSFy2t7aQRMUJZ@!t z|7{9Ctpag?@!d-mkjMPrVZ42r!g(86v@u@xV}&;}{g;gQuUEKyr!gK=v2jZMq4Z9L z>v~6bI^VFBg4fswYJ@%jf8p`I^xGCq8b!gW7?f$=kpYkmHN@re&9`jaXU|HZg{odUFb z-Ol)tMup3F>EiJWpH6uE)zk#`p0+ z(d8at{OF5{UcP@7kH2Kx^NPaxI)eBk<6rJqxO{Ia9{(7c*$QBF5gLs$5zIV{zKsn zDiHr-yzHL}(DuaEOVv00mBQuwBJp@W~}CBReg>s6b+ zR)%V@g2nYrKewl%m+xXknmY-7FbTet`K%@f6`z%C57#l?|6GM@{XE6^knx@slSm7?_^9RPa+nEpg6Mep5{MpMCF5fK(ye}3u)KAiWpm6z)K;VEWwbOchFcP}b zPhUxY9#+_xP%Iz2q_^O#=WLDhdX`}^j`6{aLu~m`{0ECQ3G3fHNgu;CpJ|M5V)}a4 zPZ{Hbdn!3K{XE8pB;eJI+ZosLEM|Oo0)7wUxr{@(^0Q9ky;ZrI&o;)#C*V&po|k|h zX1pW;{{`b^3HWarpUb$e??;T!V_YB1eWr18sOZCjc4++kc)VXa^@qV?-X-z)MH0^t zcD+tf-Ajzn_;v;Gv7pFdd=%qntJ2W}>2sbaOKA7;l0JrOeU>mjH=+NOGd@27cQ9U^ zfcqE^B;d7-*Cyb1GG3p6EBQO`3$2s%F?@I*RpCb%&t?0Qr(p3c;{nEpGp_je$8Ytp zf*C&u`fu8oIFYcg@)qdH4kY478Sl^g63jl@F8Z8C(3`?za%%oF!RMRw*>r=hk;-us z%c*e>GjcILgckVt)H3d2ypi$wj0YM2g7E<3%NcjgRea_$zLN1nj2AJ!nsITHqTj`M zBjdXmuV#D;<9%;d^v^Q>1mpV|m+vA)n$lZ_DBtg+o)2SuzNS~|;CAURj=#wO z^GRkORJr}d=7jz5DnS}m868x7*@c&7Ie+gXs29{z)ItEBr?Oq9-^fUj8 z`0;X~#LtV)JDOK!5k0il=mjpkR1W$z> z=&C=TlLWsk2|h6iJ~Ihk0la?~_Q#)uenk>|T@w7sB>2H3_|_!-;de>s|C9v(8n|5# za!Ys$u4Gqw?hPZ;m7Tc^U{~~45xwm^EQ{jpOi>d0IYbYCK%Z0V`P!9)esL1~nI!Ye z+9dQlli-Jv;J-|Qw9OoI1@(z>#H8Nj>JXSHm{*tzpqZnKM%(2q;Pe^L_qGN#w- z4&5c_x2y24)5j3@UN1z%RiIQ_f9e{ zE=+=t1Wx@wQJ+^Qp)XB>{|LCfllHM5Ns~w}qU1?N!{LY1zc%|Ft@CZjuxZ0>TYemQmg$!UWJcV6mrFwRUjF1V=VfSLw z@HxCD%0vdY&sb9J4x1i#D9loL{8f<6s0^CcLTdspN7xh#{KygZF9a(Qa)QKX1cK&b zi0%)XqSgqS4wq3`-MM1kHh=LU{L_;=3Opn!I1M%?` zbSwcYFb#Q0pOtP8m{1KDJ3MZe2tXWC2MX{y+&;HY$_`4uld2yE5HhOFFp<}w&L9V@ zlofD*4aMRJ-98K8tO*89pU&+yy-JytggLzd;j44Fag)p^f?h}f>JZcm?k>0AShzU) zV30m)e8}PwKK~NK>-YH$Z%8;piw&nA7ucj=vPPt2pFfDox^FWLYNMEV-i0oA&D0l%-(T_wVm)PzuWls1M4 zZ;dDHCKiTS8xA_0VbuaYXcXCfAxIbunMQ@*RYwi$2n5h*!tGmNf)t(DFc*_F79ePP zOh?ER?tl}`jD`}GeqT7Ggayw~I1uy)AhGPw&Oo*m(?ZA|7?&ccWs6ojLe+6e1Q=dN z*ja6c6jzxY-NL7$UdKYy2su35FJ!b67ugAe=As%?juea?R&`ui;o2|{k2pBA*opS8 zLZ9IFh)X3^kTywYVXwbaTEGle8Ynne*Ez|*#0(l}7q{ORm#F%n>LBQLacNXuz}p2! zYE~r15fkP@L;EWhP}`HCq24VYssB2{R`P6jDCj`rnZ6pY;SZ2lA!9+v?-Su_(`%~7 z=y=2U_bLbmhYG+*mEA#t(oFdLVRxlL1y#CDk4y7cumiH^8cJ4JO6GQg+V8`N40+wKGB8NV zX)qwd(FzdfP+f==!>!61g@#mhX_ioCPQ{gF)5$`L6>>VL@E~Hi^(w~~S@@_7UYa4$ zmgtwTyYxiOEGHHfrF?E*pavb%5r}5fwRU5aCR9ll>-JUpI}yhfOyWS#815!bLRMmh zOB>f2t_gVjj%e$XbXGlwtQjzWg$!qqtN^Qy$R(O63K^&hG7MHqrF|=+x-R;r1{Xo| z4zE-$Pl5{qW|dB*;-oq-C;1o0*HJb_e5WBjgvOA;Bjrc}x7XUMm|(Qvhf#`Bs?pV{ z^Jw+PYfDz2OqdojItHD7Gw6)#_^Mud^6ac1or2z>xmDvvH3k(KF(qa87*StxTK9g0~5ovFAB;eIg7_j=$19UY%-LlE;mtRT>DL>jbEfB0SXeS^CZ0-eFp3I|Qc+UC;SEMU$5klP3ppL3 zOqX$_7m5Xy?#k@Z!s&*b4p&|FC_GAKO_`NHz1S$8QDhjxD7tAz{`6^uPzZjW%_uH0 zRBB1lEMZJ7omr4yYRsH6Wp;77QJ!B=T5Mp|;B^M-@}`zfD=0KZXOFrHS>5O~qsPz` z8TQwBqG@Bs3qT&z7ezo_iIEzz0*#` zb&2jd<DMP*h=I(H;(o#FBc@1ZE9IYHo&=%>A+!#ZI+*PPvTsem3n3%f~ z;)miYh&Fdy^P*+}cbr~j%V8yDrK%+LSpmaXoUBY*p!wr;2t!A<4Srxe3v1`KbVPK4 zKtjh1B$f{$eOP%}`BkDSam5-~(2$xFl>$XWB5PJ~3seN-^zLvv%|v+@S9Z;imiX~C z_K=?#En&DW=&t^_ zRyBwxdN;b9oa+*}2A$P$&L z3dP2VBd&@xJTcRmal;KI__}C#gU2#2_pAk}p)Sp&>^1RiKt`E-i1?zF7ah-qXcBvV zrPCLV>5BRehGnOrkTA($SamUaNz3t~p{n?26{05OG0nK1X&9I!cmkBFiJ#8`oy?V- zVvSqee@JH|N(E0WEP<8k=6KnZ3oet^iEA%c99Y29{ zB>LzuprTTKqS5j*EIfE1-a5a2KS?yi{yu$l`8vO@|6)!nkW?c2{a5`xSp9w!%6~5Y z67$ysqc-L1xzX>*>hH_y_5+FhXgPFzDITo(_4jFY*k3c|46GiVUEGzBUw`jbhx5k7 z_qe=hPW7-lA;129t`4=HbhbqKAL9I4|N4AXhqq1AIaR3jr_o0e^6T&W>Tq*HfeBHu zJ0ZXRUT`$LSeK;2#PVMNY#sml`@=f4$7hfBBMmp>0Y~1^Q)K-;<1hcB^qyFrj_Z)d z2d)%E^GEMbe)iq+A4guI)Th|`d&|8z|86o4mX9u1LoIlqE~fMAdtOanbHCw+YzWyF`(;1b&Of%*Jb@@8{TSESrB&y(sga+67n4O@n2@s}>(dU^BX)6Em zVVY8fiTOJKlcc%vWH=X9`7cYrSt~LRCDGRiP_{NxQR*hnKQxM{hlJ`#KCI$6%Hy0r xml=>9$v|0JemyS9yz9DK8T1;VxEA4D()!WzYYfNCUFI*Hr1GDakRc%|{y$nw3nu^o delta 63528 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 z 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 diff --git a/patch_v2/meowpanel/web/meowpanel.js b/patch_v2/meowpanel/web/meowpanel.js index 76635f5..3964398 100644 --- a/patch_v2/meowpanel/web/meowpanel.js +++ b/patch_v2/meowpanel/web/meowpanel.js @@ -503,6 +503,7 @@ * 电平:rms(青绿) + peak(黄) 双条 dBFS 表(-60..0 刻度)+ deci-dB 数值 + 近 30 采样 sparkline(客户端自累积)。 * 短流时显示「无流」;audiod 不在 → available:false。 */ let audioTimer = null; + let audioVolDrag = false; // 音量滑条拖拽中(暂停 1s 重渲染,防打断交互) function stopAudio() { if (audioTimer) { clearInterval(audioTimer); audioTimer = null; } } function audioPortName(p) { // audiod numid=9 路由口语义(AUDIOD_DESIGN §5) const m = { 0: '空闲', 1: 'Line Out', 2: '3.5mm', 3: '4.4mm 平衡', 4: 'Type-C SPDIF' }; @@ -510,6 +511,35 @@ return m[p] || ('端口 ' + p); } function fmtFrames(n) { return (n == null) ? '—' : Number(n).toLocaleString(); } + /* 路由口 → 中文(写选择器用;0=auto/2=3.5/3=4.4,绝不暴露 4=SPDIF/5=audiod 内部值)。 */ + function audioRouteLabel(p) { + const m = { 0: '自动', 2: '3.5mm', 3: '4.4mm' }; + return m[p] || ('端口 ' + p); + } + /* 路由与音量写控件(批2):路由分段选择 + 音量滑条(上限 vol_max、平方锥度非线性标注)。 + * 写级——前端切换/调高前 confirmDlg(选错口会无声)。当前值只读显示锥度后百分比(上限以内)。 */ + function audioCtlHtml(d) { + const vmax = (d && d.vol_max != null) ? d.vol_max : 100; + const vol = (d && d.vol != null && d.vol >= 0) ? Math.min(d.vol, vmax) : 0; + const cur = d.port; + let s = '

路由与音量

' + + row('路由模式', esc(d.route_mode || '—') + (d.route_mode === 'manual' ? '(手动覆盖)' : '(跟随插孔)')) + + row('输出口', audioPortName(d.port)) + + row('音量(只读)', (d.vol != null && d.vol >= 0 ? '' + esc(d.vol) + ' %' : '—') + + ' (上限 ' + esc(vmax) + ' · 平方锥度非线性)') + + '
'; + s += '
输出路由'; + [0, 2, 3].forEach(p => { + s += ''; + }); + s += '
'; + s += '
' + vol + '' + + '' + + '' + vmax + '
'; + s += '

切换/调节前会确认。选错输出口会无声;音量走平方锥度(越接近上限越响,非等比),系统上限 ' + esc(vmax) + '。

'; + s += '
'; + return s; + } function audioFlowHtml(d) { let h = ''; if (!d || !d.available) { @@ -532,11 +562,7 @@ h += '

当前无活动音频流。

'; } h += ''; - h += '

路由与音量

' + - row('路由模式', esc(d.route_mode || '—') + (d.route_mode === 'manual' ? '(手动覆盖)' : '(跟随插孔)')) + - row('输出口', audioPortName(d.port)) + - row('音量', (d.vol != null && d.vol >= 0 ? esc(d.vol) + ' %' : '—')) + - '
'; + h += audioCtlHtml(d); } return h; } @@ -550,13 +576,14 @@ return; } if (state.route !== 'audio') return; + if (audioVolDrag) return; // 音量滑条拖拽中:暂停重渲染防打断(电平/控件保留当前交互态) flowEl.innerHTML = audioFlowHtml(d); updateLevelMeter($('#audio-level'), d); const note = $('#audio-level-note'); if (note) { - if (!d || !d.available) note.innerHTML = 'audiod 不可用 · 每 1 秒自动刷新 · 只读展示。'; - else if (!d.active) note.innerHTML = '当前无流 · 电平保持 −∞ · 每 1 秒自动刷新。'; - else note.innerHTML = '每 1 秒自动刷新 · 只读展示(测试音请用设备 CLI meow_audio tone,面板不放声)。'; + if (!d || !d.available) note.innerHTML = 'audiod 不可用 · 每 1 秒自动刷新(路由/音量写端点不可用)。'; + else if (!d.active) note.innerHTML = '当前无流 · 电平保持 −∞ · 每 1 秒自动刷新。路由/音量为写级,需登录会话。'; + else note.innerHTML = '每 1 秒自动刷新 · 流信息只读;路由与音量为写级(确认后生效,不放测试音)。'; } } function renderAudio() { @@ -573,12 +600,56 @@ fetchAudioOnce(); audioTimer = setInterval(fetchAudioOnce, 1000); } + /* 音频页交互(委托 #content,元素随 1s 轮询重建亦不失效):路由切换/音量滑条均写级 + confirm。 */ + function bindAudio() { + $('#content').addEventListener('click', async function (e) { + const rb = e.target.closest('[data-audio-route]'); + if (rb) { + const port = parseInt(rb.dataset.audioRoute, 10); + if (!(port === 0 || port === 2 || port === 3)) { toast('非法路由口(仅自动/3.5/4.4)'); return; } + const ok = await confirmDlg('切换输出路由', + '确认切换到「' + audioRouteLabel(port) + (port === 0 ? '(跟随插孔)' : '') + '」?\n选错输出口会无声,请确认当前插孔。', false); + if (!ok) return; + try { await api('POST', '/api/audio/route', { port: port }); toast('路由已切换:' + audioRouteLabel(port)); } + catch (err) { toast('切换失败:' + errText(err)); } + return; + } + }); + $('#content').addEventListener('pointerdown', function (e) { + const sl = e.target.closest('[data-audio-vol]'); + if (sl) { audioVolDrag = true; const row = sl.closest('.field-row'); if (row) row.querySelector('.muted').textContent = sl.value; } + }); + $('#content').addEventListener('pointerup', function (e) { + // 释放即复位;若值已提交 change 会再走确认,此处仅保证「点击未改动」时也不卡住重渲染 + if (e.target.closest('[data-audio-vol]')) setTimeout(function () { audioVolDrag = false; }, 250); + }); + $('#content').addEventListener('input', function (e) { + const sl = e.target.closest('[data-audio-vol]'); + if (!sl) return; + const row = sl.closest('.field-row'); if (row) row.querySelector('.muted').textContent = sl.value; + }); + $('#content').addEventListener('change', async function (e) { + const sl = e.target.closest('[data-audio-vol]'); + if (!sl) return; + audioVolDrag = false; + const v = parseInt(sl.value, 10); + const vmax = parseInt(sl.max, 10) || 100; + const ok = await confirmDlg('确认音量', + '确认将音量设为 ' + v + ' %?(系统上限 ' + vmax + ',平方锥度非线性——越接近上限越响且非等比)', false); + if (!ok) { fetchAudioOnce(); return; } // 取消 → 立即拉一次复位滑条 + try { + await api('POST', '/api/audio/volume', { value: v }); + toast('音量已设为 ' + v + ' %'); + fetchAudioOnce(); + } catch (err) { toast('设置失败:' + errText(err)); fetchAudioOnce(); } + }); + } /* ---------------- 2d. 首页仪表盘(#/home,默认路由;/api/overview 聚合,5s 节拍 + 电平 1s 子节拍) ---------------- * 单请求 /api/overview 供全部卡片;另低频补充 /api/system(boot/默认启动,静态)+ /api/net/dns(DNS 上游/缓存)。 * 任一源 available:false / 缺失 → 该卡显示「—」,绝不拖垮其它卡。 */ let homeTimer = null, homeLevelTimer = null; - let homeData = null, homeDns = null, homeSys = null; + let homeData = null, homeSys = null; function stopHome() { if (homeTimer) { clearInterval(homeTimer); homeTimer = null; } if (homeLevelTimer) { clearInterval(homeLevelTimer); homeLevelTimer = null; } @@ -643,7 +714,7 @@ const nd = homeData && homeData.net; if (!isAvail(nd)) return homeCard('WiFi / DNS', homeUnavailable()); const w = nd.wifi || {}; - const dn = homeDns; + const dn = (nd && nd.dns) || null; // 批2: DNS 统计已并入 /api/overview 的 net 块(首页严格单请求) let rows = ''; rows += homeKv('WiFi', w.connected ? ('已连接 ' + esc(w.ssid || '')) : '未连接'); if (w.connected) { @@ -733,24 +804,23 @@ } async function fetchOverviewOnce() { if (state.route !== 'home') return; - const r = await Promise.allSettled([api('GET', '/api/net/dns'), api('GET', '/api/overview')]); - if (r[1].status !== 'fulfilled') { + const r = await Promise.allSettled([api('GET', '/api/overview')]); + if (r[0].status !== 'fulfilled') { const b = $('#home-banner'); if (b) { - b.innerHTML = '⚠️总览加载失败:' + esc(errText(r[1].reason)) + ''; + b.innerHTML = '⚠️总览加载失败:' + esc(errText(r[0].reason)) + ''; b.hidden = false; } return; } const b = $('#home-banner'); if (b) { b.hidden = true; b.innerHTML = ''; } - homeDns = (r[0].status === 'fulfilled') ? r[0].value : null; - homeData = r[1].value; + homeData = r[0].value; // 首页严格单请求:DNS 已并入 overview 的 net 块 renderHomeCards(); } function renderHome() { stopHome(); resetSpark(); // 进入首页重置 sparkline 累积 - homeData = null; homeDns = null; homeSys = null; + homeData = null; homeSys = null; $('#content').innerHTML = '
' + '' + @@ -1863,27 +1933,86 @@ }); } - /* ---------------- 8. 日志页 ---------------- */ - async function renderLogs() { - $('#content').innerHTML = '

加载日志列表…

'; - let d; - try { d = await api('GET', '/api/logs'); } - catch (e) { if (state.route === 'logs') $('#content').innerHTML = emptyState('加载失败:' + errText(e), e.code); return; } - if (state.route !== 'logs') return; - let h = '
'; - h += '

日志文件(MeowOS/logs)

'; - h += '
' + esc(d.dir || '') + '
'; - h += ''; - if (!d.files.length) h += ''; - d.files.forEach(f => { - h += '' + + /* ---------------- 8. 日志页(批2 崩溃/日志中心:崩溃汇总 + 分组 + 前缀过滤 + 崩溃尾巴前置) ---------------- */ + let logsGroup = 'all', logsPrefix = ''; + const LOG_GROUP_NAME = { all: '全部', system: '系统服务', app: 'App', audio_monitor: 'audio_monitor', power: 'power', net: 'net', crash: 'crash', ams: 'ams' }; + function groupName(g) { return LOG_GROUP_NAME[g] || (g || 'app'); } + function logsCrashCard(cr) { + const ents = (cr.entities || []).filter(e => e.name); + let h = '

崩溃汇总(' + esc(cr.file || '本 boot · crash log') + ')

'; + if (!ents.length && !(cr.dmesg_count || 0)) { h += '

本 boot 无崩溃记录。

'; return h; } + h += '
文件大小修改时间操作
暂无日志
' + esc(f.name) + '' + fmtBytes(f.size) + '' + fmtTime(f.mtime) + '
'; + ents.forEach(e => { + h += '' + + '' + + '' + + '' + + ''; + }); + h += '
实体崩溃数最近时间信号/退出操作
' + esc(e.name) + '' + esc(e.count) + ((e.count || 0) > 0 ? ' ⚠' : '') + '' + esc(e.last_time || '—') + '' + esc(e.last_kind || '—') + '' + (e.last_code != null && e.last_code !== 0 ? ' (' + esc(e.last_code) + ')' : '') + '
'; + if (cr.dmesg_count) { + h += '

内核 oops / segfault 捕获:' + esc(cr.dmesg_count) + ' 条' + + ((cr.dmesg_tail || []).length ? '

' + esc((cr.dmesg_tail || []).map(x => '· ' + x).join('\n')) + '
' : '') + '

'; + } + h += '
'; + return h; + } + function renderLogsFiles(files) { + const el = $('#logs-files'); + if (!el) return; + const filtered = files.filter(f => { + if (logsGroup !== 'all' && (f.group || 'app') !== logsGroup) return false; + if (logsPrefix && !f.name.toLowerCase().startsWith(logsPrefix.toLowerCase())) return false; + return true; + }); + let h = ''; + if (!filtered.length) h += ''; + filtered.forEach(f => { + h += '' + ''; }); - h += '
文件分组大小修改时间操作
暂无日志(或过滤后无结果)
' + esc(f.name) + '' + groupName(f.group) + '' + fmtBytes(f.size) + '' + fmtTime(f.mtime) + '
'; + h += ''; + el.innerHTML = h; + } + async function renderLogs() { + $('#content').innerHTML = '

加载日志列表…

'; + const r = await Promise.allSettled([api('GET', '/api/logs'), api('GET', '/api/logs/crash')]); + if (state.route !== 'logs') return; + if (r[0].status !== 'fulfilled') { + $('#content').innerHTML = emptyState('加载失败:' + errText(r[0].reason), r[0].reason && r[0].reason.code); + return; + } + const d = r[0].value; + const cr = (r[1].status === 'fulfilled') ? r[1].value : null; + let h = '
'; + if (cr && ((cr.count || 0) > 0 || (cr.dmesg_count || 0) > 0 || (cr.entities || []).length)) h += logsCrashCard(cr); + h += '

日志文件(MeowOS/logs)

'; + h += '
' + esc(d.dir || '') + '
'; + h += '
'; + h += ''; + h += '
'; + h += '
'; + Object.keys(LOG_GROUP_NAME).forEach(g => { + h += ''; + }); + h += '
'; + h += '
加载…
'; + h += '
'; $('#content').innerHTML = h; + logsFiles = d.files || []; + renderLogsFiles(logsFiles); } function bindLogs() { $('#content').addEventListener('click', async function (e) { + const gbtn = e.target.closest('[data-log-group]'); + if (gbtn) { + logsGroup = gbtn.dataset.logGroup; + $$('[data-log-group]').forEach(b => b.classList.toggle('btn-primary', b === gbtn)); + renderLogsFiles(logsFiles); + return; + } + const tb = e.target.closest('[data-crash-tail]'); + if (tb) { await viewLogsCrashTail(tb.dataset.crashTail, tb); return; } const t = e.target.closest('[data-log]'); if (!t) return; const p = $('#log-view'); try { @@ -1891,6 +2020,32 @@ p.hidden = false; p.textContent = (d.lines || []).join('\n') + (d.truncated ? '\n…(更多行被截断)' : ''); } catch (err) { toast('查看失败:' + errText(err)); } }); + $('#content').addEventListener('input', function (e) { + const p = e.target.closest('[data-log-prefix]'); + if (!p) return; + logsPrefix = p.value; + renderLogsFiles(logsFiles); + }); + } + /* 崩溃实体 → stdout 尾部:复用批1-B 的读取路径(/api/files 列 logs// → /api/logs/read 读尾部)。 */ + let logsFiles = []; + async function viewLogsCrashTail(name, btn) { + btn.textContent = '加载中…'; + let file; + try { + const d = await api('GET', '/api/files?path=' + encodeURIComponent('/MeowOS/logs/' + name + '/')); + const files = (d.items || []).filter(f => f.type === 'file' && f.name && f.name.indexOf('stdout_') === 0); + if (!files.length) { btn.textContent = 'stdout 尾部'; toast('未找到 ' + name + ' 的 stdout 日志'); return; } + files.sort((a, b) => (b.mtime || 0) - (a.mtime || 0)); + file = files[0].name; + } catch (err) { btn.textContent = 'stdout 尾部'; toast('查找失败:' + errText(err)); return; } + try { + const d = await api('GET', '/api/logs/read?file=' + encodeURIComponent(name + '/' + file) + '&lines=200'); + const lines = (d.lines || []); + const p = $('#log-view'); + if (p) { p.hidden = false; p.textContent = name + '/' + file + '\n' + (lines.join('\n') || '(空)') + (d.truncated ? '\n…(超出尾部上限,部分被截断)' : ''); } + } catch (err) { toast('读取失败:' + errText(err)); } + btn.textContent = 'stdout 尾部'; } /* ---------------- 9. 通知页 ---------------- */ @@ -2132,7 +2287,7 @@ home: { title: '首页仪表盘', render: renderHome, bind: bindHome }, perf: { title: '实时性能', render: renderPerf, bind: null }, bright: { title: '亮度 · 音量', render: renderBright, bind: null }, - audio: { title: '音频状态', render: renderAudio, bind: null }, + audio: { title: '音频状态', render: renderAudio, bind: bindAudio }, net: { title: '网络管理', render: renderNet, bind: bindNet }, files: { title: '文件管理', render: renderFiles, bind: bindFiles }, apps: { title: 'MeowAPPs 管理', render: renderApps, bind: bindApps }, @@ -2181,7 +2336,7 @@ bindNav(); bindThemeUi(); bindSlider(); - bindFiles(); bindApps(); bindFonts(); bindSettings(); bindRemote(); bindScreen(); bindSystem(); bindLogs(); bindNotif(); bindNet(); bindHome(); bindProc(); bindPin(); + bindFiles(); bindApps(); bindFonts(); bindSettings(); bindRemote(); bindScreen(); bindSystem(); bindLogs(); bindNotif(); bindNet(); bindHome(); bindProc(); bindPin(); bindAudio(); bindLogin(); bindPwDlg(); // 首次进入:访问级 PIN 鉴权——已登录直接进;未设 PIN(且无旧密码)→ 首次设置流程;已设 → 登录