feat(packet-probe): replace energy sweep with protocol probing

This commit is contained in:
liu weikai
2026-08-09 23:15:26 +08:00
parent da2245a7f1
commit 6bc25ce5e1
16 changed files with 13736 additions and 2132 deletions
@@ -170,7 +170,7 @@ set(TRAILMATE_ESP_IDF_UI_SHARED_SOURCES
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/route_topbar.c"
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/Satellite.c"
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/Setting.c"
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/Spectrum.c"
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/radar.c"
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/sstv.c"
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/sos.c"
"${TRAILMATE_ROOT}/modules/ui_shared/src/ui/assets/team.c"
+1 -1
View File
@@ -322,7 +322,7 @@ set(TRAIL_MATE_LINUX_UI_SHELL_SOURCES
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/route_topbar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/Satellite.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/Setting.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/Spectrum.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/radar.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/sstv.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/sos.c"
"${TRAIL_MATE_UI_SHARED_SRC_ROOT}/ui/assets/shutdown.c"
+69 -352
View File
@@ -1,375 +1,92 @@
它实现了什么功能?
# Packet Probe
## 1️⃣ 实时频段能量扫描(Energy Sweep
## Purpose
左侧柱状图表示:
Packet Probe replaces the former RSSI-oriented Energy Sweep page. Its question is
not whether a frequency range contains energy. It asks whether an active Trail
Mate air protocol can be observed on a concrete set of LoRa air parameters.
* X 轴:频率区间(例如 433.050 → 434.790 MHz
* Y 轴:RSSI 强度
* 每根柱:一个步进频点的瞬时/平均功率
The internal application id and source directory stay `energy_sweep` for
navigation and migration compatibility. The user-facing name is `Packet Probe`.
它的意义是:
## Evidence Contract
* 快速查看该频段是否拥挤
* 判断是否存在强干扰
* 观察噪声底(Noise Floor
* 找出峰值位置
An observed profile is created only when all of the following are true:
这不是 SDR 级 FFT,而是 **工程级信道占用判断工具**
1. The radio reports RX_DONE and provides a packet that has passed the radio
CRC path.
2. The receiver was configured with the candidate frequency, bandwidth,
spreading factor, coding rate, preamble, sync word, and CRC length.
3. The packet has passed a structural parser for the active protocol:
Meshtastic wire framing or MeshCore packet framing.
---
The page displays the profile and its evidence-packet count. It deliberately
does not expose business-packet labels such as position, node info, or telemetry.
No simulator path may produce evidence packets. A candidate with no evidence is
not a negative finding; it means only that the current dwell did not observe one.
## 2️⃣ 精确频点分析(Cursor 模式)
The first version's evidence level is radio CRC plus structural protocol
validation. It is a strong discovery signal but is not authenticated proof of a
channel key. A future evidence-level upgrade can use the active adapter's full
decrypt/MAC validation while preserving the same UI result model.
右侧 CURSOR 区域实现:
## Candidate Plan And Timing
* 当前指向频点(433.550 MHz
* 该频点 RSSI
* 当前噪声水平
Candidates are generated from the active protocol's regional frequency span and
currently active LoRa parameters. The center frequencies are quantized to 25
kHz, limited to 96 candidates, and adjusted to keep the configured bandwidth in
the regional range.
这让它从“观察”变成“测量”。
Each candidate receives a 700 ms dwell. A typical 70-candidate pass is about 49
seconds before radio retuning overhead. One valid packet is an immediate positive
result. Multiple passes increase coverage for intermittent traffic, but the UI
must never label a silent candidate as absent or unused.
你不只是看到一堆柱子,而是可以:
## Radio Ownership And Apply Flow
* 精确读取某个频点的功率
* 判断是否可用
* 判断是否存在连续干扰
The probe obtains the exclusive LoRa runtime only while scanning. On each
RX_DONE it copies the packet into caller-owned scratch storage, clears IRQ flags,
and restarts reception. Leaving, stopping, or applying releases the runtime and
returns the radio to mesh ownership.
---
Applying a selected result is an explicit two-step action:
## 3️⃣ 自动最优信道选择(Best Channel Detection
1. The user selects an observed profile and opens the confirmation dialog.
2. On confirmation, the page stops probing, releases the temporary radio
session, updates configuration in a `beginConfigEdit()` transaction, commits
`AppConfigChangeSet::mesh()`, then calls `applyMeshConfig()`.
BEST 区域实现:
Meshtastic is switched to manual modem parameters with the observed center
frequency as its override and zero frequency offset. MeshCore switches to its
custom region values with the observed frequency, bandwidth, SF, and CR.
* 计算“最干净”的频点
* 显示推荐频率
* 显示 SNR
## Hardware Capability Model
这一步非常关键,它实现了:
| Radio | Current implementation | Result |
| --- | --- | --- |
| SX1262 | One frequency/BW/SF/CR receive configuration at a time | One single-SF lane scans candidates serially. |
| LR1121 | The IC supports Multi-SF in its datasheet, but local RadioLib 7.4 integration exposes only normal single-profile receive and no packet-to-SF attribution API | The first release intentionally uses the same one-lane model. |
> 从频谱数据 → 可行动建议
The probe scheduler is profile-based so a future LR1121 POC can add a second
same-frequency/BW SF lane. Enabling that needs all of the following real-device
proof: RadioLib configuration support, RX_DONE packet retrieval for both SFs,
and reliable attribution of each received packet to its SF. Until then the UI
and evidence count make no multi-SF claim.
它不只是显示世界,而是**给出决策结果**。
## Pager UI Specification
---
The 480x222 Pager page follows the Map page language:
## 4️⃣ 扫描进度管理
- A 30 px amber top bar titled `PACKET PROBE`.
- An unframed, full-width work area containing the observed-profile list only.
The selected row is highlighted in place; there is no repeated detail panel,
which keeps the page viable on T-Deck-class narrow displays.
- Observed rows show `frequency`, `BW/SF/CR`, and `x evidence-count` only.
- A 24 px Map-style bottom bar: `UP/DN Select`, `ENTER Set`, `S Start/Stop`,
and `ESC Back`.
- Selecting `Set` opens a dimmed warm-white modal. `Cancel` is the default
focus; `ESC` cancels and `ENTER` applies after the user has moved focus to
Apply.
72% 进度条说明:
* 扫描是区间遍历
* 用户知道系统状态
* 避免“卡住”误解
这提升了工程可用性。
---
## 5️⃣ 扫描控制(STOP / AUTO
* STOP:终止扫描
* AUTO:自动选择最佳信道
这意味着:
这个页面已经从“只读显示器”
变成了
“频段管理工具”。
---
# 二、这个界面在系统层面的意义
在 Trail-Mate 架构里,这个页面完成的是:
### 🛰 频谱态势感知(RF Situational Awareness
它回答:
* 现在这个频段干净吗?
* 是否有强占用?
* 我的 LoRa 该选哪个频点?
* 是否存在持续干扰源?
它是一个“战术前侦查页面”。
---
# 三、它属于什么级别的功能?
不是:
* ❌ 频谱仪
* ❌ SDR 分析工具
而是:
* ✅ 信道规划工具
* ✅ 干扰检测工具
* ✅ 频段健康监测器
* ✅ 自动选频前置模块
---
# 四、从用户视角来看
这个界面完成的是:
> “在野外部署前,快速检查当前 Sub-GHz 频段是否适合通信。”
这对于:
* LoRa mesh
* FSK 语音
* APRS
* 临时战术部署
都非常实用。
---
# 五、它的核心能力总结
这个 UI 实现了:
| 能力 | 是否实现 |
| ------------- | ---- |
| 频段扫描 | ✅ |
| 功率可视化 | ✅ |
| 精确频点读取 | ✅ |
| 最佳信道推荐 | ✅ |
| 扫描控制 | ✅ |
| LoRa CAD 状态展示 | ✅ |
下面按“你这个界面对应的能力”把**算法 + 功能实现方案**讲清楚,目标是:用 SX1262 在 MCU 上做一个**可用的能量扫描/信道选择器**(不是 FFT 频谱仪)。
---
## 1) 总体架构
**输入**:频段范围(f_start, f_end)、步进(step)、每点采样时长(dwell)、采样次数(N)
**输出**:每个频点的能量值(RSSI/ED)、噪声底(noise floor)、最佳频点(best channel)、峰值/干扰标记、扫描进度
数据流:
1. 扫频采样 → 得到 `rssi[f_i]`
2. 估计噪声底 → 得到 `noise_floor`
3. 计算评分/选优 → 得到 `best_freq`
4. UI 渲染:柱状图、cursor、RSSI/NOISE/BEST、进度
---
## 2) 扫频采样算法(核心)
### 2.1 频点序列
把频率离散化:
* `bins = floor((f_end - f_start)/step) + 1`
* `f_i = f_start + i * step`
**步进怎么选(工程上)**
* 想“看干扰哪里高”:`step = 25 kHz``50 kHz` 足够
* 想“粗扫很快”:`step = 100 kHz`
* 如果你 LoRa 频道带宽是 125 kHz,你用 25 kHz 扫描能更精细地看占用“峰”的位置(但更慢)
### 2.2 每个频点怎么测“能量”
SX1262 拿不到 IQ,所以只能用“能量指标”。最常见是 **Instant RSSI** 或类似 ED 指标(取决于你用的库/驱动暴露的命令)。
每个频点做:
1. `SetRfFrequency(f_i)`
2. 进入 RX(可以是 LoRa RX 或 FSK RX,关键是能读到 RSSI
3. 等待 **settle**(本振/AGC 稳定):`t_settle ≈ 1~3 ms`
4. 采样 N 次瞬时 RSSI:每次间隔 `t_gap ≈ 1~2 ms`
5. 得到该频点值 `P_i`
**P_i 不要直接用平均值(会被突发信号骗)**
推荐三种稳健聚合方式:
* **median(中位数)**:抗突发、抗偶发尖峰(推荐默认)
* **trimmed mean(去头去尾均值)**:丢掉最高/最低各 10~20%
* **EMA(指数滑动均值)**:适合连续扫描实时更新
> 我建议默认:`P_i = median(rssi_samples)`
### 2.3 扫描速度估算(让 UI 不卡)
总时间大约:
`T ≈ bins * (t_settle + N*(t_gap + t_read))`
例如:
* 频段宽 1.74 MHz433.050434.790
* step=25 kHz → bins≈70
* t_settle=2ms, N=6, t_gap=1ms
→ 单 bin ~ 2 + 6*(1+读寄存器开销) ≈ 10ms
→ 总计 ~ 700ms(很好用)
---
## 3) 噪声底(NOISE)如何估计
你界面右侧有 `NOISE -104 dBm`,这不是芯片“真噪声”,而是你对扫描数据的统计估计。
### 3.1 推荐方法:分位数/中位数 + 偏置
因为频段里可能有很多峰,直接平均会被抬高。
* `noise_floor = percentile(P, 20%)``median(P)`
* 然后再做一个轻微平滑:`noise = 0.7*noise + 0.3*noise_floor`(跨帧稳定)
### 3.2 为什么用 20% 分位数
* 频段里如果有少数强信号,它们只占少量 bins
* 20% 分位数更接近“底噪水平”
* 你要的是“哪里比底噪高”,不是绝对精密测量
---
## 4) 峰值/干扰标记(柱子变红)
UI 中红柱代表“干扰/占用较强”。规则建议:
* `threshold = noise + margin`
* margin 典型:`6 dB ~ 12 dB`(看你希望多敏感)
*`P_i > threshold` → 标红(Warn
*`P_i > threshold + 10 dB` → 可以加一个“尖峰标记”(小三角)
为了避免抖动,给红柱加**滞回**
* 进入红色:`P_i > noise + 10 dB`
* 退出红色:`P_i < noise + 7 dB`
---
## 5) CURSOR(指针)怎么实现
Cursor 有两种交互模式:
### 5.1 自动跟随(扫描中)
* cursor_index = 当前正在采样的 bin
* UI 每采完一个 bin,就移动光标竖线
### 5.2 手动浏览(扫描结束/暂停)
* 按键左右移动 cursor_index
* 右侧显示 `freq[cursor]``P_cursor``noise`
光标竖线 + 底部小三角只是渲染层,数据来自数组即可。
---
## 6) BEST(最佳信道)如何选
你要的是“最干净、最适合通信”的频点。简单选最小 RSSI 不够,因为:
* 单点最低可能是偶然低谷
* LoRa/FSK 发射占带宽,不是一个点
### 6.1 “带宽窗口”评分(推荐)
设通信带宽 `BW`(例如 125k),换算成需要覆盖的 bin 数:
* `k = ceil(BW / step)`
* 对每个中心 bin i,计算窗口内的“最坏情况”:
* `score_i = max(P[i - k/2 ... i + k/2])`
* 选择 score 最小的 i 作为 best
这会避免选到“旁边有大峰”的位置。
### 6.2 加上保护间隔(guard
LoRa 频偏/温漂/邻道干扰都存在,可以再加 guard,例如 ±1~2 个 bin 也纳入窗口。
---
## 7) SNR +12 怎么来?
在你这个“能量扫描”场景里,SNR 是**估算值**:
* `snr_est = noise - P_best` (注意 dBm 越小越弱,所以符号要小心)
更直观写法:
* `snr_est = (P_best - noise)`,如果 P_best 比 noise 高就是负数;但你 UI 里显示 +12,代表你希望“越干净越大”。
所以建议定义为:
* `cleanliness = noise - P_best`(越大越干净)
* 显示:`SNR +cleanliness`
例如:noise=-104, best=-116 → cleanliness=12 → `SNR +12`(符合 UI
---
## 8) CADLoRa preamble 检测)怎么融合
CAD 不是全频谱扫描,它是“在某个频点上检测是否存在 LoRa 前导码”。
你 UI 顶部的 `CAD` 可以这样实现:
* 当用户开启 CAD
* 每次扫描到某个 bin,如果你关心该点是否有 LoRa,执行一次 CAD
* 得到 `cad_detected`(布尔)
* 如果 detected:给该 bin 做一个“蓝色小点/标记”,或者让状态灯闪一下
但要注意:**CAD 会增加耗时**,所以策略上可以:
* 只对“疑似忙碌”的 binsP_i > noise+X)做 CAD
* 或者扫描完成后,对 best 候选点做 CAD 复核
---
## 9) 进度条与 STOP/AUTO 行为
### 9.1 进度条
* `progress = scanned_bins / bins`
* UI 每完成一个 bin 更新一次(不要每次采样更新,UI 会抖)
### 9.2 STOP
* 设置一个 `scan_abort` 标志
* 每个 bin 结束检查一次,立即退出
* UI 状态切换到“冻结显示 + 可移动 cursor”
### 9.3 AUTO
* 触发 best 计算
* 并把无线模块的工作频点切换到 best
* (可选)保存到配置:让下一次上电沿用
---
## 10) 如果你要更“专业”的两点增强
### A) 动态中心频率校准(你之前提过)
如果你担心频偏/温漂导致“峰”位置漂:
* 在每个 bin 的 dwell 中,取前 2ms 的样本作为快速估计
* 用它对后续样本做轻微校正(本质是稳定统计,不是真频偏补偿)
更实际的做法:**只做 UI 平滑**,别做“频率校准”的强承诺。
### B) 多帧叠加(历史底噪)
维护 `P_i_hist` 的 EMA
* `P_i = 0.6*P_i + 0.4*P_i_prev`
这样界面更稳,像“仪表”而不是“闪动的噪声”。
---
## 11) 你最终会得到什么?
* 一个频段扫描器(几十~几百 ms 出结果)
* 可视化占用峰(红柱)
* 可读的底噪估计(NOISE
* 可行动的推荐频点(BEST + 清洁度)
* 可选的 LoRa CAD 复核
* 并能一键 AUTO 切换工作信道
The page has no RSSI graph, CAD badge, noise estimate, quietest-channel score,
or AUTO action. Those measurements cannot establish protocol-channel presence.
+76 -137
View File
@@ -1,156 +1,95 @@
## 1) 关键可读性规则(针对 ~227PPI)
# Packet Probe Pager UI
### 字号策略
## Visual Language
* **标题/关键频点**:18–20 px(不要再小)
* **常规信息**1416 px
* **弱信息/单位/标签**:12–13 px(底线,不再小)
* 数字(频率/RSSI)尽量用 **等宽字体** 或数字等宽特性(否则跳动)
Packet Probe follows the current Map page language rather than the former
Energy Sweep dashboard language.
### 线宽与柱宽(高 PPI 必须加粗)
| Token | Value | Use |
| --- | --- | --- |
| Work surface | `#FFF3DF` | Full screen beneath the top bar |
| Keycap surface | `#F8E6C3` | Bottom-bar controls and result rows |
| Divider | `#B3915D` | Result-row and keycap borders |
| Primary text | `#593D1C` | Labels and frequency values |
| Secondary text | `#846A42` | Parameter details and progress |
| Amber | `#EBA341` | Selected result and Apply action |
| Blue | `#315F91` | Listening state and selected frequency |
| Green | `#397046` | Evidence count and applied confirmation |
* 面板边框:**2 px**(不要 1px
* 网格线:1 px(但降低不透明度)
* 光标竖线:**2 px**
* 柱状条:**4 px 宽**(间隔 2 px),否则会变成“毛刺”
No page-level floating cards are used. Result rows are interactive repeated
items; the rest of the screen remains a continuous work surface.
### 点击/触控命中(如果是触控)
## 480x222 Layout
* 最小按钮高度:**28 px**
* 按钮内边距:左右 10 px
* 两个按钮并排比两行更合适(不挤信息)
```
0,0 +------------------------------------------------+
| < PACKET PROBE battery |
30 +------------------------------------------------+
| OBSERVED PARAMETERS |
| LISTENING 12/70 PASS 1 |
| [433.550 MHz BW250 SF11 CR4/5 x12] |
| [433.775 MHz BW250 SF11 CR4/5 x03] |
| 12/70 PROFILES 2 OBSERVED |
198 +------------------------------------------------+
| UP/DN SELECT | ENTER SET | S STOP | ESC BACK |
222 +------------------------------------------------+
```
---
- Top bar: 30 px, supplied by the shared top-bar component.
- Work area: `y=30..198`, 10 px outer margin, one full-width list surface.
There is no selected-profile detail column, so the same layout remains
readable on T-Deck-class narrow displays.
- Bottom bar: 24 px, using the Map control-bar keycap treatment.
- Pager result rows: 24 px high, 3 px gap, up to four visible rows. `UP/DN`
automatically moves the four-row window when the selection crosses a page
boundary, so every observed profile remains visible and selectable.
## 2) 画布与全局 Token(不变)
## Content Rules
* Screen**480(w) × 222(h)**
* BG`WarmBG #F6E6C6`
* Panel`PanelBG #FAF0D8`
* Line`#E7C98F`(边框/分隔线)
* Text`#6B4A1E`
* TextDim`#8A6A3A`
* Amber`#EBA341`
* AmberDark`#C98118`
* Warn/Ok/Info`#B94A2C / #3E7D3E / #2D6FB6`
The full-width result list shows only real observations:
---
- The main line is the center frequency.
- The secondary line is bandwidth, SF, and CR.
- The right-aligned `xN` value is the number of evidence packets.
## 3) 新的布局(更适合 2.33":信息更少、更大、更“扫一眼就懂”)
The selected row is the only selection-state presentation. It is amber and
keeps the same frequency, air parameters, and right-aligned evidence count as
every other row. The page does not repeat selected details, RSSI metadata, or
business-packet labels elsewhere. After an apply, the status line changes to
`APPLIED TO MESH`.
### A) Topbar(更薄,但字更大)
Empty state text is factual: `NO OBSERVED PROFILES` before scanning and `NO
VALIDATED PACKETS` while a pass is in progress. It does not claim the candidate
space is empty.
* **Topbar 高度:28 px**(比 30 稍省空间)
* 区域:x=0,y=0,w=480,h=28
* 背景:PanelBG
* 底分隔线:2pxLine
## Keyboard And Touch Interaction
**Topbar 内容**
| Input | Action |
| --- | --- |
| `UP` / `DOWN` | Select an observed profile |
| `ENTER` | Open the apply confirmation for the selected profile |
| `S` | Start or stop the probe |
| `ESC` / Back | Close the dialog or leave the page |
| Tap/click a result row | Select that profile |
| Tap/click bottom `SET` or `START/STOP` | Same action as the matching key |
* 左:`SUB-GHz SCAN`,字号 **18**Text
* 右:两个状态标签(文字 13TextDim / Info
The bottom bar reflects the active state by displaying `S START` before a
probe starts and `S STOP` while it owns the radio.
* `RSSI`(默认 TextDim;工作中用 AmberDark
* `CAD`(开启时 Info
## Confirmation Overlay
> 高 PPI 下,Topbar 文字 18 才“像标题”。
Applying a result is intentionally not a one-key operation.
---
### B) 主区(28 以下的 194 px 高度)
主区 y=28h=194,左右分栏:
* **左侧频谱面板:w=332**
* **右侧信息面板:w=480-12-10-12-332 = 114**(更窄,但我们减少字段 + 放大关键数)
外边距:12,栏间距:10。
---
## 4) 左侧:频谱面板(重点:图更清晰)
* Panelx=12,y=40,w=332,h=170
* 边框:2px Line
* 内边距:10
### 左面板内部
#### 1) Plot 区
* x=22,y=50,w=312,h=118
* 网格线:每 26px 一条横线(1pxLineOPA 50
* 柱:4px 宽,2px 间距
* 正常柱:Amber
* 超阈值柱:Warn
* 光标竖线:2pxInfo
* 光标底部小三角:Info(更容易定位)
#### 2) 底部频率刻度条(更“可读”)
* x=22,y=172,w=312,h=28
* 左:起始频率(14pxText
* 中:`STEP 25k`12pxTextDim
* 右:终止频率(14pxText
> 刻度条高度提升到 28,是为了让 12–14px 字在 2.33" 上不拥挤。
---
## 5) 右侧:信息面板(只保留“对操作有用”的字段)
* Panelx=354,y=40,w=114,h=170
* 边框:2px Line
* 内边距:8
### 右面板内容(从上到下,强层级)
1. **CURSOR 频点(最大)**
* `433.550`:字号 **20**Text
* `MHz`:字号 12,TextDim(贴右上或紧跟)
2. **RSSI(第二层级)**
* `-92 dBm`:字号 **18**Text(超阈值改 Warn
3. **BEST(建议频点)**
* `434.125`:字号 **16**Ok
* 下方小字:`SNR +12`12TextDim
4. **进度条 + 百分比(底部)**
* 进度条:h=12,边框 2px Line
* 填充:AmberDark
* 右侧 `72%`12TextDim
5. **按钮(并排,单行)**
* y = 面板底部 - 28 - 8
* 两个按钮各 w= (114-8-6)/2 ≈ 50
* h=28(触控/可读都够)
* `STOP/SCAN`:底 Amber(扫描中 STOP 用 Warn
* `AUTO`:边框 Info(开启时),默认 Line
> 右侧很窄,所以**把单位、标签都做小字**,把数字做大字,扫一眼就懂。
---
## 6) 你上一张效果图里“不符合高 PPI 的点”我已经修了
* 1px 边框会显“发虚” → 全部改 2px
* 柱太细会像噪点 → 柱宽 4px + 间距 2px
* 信息太多会挤小字 → 右侧只保留 Cursor/RSSI/Best/Progress
* 按钮做大但不占两行 → 并排一行
---
## 7) LVGL 实现提示(不写代码,只说关键参数)
* Panel border width2
* 字体:Title 18 / Big number 20 / Mid 1618 / Small 1213
* 网格线:Line + opa 50
* 柱:用 canvas 或 chart,自绘柱子更可控(4px 宽)
```
+----------------------------+
| APPLY OBSERVED PROFILE? |
| 433.550 MHz |
| BW 250k SF11 CR4/5 |
| [ESC CANCEL] [ENTER APPLY] |
+----------------------------+
```
The full-screen scrim is warm dark brown at 50 percent opacity. The modal is
warm white with a 2 px amber border and 8 px radius, matching the existing
tracker confirmation treatment. `Cancel` owns initial focus. Arrow left/right
moves between the two actions; Enter applies only after Apply is focused.
@@ -1,5 +1,6 @@
#pragma once
#include <cstddef>
#include <cstdint>
#include "platform/ui/capability_status.h"
@@ -18,10 +19,20 @@ struct ReceiveConfig
uint8_t crc_len = 2;
};
/// Metadata for one CRC-accepted LoRa packet copied into caller-owned storage.
/// `poll_received_packet()` never fabricates packets on simulator targets.
struct ReceivedPacket
{
std::size_t size = 0;
float rssi_dbm = 0.0f;
float snr_db = 0.0f;
};
bool is_supported();
bool acquire();
bool is_online();
bool configure_receive(float freq_mhz, const ReceiveConfig& config);
bool poll_received_packet(uint8_t* buffer, std::size_t capacity, ReceivedPacket* out_packet);
float read_instant_rssi();
void release();
@@ -16,7 +16,7 @@ void build_page_manifest(ScreenRegistry& out)
(void)out.add({ScreenId::Gps, "GPS", true});
(void)out.add({ScreenId::Team, "Team", true});
(void)out.add({ScreenId::Tracker, "Tracker", true});
(void)out.add({ScreenId::EnergySweep, "Energy Sweep", true});
(void)out.add({ScreenId::EnergySweep, "Packet Probe", true});
(void)out.add({ScreenId::WalkieTalkie, "Walkie", true});
(void)out.add({ScreenId::Sstv, "SSTV", true});
(void)out.add({ScreenId::Extensions, "Extensions", true});
@@ -51,7 +51,7 @@ void UConsoleDesktopUxPack::buildScreens(ScreenRegistry& out) const
(void)out.add({ScreenId::Gps, "GPS", true});
(void)out.add({ScreenId::Team, "Team", true});
(void)out.add({ScreenId::Tracker, "Tracker", true});
(void)out.add({ScreenId::EnergySweep, "Energy Sweep", true});
(void)out.add({ScreenId::EnergySweep, "Packet Probe", true});
(void)out.add({ScreenId::WalkieTalkie, "Walkie", true});
(void)out.add({ScreenId::Sstv, "SSTV", true});
(void)out.add({ScreenId::Extensions, "Extensions", true});
@@ -1,6 +1,6 @@
/**
* @file energy_sweep_page_shell.h
* @brief Shared Energy Sweep page shell entrypoints
* @brief Shared Packet Probe page shell entrypoints
*/
#pragma once
@@ -65,7 +65,7 @@ extern "C"
extern const lv_image_dsc_t gps_icon;
extern const lv_image_dsc_t Satellite;
extern const lv_image_dsc_t contact;
extern const lv_image_dsc_t Spectrum;
extern const lv_image_dsc_t radar;
#if !defined(GAT562_NO_TEAM) || !GAT562_NO_TEAM
extern const lv_image_dsc_t team_icon;
#endif
@@ -113,7 +113,7 @@ ui::CallbackAppScreen s_contacts_app("contacts", "Contacts", &contact,
contacts::ui::shell::enter,
contacts::ui::shell::exit,
&s_menu_host);
ui::CallbackAppScreen s_energy_sweep_app("energy_sweep", "Energy Sweep", &Spectrum,
ui::CallbackAppScreen s_energy_sweep_app("energy_sweep", "Packet Probe", &radar,
energy_sweep::ui::shell::enter,
energy_sweep::ui::shell::exit,
&s_menu_host);
-165
View File
@@ -1,165 +0,0 @@
#ifdef __has_include
#if __has_include("lvgl.h")
#ifndef LV_LVGL_H_INCLUDE_SIMPLE
#define LV_LVGL_H_INCLUDE_SIMPLE
#endif
#endif
#endif
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
#ifndef LV_ATTRIBUTE_IMAGE_SPECTRUM
#define LV_ATTRIBUTE_IMAGE_SPECTRUM
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMAGE_SPECTRUM uint8_t Spectrum_map[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xe5, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xfd, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xe4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfd, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xe3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xa3, 0xfc, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xe4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x84, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0x84, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0x22, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7d, 0xff, 0xff, 0xff, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7d, 0xf1, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x86, 0xff, 0xff, 0xff, 0x15, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xa6, 0xf1, 0xd4, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xd3, 0xff, 0x9e, 0xc8, 0xff, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xf4, 0x36, 0x00, 0x00, 0x93, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xfe, 0x61, 0x00, 0x00, 0x00, 0x02, 0xd7, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xf3, 0xf8, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xe8, 0xff, 0xe4, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xe7, 0xfd, 0xdc, 0xdc, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xe8, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf9, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7c, 0xff, 0x93, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0xe2, 0xcf, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x95, 0xf4, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x9c, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xff, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xef, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xff, 0x43, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf5, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0xff, 0x17, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xec, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xe5, 0x93, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0x1e, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xff, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x98, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xe6, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xff, 0x34, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xe2, 0xe4, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xe4, 0x15, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe0, 0xed, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xd6, 0x60, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xf3, 0xeb, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xe7, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xff, 0xc1, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xfd, 0xc3, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xc9, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xee, 0x90, 0xf5, 0xd3, 0x7c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x1d, 0x95, 0xff, 0xd8, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x09, 0x5c, 0xb1, 0xf1, 0xed, 0xbf, 0x8e, 0x73, 0x5e, 0x46, 0x40, 0x86, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf6, 0x45, 0xa7, 0xff, 0xe4, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x5b, 0x8e, 0xbb, 0xd7, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfb, 0xff, 0xbe, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xf7, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xed, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x16, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7d, 0xff, 0xff, 0xff, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7d, 0xf1, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x86, 0xff, 0xff, 0xff, 0x15, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x49, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x3b, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const lv_image_dsc_t Spectrum = {
.header.magic = LV_IMAGE_HEADER_MAGIC,
.header.cf = LV_COLOR_FORMAT_RGB565A8,
.header.flags = 0,
.header.w = 64,
.header.h = 64,
.header.stride = 128,
.data_size = sizeof(Spectrum_map),
.data = Spectrum_map,
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -6,7 +6,7 @@
namespace
{
auto s_placeholder_state = ::ui::page_shell_fallback::make_unavailable_state("Energy Sweep", "Energy Sweep is unavailable on this target.");
auto s_placeholder_state = ::ui::page_shell_fallback::make_unavailable_state("Packet Probe", "Packet Probe is unavailable on this target.");
} // namespace
@@ -2,6 +2,10 @@
#include <limits>
#if defined(ARDUINO)
#include <RadioLib.h>
#endif
#include "app/app_facade_access.h"
#include "board/LoraBoard.h"
#include "platform/esp/arduino_common/exclusive_lora_runtime.h"
@@ -17,6 +21,17 @@ using Session = ::platform::esp::arduino_common::exclusive_lora_runtime::Session
Session s_session{};
LoraBoard* s_lora = nullptr;
constexpr uint32_t radio_rx_done_mask()
{
#if defined(ARDUINO_LILYGO_LORA_LR1121) && defined(RADIOLIB_LR11X0_IRQ_RX_DONE)
return RADIOLIB_LR11X0_IRQ_RX_DONE;
#elif defined(RADIOLIB_SX126X_IRQ_RX_DONE)
return RADIOLIB_SX126X_IRQ_RX_DONE;
#else
return 0x0002u;
#endif
}
} // namespace
bool is_supported()
@@ -64,6 +79,47 @@ float read_instant_rssi()
return s_lora ? s_lora->getRadioInstantRSSI() : std::numeric_limits<float>::quiet_NaN();
}
bool poll_received_packet(uint8_t* buffer, std::size_t capacity, ReceivedPacket* out_packet)
{
if (!s_lora || !buffer || capacity == 0 || !out_packet)
{
return false;
}
const uint32_t irq = s_lora->getRadioIrqFlags();
if ((irq & radio_rx_done_mask()) == 0u)
{
if (irq != 0u)
{
s_lora->clearRadioIrqFlags(irq);
(void)s_lora->startRadioReceive();
}
return false;
}
const int packet_size = s_lora->getRadioPacketLength(true);
const bool packet_fits = packet_size > 0 &&
static_cast<std::size_t>(packet_size) <= capacity;
const int read_state = packet_fits
? s_lora->readRadioData(buffer, static_cast<std::size_t>(packet_size))
: -1;
const float rssi_dbm = packet_fits ? s_lora->getRadioRSSI() : 0.0f;
const float snr_db = packet_fits ? s_lora->getRadioSNR() : 0.0f;
s_lora->clearRadioIrqFlags(irq);
(void)s_lora->startRadioReceive();
if (!packet_fits || read_state != 0)
{
return false;
}
out_packet->size = static_cast<std::size_t>(packet_size);
out_packet->rssi_dbm = rssi_dbm;
out_packet->snr_db = snr_db;
return true;
}
void release()
{
if (!s_session.lora)
@@ -65,6 +65,47 @@ float read_instant_rssi()
return std::isfinite(rssi) ? rssi : std::numeric_limits<float>::quiet_NaN();
}
bool poll_received_packet(uint8_t* buffer, std::size_t capacity, ReceivedPacket* out_packet)
{
constexpr uint32_t kIrqRxDone = 0x0002u;
if (!buffer || capacity == 0 || !out_packet || !radio().isOnline())
{
return false;
}
const uint32_t irq = radio().getIrqFlags();
if ((irq & kIrqRxDone) == 0u)
{
if (irq != 0u)
{
radio().clearIrqFlags(irq);
(void)radio().startReceive();
}
return false;
}
const int packet_size = radio().getPacketLength(true);
const bool packet_fits = packet_size > 0 &&
static_cast<std::size_t>(packet_size) <= capacity;
const int read_state = packet_fits
? radio().readPacket(buffer, static_cast<std::size_t>(packet_size))
: -1;
const float rssi_dbm = packet_fits ? radio().readRssi() : 0.0f;
radio().clearIrqFlags(irq);
(void)radio().startReceive();
if (!packet_fits || read_state != 0)
{
return false;
}
out_packet->size = static_cast<std::size_t>(packet_size);
out_packet->rssi_dbm = rssi_dbm;
out_packet->snr_db = std::numeric_limits<float>::quiet_NaN();
return true;
}
void release()
{
radio().release();
@@ -49,6 +49,7 @@ bool s_real_driver = false;
bool s_restore_config_valid = false;
::platform::linux_runtime::Sx126xLoRaConfig s_restore_config{};
std::string s_capability_message{};
::platform::linux_runtime::Sx126xPacket s_packet_scratch{};
bool env_flag_or_default(const char* name, bool fallback)
{
@@ -234,6 +235,28 @@ float read_instant_rssi()
return current_rssi_locked();
}
bool poll_received_packet(uint8_t* buffer, std::size_t capacity, ReceivedPacket* out_packet)
{
std::lock_guard<std::mutex> lock(s_mutex);
if (!s_acquired || !s_configured || !s_real_driver || !buffer || capacity == 0 ||
!out_packet)
{
return false;
}
if (!::platform::linux_runtime::Sx126xRadio::instance().pollReceive(&s_packet_scratch) ||
s_packet_scratch.size == 0 || s_packet_scratch.size > capacity)
{
return false;
}
std::memcpy(buffer, s_packet_scratch.data.data(), s_packet_scratch.size);
out_packet->size = s_packet_scratch.size;
out_packet->rssi_dbm = s_packet_scratch.rssi_dbm;
out_packet->snr_db = s_packet_scratch.snr_db;
return true;
}
void release()
{
std::lock_guard<std::mutex> lock(s_mutex);