Loading files
07e931b46This file is pinned to the selected release. Download the original to open it in your design tool.
// ═══════════════════════════════════════════════════════════
// PatternFlow - /audio-in console page (PROGMEM HTML)
// License: MIT
// ═══════════════════════════════════════════════════════════
// The page body below is generated from console/audio-in.html — edit that,
// then run: python firmware/toolchain/console_pages.py build
#pragma once
#include <Arduino.h>
static const char AUDIO_IN_INDEX_HTML[] PROGMEM = R"HTML(<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="/pf-console.js?h=d02b3322"></script><script>if(!window.PF)(function(){var W=window,U='/api/status',L=[],M=2e9,S,Z,P=W.PF={state:'live',dirty:!1,v:null,get:G,inflight:Number,hold:Object,say:function(t,k,e){e&&(e.textContent=t)},busy:function(b,p){function f(){b.disabled=!1}b.disabled=!0;p.then(f,f);return p},poll:function(s,m,c,o){var t,f,g=1;function R(){g&&!f&&(f=1,clearTimeout(t),(s.call?s():G(s)).then(function(d){c(d,null)},function(e){c(null,e)}).then(K,K))}function K(){f=0;clearTimeout(t);g&&(t=setTimeout(R,m))}o&&o.first===!1?K():R();return{stop:function(){g=0;clearTimeout(t)},set:function(n){m=n;f||K()},now:R}},status:function(c){c&&L.push(c);S?c&&c(S):Z?Z.now():Z=P.poll(U,M,D)},watchStatus:function(m){P.status();Z.set(M=Math.min(m,M))},waitForDevice:function(o){o=o||{};return new Promise(function(y,n){var h=P.poll(U,2e3,function(s){s&&!(o.build&&s.build==o.build)&&(h.stop(),y(s))});setTimeout(function(){h.stop();n(Error('timeout'))},o.timeout||9e4)})}};function G(u,o){return fetch(u,o).then(function(r){if(!r.ok)throw Error(r.status);return o&&o.text?r.text():r.json()})}function D(s){if(s){S=W.pfStatus=s;L.forEach(function(f){f(s)})}}})()</script>
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Patternflow - Mic mapping</title>
<!-- GENERATED by firmware/toolchain/build_audio_in_page.py from
tools/patternflow-audio-extension (editor 290e552456).
Edit the editor there, rerun the builder, then console_pages.py build. -->
<style>
/* Patternflow Audio — mapping editor. Same cream instrument palette as the
popup (popup.css is the source of these values). */
:root {
--cream: #f4efe6;
--cream-2: #ede7db;
--ink: #141414;
--muted: #6b655a;
--faint: #a69f90;
--rule: #d9d1c0;
--led: #e8552e;
--ok: #267a43;
--bad: #b43b2d;
--field: #fbf7ef;
--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
* { box-sizing: border-box; }
body {
margin: 0;
background: var(--cream);
color: var(--ink);
font: 12px/1.45 Inter, ui-sans-serif, system-ui, sans-serif;
}
.page {
max-width: 1280px;
margin: 0 auto;
padding: 24px;
display: flex;
flex-direction: column;
gap: 14px;
}
.mono { font-family: var(--mono); }
.dimText { color: var(--muted); }
.hint { font-size: 11px; color: var(--faint); }
.spacer { flex-grow: 1; }
/* ── header ── */
header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.brand { display: flex; align-items: center; gap: 9px; }
.led { width: 8px; height: 8px; background: var(--led); border-radius: 1px; }
.title { font-size: 14px; font-weight: 600; }
.kicker { font-family: var(--mono); font-size: 10px; letter-spacing: 0.09em; color: var(--muted); }
.cluster { display: flex; align-items: center; gap: 8px; }
.chip {
border: 1px solid var(--rule); border-radius: 2px; background: var(--field);
padding: 5px 10px; font-family: var(--mono); font-size: 11px; color: var(--ink);
}
.chip.dim { color: var(--muted); }
.okChip { border-color: var(--ok); color: var(--ok); }
.primaryBtn {
font: inherit; font-size: 12px; cursor: pointer;
border: 1px solid var(--ink); border-radius: 2px;
background: var(--ink); color: var(--cream); padding: 6px 14px;
}
.primaryBtn:disabled { opacity: 0.35; cursor: default; }
.ghostBtn {
font: inherit; font-size: 11px; cursor: pointer;
border: 1px solid var(--rule); border-radius: 2px;
background: var(--field); color: var(--muted); padding: 6px 12px;
}
.ghostBtn:hover { border-color: var(--led); color: var(--led); }
/* ── toolbar / toggles ── */
.toolbar { display: flex; align-items: center; gap: 10px; }
.damping { display: flex; align-items: center; gap: 8px; }
.damping input { width: 130px; accent-color: var(--led); }
.damping .mono { font-size: 11px; min-width: 56px; text-align: right; }
.toggleWrap {
font: inherit; cursor: pointer; display: flex; align-items: center; gap: 7px;
border: 1px solid var(--ink); border-radius: 2px; background: var(--field); padding: 5px 11px;
}
.toggleLabel { font-size: 11px; font-weight: 500; }
.toggle {
width: 22px; height: 12px; background: var(--rule); border-radius: 7px;
position: relative; display: inline-block; border: 0; cursor: pointer; padding: 0;
flex: none;
}
.toggle .dotK, .toggleWrap .dotK {
position: absolute; left: 1px; top: 1px; width: 10px; height: 10px;
background: var(--field); border-radius: 50%; transition: left 0.12s;
}
.toggleWrap .toggle { pointer-events: none; }
.toggleWrap.on .toggle { background: var(--ok); }
.toggleWrap.on .dotK { left: 11px; }
.toggle.small.on { background: var(--ok); }
.toggle.small.on .dotK { left: 11px; }
/* ── main plot ── */
.plotWrap {
position: relative; background: var(--field);
border: 1px solid var(--rule); border-radius: 2px;
}
#plot { display: block; cursor: default; touch-action: none; }
.tag {
position: absolute; display: flex; align-items: center; gap: 6px;
background: var(--cream-2); border: 1px solid var(--rule); border-radius: 2px;
padding: 2px 7px; pointer-events: none;
}
.tag.sel { border-color: var(--led); }
.tag.mutedTag { opacity: 0.55; }
.tagText { font-family: var(--mono); font-size: 10px; }
/* ── curve panel ── */
.panel {
display: flex; gap: 20px; background: var(--field);
border: 1px solid var(--rule); border-radius: 2px; padding: 16px 18px;
}
.col { display: flex; flex-direction: column; gap: 8px; }
.col.grow { flex-grow: 1; gap: 12px; }
.colKicker { font-family: var(--mono); font-size: 10px; letter-spacing: 0.09em; color: var(--muted); }
.vr { width: 1px; background: var(--rule); }
#curve { display: block; touch-action: none; }
.presetsCol { width: 268px; }
.presetGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.preset {
font: inherit; cursor: pointer;
display: flex; flex-direction: column; align-items: center; gap: 5px;
border: 1px solid var(--rule); border-radius: 2px; background: var(--cream);
padding: 9px 4px 7px;
}
.preset span { font-size: 10px; font-weight: 500; color: var(--ink); }
.preset.on { border-color: var(--led); }
.preset.on span { font-weight: 600; }
.stepsRow { display: flex; align-items: center; gap: 7px; font-size: 11px; color: var(--muted); }
.stepsRow[hidden] { display: none; }
.stepsRow button {
font: inherit; cursor: pointer; width: 18px; height: 18px; padding: 0; line-height: 1;
border: 1px solid var(--rule); border-radius: 2px; background: var(--cream); color: var(--ink);
}
/* ── settings column ── */
.bandHead { display: flex; align-items: baseline; gap: 8px; }
.bandName { font-size: 13px; font-weight: 600; white-space: nowrap; }
.field { display: flex; flex-direction: column; gap: 6px; }
.fieldRow { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.fieldLabel { font-size: 11px; color: var(--muted); }
.seg { display: flex; }
.knobBtn {
font: inherit; font-family: var(--mono); font-size: 11px; cursor: pointer;
border: 1px solid var(--rule); background: var(--cream); color: var(--muted);
padding: 6px 14px; border-left-width: 0;
}
.knobBtn:first-child { border-left-width: 1px; border-radius: 2px 0 0 2px; }
.knobBtn:last-child { border-radius: 0 2px 2px 0; }
.knobBtn.on { border-color: var(--ink); background: var(--ink); color: var(--cream); }
.outTrack { position: relative; height: 18px; cursor: pointer; touch-action: none; }
.outRail { position: absolute; left: 4px; right: 4px; top: 8px; height: 2px; background: var(--rule); }
.outFill { position: absolute; top: 7.5px; height: 3px; background: var(--led); }
.outHandle {
position: absolute; top: 4px; width: 9px; height: 10px;
background: var(--field); border: 1px solid var(--ink);
}
/* ── footer chips ── */
.chips { display: flex; align-items: center; gap: 8px; }
.chipCard {
font: inherit; cursor: pointer;
display: flex; align-items: center; gap: 8px;
background: var(--field); border: 1px solid var(--rule); border-radius: 2px;
padding: 7px 12px;
}
.chipCard.sel { border-color: var(--led); }
.chipCard.mutedChip { opacity: 0.55; }
.chipDot { width: 6px; height: 6px; background: var(--led); border-radius: 1px; }
.chipCard .mono { font-size: 11px; }
.arrow { font-size: 10px; color: var(--faint); }
/* ── output presets + preview ── */
.outPresets { display: flex; gap: 6px; }
.outPreset {
font: inherit; font-size: 10px; cursor: pointer;
border: 1px solid var(--rule); border-radius: 2px;
background: var(--cream); color: var(--muted); padding: 3px 8px;
}
.outPreset:hover { border-color: var(--led); color: var(--led); }
.pvOverlay {
position: fixed; inset: 0; z-index: 50;
background: rgba(20, 20, 20, 0.45);
display: flex; align-items: center; justify-content: center;
}
.pvOverlay[hidden] { display: none; }
.pvCard {
background: var(--cream); border: 1px solid var(--ink); border-radius: 3px;
padding: 18px; display: flex; flex-direction: column; gap: 12px;
width: 640px; max-width: 94vw;
}
.pvHead { display: flex; justify-content: space-between; align-items: center; }
.pvChips { display: flex; gap: 8px; }
.pvSig {
font: inherit; font-size: 11px; cursor: pointer;
border: 1px solid var(--rule); border-radius: 2px;
background: var(--field); color: var(--ink); padding: 5px 11px;
}
.pvSig.on { border-color: var(--led); font-weight: 600; }
#pvScope { display: block; background: var(--field); border: 1px solid var(--rule); }
.pvLegend { display: flex; gap: 7px; align-items: center; }
.pvKeyIn, .pvKeyOut { width: 16px; height: 3px; display: inline-block; }
.pvKeyIn { background: var(--faint); }
.pvKeyOut { background: var(--led); }
/* ── console skin over the editor's cream tokens ── */
:root {
--cream: #0C0B09;
--cream-2: #1B1914;
--ink: #EDE7DB;
--muted: #8A8272;
--faint: #5A5546;
--rule: #242118;
--led: #FF5C2E;
--ok: #57B87F;
--bad: #FF6B5A;
--field: #131110;
}
/* The console's Light toggle stamps html[data-theme=light] and overrides the
CONSOLE-named variables (theme_index.h). The editor's two names of its own
need light values here or the plot field and tags stay dark in a light
page - which read as "the toggle does nothing". Canvas colors follow free:
editor.js reads these variables fresh on every paint. */
html[data-theme=light] {
--cream-2: #E8E2D6;
--field: #FFFCFA;
}
/* device host chip is meaningless when the page IS the device; the source
chip and Stop repeat what the device bar's Microphone switch and note say */
#hostChip, #sourceChip, #stopBtn { display: none; }
.deviceBar {
display: flex; align-items: center; gap: 14px;
background: var(--field); border: 1px solid var(--rule);
border-radius: 2px; padding: 10px 14px;
}
.toggleWrap.on .toggle { background: var(--ok); }
.barMsg { font: 11px var(--mono); }
#deviceNote:empty, .barMsg:empty { display: none; }
.pf-ok { color: var(--ok); }
.pf-err { color: var(--bad); }
/* The chrome says when the panel is unreachable; the page only dims what it
can no longer vouch for, and drops the "turn the microphone on" hint an
unanswered poll would otherwise show. */
html.pf-offline .plotWrap, html.pf-offline .deviceBar { opacity: 0.5; }
html.pf-offline #captureHint { visibility: hidden; }
/* Rows wrap before they overflow (the editor was laid out for a wide tab). */
.deviceBar, .toolbar, .pvChips, .outPresets, header { flex-wrap: wrap; }
#pvScope { max-width: 100%; height: auto !important; }
/* The highest band's tag hangs past a narrow plot's right edge: clip it
there rather than widen the page. */
.plotWrap { overflow: hidden; }
@media (max-width: 1000px) {
.panel { flex-wrap: wrap; }
.vr { display: none; }
.col.grow { flex-basis: 100%; }
}
/* Phones: one column. The bordered boxes run edge to edge, which is what
lets the response curve fit a 360 px screen: it is a fixed 356 px canvas
whose pointer maths assume that size, so it may not be scaled down. */
@media (max-width: 700px) {
.page { padding: 12px 12px 24px; gap: 12px; }
.deviceBar, .plotWrap, .panel {
margin: 0 -12px; border-left: 0; border-right: 0; border-radius: 0;
}
.deviceBar { padding: 12px; gap: 10px 12px; }
.toolbar { gap: 10px 12px; }
.deviceBar .damping, .toolbar .damping, #deviceNote, .barMsg, #autoHint { flex-basis: 100%; }
.damping input { flex: 1; width: auto; min-width: 0; }
.toolbar .spacer, #autoHint:empty { display: none; }
.panel { flex-direction: column; gap: 18px; padding: 14px 12px; }
.presetsCol { width: auto; }
#curve { margin: 0 -12px; align-self: center; }
.chips { display: grid; grid-template-columns: 1fr 1fr; }
}
/* Touch: hit areas grow invisibly; the controls keep their size. */
@media (pointer: coarse) {
.toggleWrap, .ghostBtn, .pvSig, .chipCard, .outPreset, .stepsRow button { position: relative; }
.toggleWrap::after, .ghostBtn::after, .pvSig::after, .chipCard::after, .outPreset::after,
.stepsRow button::after, .outTrack::after, .toggle.small::after {
content: ""; position: absolute; inset: -8px -2px;
}
.toggle.small::after { inset: -16px -11px; }
}
</style>
</head>
<body>
<div class="page">
<header>
<div class="brand">
<span class="led"></span>
<span class="title">Patternflow Audio</span>
<span class="kicker">MAPPING</span>
</div>
<div class="cluster">
<span id="captureHint" class="hint"></span>
<span id="sourceChip" class="chip">idle</span>
<span id="hostChip" class="chip dim">patternflow.local:81</span>
<button id="stopBtn" class="primaryBtn" disabled>Stop</button>
</div>
</header>
<div class="deviceBar">
<button id="audToggle" class="toggleWrap" type="button" title="Enable browser tab and extension audio reaction (AUD)">
<span class="toggle"><span class="dotK"></span></span>
<span class="toggleLabel">Audio-React (AUD)</span>
</button>
<button id="micToggle" class="toggleWrap" type="button" title="Enable on-board microphone">
<span class="toggle"><span class="dotK"></span></span>
<span class="toggleLabel">Microphone</span>
</button>
<div class="damping">
<span class="fieldLabel">Input gain</span>
<input id="micGain" type="range" min="1" max="16" step="0.5">
<span id="micGainVal" class="mono dimText">8.0</span>
</div>
<span id="deviceNote" class="hint"></span>
<span id="barMsg" class="barMsg" role="status"></span>
<span class="spacer"></span>
<a id="extGuideLink" class="ghostBtn" href="https://github.com/engmung/Patternflow/tree/main/tools/patternflow-audio-extension#readme" target="_blank" rel="noopener" style="text-decoration:none;display:inline-flex;align-items:center;gap:4px" title="Install Chrome Audio Extension">Extension ↗</a>
<button id="resetAll" class="ghostBtn" type="button">Reset mapping</button>
</div>
<div class="toolbar">
<button id="autoToggle" class="toggleWrap" type="button">
<span class="toggle"><span class="dotK"></span></span>
<span class="toggleLabel">Auto range</span>
</button>
<span id="autoHint" class="hint"></span>
<span class="spacer"></span>
<div class="damping">
<span class="fieldLabel">Attack</span>
<input id="attack" type="range" min="0" max="1" step="0.01">
<span id="attackWord" class="mono dimText">quick</span>
</div>
<div class="damping">
<span class="fieldLabel">Damping</span>
<input id="damping" type="range" min="0" max="1" step="0.01">
<span id="dampingWord" class="mono dimText">balanced</span>
</div>
<button id="openPreview" class="ghostBtn" type="button"
title="Synthetic test signals through the selected band - see attack, damping and the curve move a knob">Preview</button>
</div>
<div id="plotWrap" class="plotWrap">
<canvas id="plot"></canvas>
<div class="tag" id="tag0"><span class="tagText">B1·K1</span><canvas></canvas></div>
<div class="tag" id="tag1"><span class="tagText">B2·K2</span><canvas></canvas></div>
<div class="tag" id="tag2"><span class="tagText">B3·K3</span><canvas></canvas></div>
<div class="tag" id="tag3"><span class="tagText">B4·K4</span><canvas></canvas></div>
</div>
<div class="panel">
<div class="col">
<span class="colKicker">RESPONSE</span>
<canvas id="curve"></canvas>
</div>
<div class="col presetsCol">
<span class="colKicker">CURVE</span>
<div class="presetGrid">
<button class="preset" data-p="smooth" type="button"><canvas></canvas><span>Smooth</span></button>
<button class="preset" data-p="sharp" type="button"><canvas></canvas><span>Sharp</span></button>
<button class="preset" data-p="fall" type="button"><canvas></canvas><span>Fall</span></button>
<button class="preset" data-p="gate" type="button"><canvas></canvas><span>Gate</span></button>
<button class="preset" data-p="steps" type="button"><canvas></canvas><span>Steps</span></button>
<button class="preset" data-p="arch" type="button"><canvas></canvas><span>Arch</span></button>
</div>
<div id="stepsRow" class="stepsRow" hidden>
<span>steps</span>
<button id="stepsMinus" type="button">−</button>
<span id="stepsN" class="mono">3</span>
<button id="stepsPlus" type="button">+</button>
</div>
<span id="legacyHint" class="hint">This band still runs its old boost curve — pick a preset to upgrade it.</span>
<span class="hint">Drag the two handles for a custom shape. Any curve saves as a 33-point table.</span>
</div>
<div class="vr"></div>
<div class="col grow">
<div class="bandHead">
<span id="bandName" class="bandName">Band 1</span>
<span id="bandMeta" class="mono dimText">62 – 375 Hz</span>
</div>
<div class="field">
<div class="fieldRow">
<span class="fieldLabel">Output range</span>
<span id="outLabel" class="mono">0.30 – 0.85</span>
</div>
<div id="outTrack" class="outTrack">
<div class="outRail"></div>
<div id="outFill" class="outFill"></div>
<div id="outLo" class="outHandle"></div>
<div id="outHi" class="outHandle"></div>
</div>
<div class="outPresets">
<button class="outPreset" type="button" data-lo="0" data-hi="1">0–1</button>
<button class="outPreset" type="button" data-lo="0" data-hi="0.5">0–.5</button>
<button class="outPreset" type="button" data-lo="0.5" data-hi="1">.5–1</button>
<button class="outPreset" type="button" data-lo="0.25" data-hi="0.75">.25–.75</button>
<button class="outPreset" type="button" data-lo="0.15" data-hi="0.6">.15–.6</button>
<button class="outPreset" type="button" data-lo="0.3" data-hi="0.85">.3–.85</button>
</div>
</div>
<div class="fieldRow">
<span class="fieldLabel">Mute band</span>
<button id="muteToggle" class="toggle small" type="button"><span class="dotK"></span></button>
</div>
<div class="spacer"></div>
<div class="fieldRow">
<button id="resetBand" class="ghostBtn" type="button">Reset band</button>
</div>
</div>
</div>
<!-- Preview: synthetic test signals through the SELECTED band's window,
curve and glide - what the knob will do, before any music plays. -->
<div id="pvOverlay" class="pvOverlay" hidden>
<div class="pvCard">
<div class="pvHead">
<span id="pvTitle" class="bandName">Preview — Band 1</span>
<button id="pvClose" class="ghostBtn" type="button">Close</button>
</div>
<div class="pvChips">
<button class="pvSig on" type="button" data-s="pulse">Kick pulses</button>
<button class="pvSig" type="button" data-s="noisy">Noisy room</button>
<button class="pvSig" type="button" data-s="swell">Slow swell</button>
</div>
<canvas id="pvScope"></canvas>
<div class="pvLegend">
<span class="pvKeyIn"></span><span class="hint">input level</span>
<span class="pvKeyOut"></span><span class="hint">knob output</span>
</div>
</div>
</div>
<div class="chips">
<button class="chipCard" id="chip0" type="button"><span class="chipDot"></span><span class="chipName mono">B1</span><span class="chipHz mono dimText">62–375</span><canvas></canvas></button>
<button class="chipCard" id="chip1" type="button"><span class="chipDot"></span><span class="chipName mono">B2</span><span class="chipHz mono dimText">250–2k</span><canvas></canvas></button>
<button class="chipCard" id="chip2" type="button"><span class="chipDot"></span><span class="chipName mono">B3</span><span class="chipHz mono dimText">2k–5k</span><canvas></canvas></button>
<button class="chipCard" id="chip3" type="button"><span class="chipDot"></span><span class="chipName mono">B4</span><span class="chipHz mono dimText">5k–16k</span><canvas></canvas></button>
</div>
</div>
<script>
// Console adapter: the same surface editor-adapter.js gives the extension,
// spoken over fetch('/api/audio-in'). Two extra jobs live here:
//
// - scale conversion. The firmware measures, gates and maps in LINEAR
// amplitude (every constant in core_audio_in_map.h was measured on that
// scale and stays); the editor's vertical axis is dB-normalized so boxes
// drag like hearing works. This file converts both ways at the boundary.
// DB_FLOOR/DB_SPAN are the calibration: quiet room should sit ~0.15 up
// the axis, listening-volume peaks ~0.9. Tweak here, no reflash.
//
// - the device bar. Microphone power and input gain exist only on this
// side; they talk to the same API directly.
(function () {
var DB_FLOOR = -45, DB_SPAN = 47;
function clamp01(v) { v = Number(v) || 0; return v < 0 ? 0 : v > 1 ? 1 : v; }
function dbn(x) { return clamp01((20 * Math.log10(Math.max(Number(x) || 0, 1e-4)) - DB_FLOOR) / DB_SPAN); }
function lin(v) { return Math.pow(10, (clamp01(v) * DB_SPAN + DB_FLOOR) / 20); }
var PRESET_CURVES = {
smooth: { type: 'bezier', id: 'smooth', y0: 0, y1: 1, p1x: 0.45, p1y: 0.05, p2x: 0.55, p2y: 0.95 },
sharp: { type: 'bezier', id: 'sharp', y0: 0, y1: 1, p1x: 0.10, p1y: 0.65, p2x: 0.35, p2y: 1.00 },
fall: { type: 'bezier', id: 'fall', y0: 1, y1: 0, p1x: 0.45, p1y: 0.95, p2x: 0.55, p2y: 0.05 }
};
function encodeMeta(curve) {
if (!curve) return '';
if (curve.type === 'steps') return 's:' + curve.n;
if (curve.type === 'arch') return 'a';
if (curve.type === 'bezier') {
if (curve.id && PRESET_CURVES[curve.id]) return 'p:' + curve.id;
return 'b:' + [curve.y0, curve.y1, curve.p1x, curve.p1y, curve.p2x, curve.p2y]
.map(function (v) { return Math.round(clamp01(v) * 100); }).join(',');
}
return '';
}
function decodeMeta(m) {
if (!m) return null;
if (m === 'a') return { type: 'arch', id: 'arch' };
if (m.slice(0, 2) === 's:') {
var n = Math.max(2, Math.min(8, parseInt(m.slice(2), 10) || 2));
return { type: 'steps', id: n === 2 ? 'gate' : 'steps', n: n };
}
if (m.slice(0, 2) === 'p:') {
var p = PRESET_CURVES[m.slice(2)];
return p ? JSON.parse(JSON.stringify(p)) : null;
}
if (m.slice(0, 2) === 'b:') {
var q = m.slice(2).split(',').map(function (v) { return (parseInt(v, 10) || 0) / 100; });
if (q.length !== 6) return null;
return { type: 'bezier', id: 'custom', y0: q[0], y1: q[1], p1x: q[2], p1y: q[3], p2x: q[4], p2y: q[5] };
}
return null;
}
var frameFn = null;
var micOn = false;
var phoneLive = false;
var audOn = false;
// The levels loop keeps its own chained 100 ms timer instead of PF.poll:
// ten frames a second is this page's whole job, and the chrome's lane
// would queue it behind every status poll. It starts once the config read
// has settled (a frame before that paints on an unsized plot and races the
// read for the panel's one connection), sleeps while the tab is hidden and
// stops on pagehide.
var ready = false, gone = false, busy = false, timer = 0;
function tick() {
clearTimeout(timer);
timer = 0;
if (!ready || !frameFn || gone || busy || document.hidden) return;
busy = true;
var wait = 100;
fetch('/api/audio-in?levels=1').then(function (r) { return r.json(); }).then(function (j) {
// ext frames come from the phone app, already on the editor's own
// normalized scale - converting them again would wreck them. The
// device's mic values are linear and get the dB treatment.
var ext = j.ext === true;
micOn = !ext && j.source !== 'off';
phoneLive = ext;
syncBar();
window.PFAdapter.labels.live = ext ? 'live · phone' : 'live · microphone';
var conv = ext ? function (v) { return v; } : dbn;
if (frameFn) frameFn({
running: ext || micOn,
connected: ext || micOn,
levels: (j.levels || []).map(conv),
outputs: j.outputs || [],
env: (j.env || []).map(function (e) { return { lo: conv(e.lo), hi: conv(e.hi) }; }),
spectrum: (j.spectrum || []).map(conv),
autoRange: true
});
}).catch(function (e) {
// AbortError is the chrome freeing the connection for a link just
// clicked (or pagehide); asking again in 100 ms would take it back
// from the next page. Still here in 3 s: the navigation was cancelled.
if (e && e.name === 'AbortError') { wait = 3000; return; }
// Unreachable: ask once a second, not ten times (the chrome shows it).
wait = 1000;
if (frameFn) frameFn({ running: false, connected: false, levels: [], env: [], spectrum: [] });
}).then(function () {
// Chained, never setInterval: the device serves one connection at a
// time, and a timer would stack requests behind a slow one.
busy = false;
if (!gone && !timer) timer = setTimeout(tick, wait);
});
}
function start() { if (!ready) { ready = true; tick(); } }
document.addEventListener('visibilitychange', function () { if (!timer) tick(); });
window.addEventListener('pagehide', function () { gone = true; clearTimeout(timer); timer = 0; });
window.addEventListener('pageshow', function () { if (gone) { gone = false; tick(); } });
// Every edit autosaves; PF.dirty covers the gap until the panel has it,
// so the chrome's version reload never drops one. A failure is said next
// to the device bar (the editor itself has no slot for it).
var saving = 0, gainTimer = null;
function say(text, kind) { PF.say(text, kind, document.getElementById('barMsg')); }
function post(body) {
saving++;
PF.dirty = true;
return fetch('/api/audio-in', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: body
}).then(function (r) {
if (!r.ok) throw Error('HTTP ' + r.status);
if (document.getElementById('barMsg').textContent) say('saved', 'ok');
}).catch(function () {
say('not saved: the panel did not take it. Change it again to retry.', 'err');
}).then(function () {
if (!--saving && !gainTimer) PF.dirty = false;
});
}
window.PFAdapter = {
caps: function () { return { hzMin: 31.25, hzMax: 8000 }; },
labels: { live: 'live · microphone' },
captureHint: 'Turn the microphone on to hear the room.',
loadConfig: function () {
// Never reject: a failed read hands the editor its defaults and the
// page still stands - the levels loop keeps trying, and the next save
// writes the truth back. One request at a time: the config, then the
// AUD switch, then the loop.
return fetch('/api/audio-in').then(function (r) { return r.json(); }).then(function (j) {
micOn = !!j.micOn;
var gainEl = document.getElementById('micGain');
gainEl.value = String(j.micGain || 8);
document.getElementById('micGainVal').textContent = Number(j.micGain || 8).toFixed(1);
fetch('/api/audio').then(function (r) { return r.json(); }).then(function (a) {
audOn = !!a.audioRuntime;
syncBar();
}).catch(function () {}).then(start);
syncBar();
return {
host: 'this device',
smoothing: j.smoothing || 0.35,
attack: j.attack || 0.65,
autoRange: !!j.autoRange,
bands: (j.bands || []).map(function (b) {
return {
hzMin: b.hzMin, hzMax: b.hzMax,
inMin: dbn(b.inMin), inMax: dbn(b.inMax),
gain: b.gain, outMin: b.outMin, outMax: b.outMax,
knob: b.knob, muted: b.muted,
curve: decodeMeta(b.meta), lut: null
};
})
};
}).catch(function () { start(); return null; });
},
saveConfig: function (cfg) {
var parts = ['auto=' + (cfg.autoRange ? 1 : 0),
'smoothing=' + cfg.smoothing.toFixed(3),
'attack=' + cfg.attack.toFixed(3)];
cfg.bands.forEach(function (b, i) {
parts.push('hzMin' + i + '=' + b.hzMin.toFixed(1));
parts.push('hzMax' + i + '=' + b.hzMax.toFixed(1));
parts.push('inMin' + i + '=' + lin(b.inMin).toFixed(5));
parts.push('inMax' + i + '=' + lin(b.inMax).toFixed(5));
parts.push('gain' + i + '=' + b.gain.toFixed(3));
parts.push('outMin' + i + '=' + b.outMin.toFixed(3));
parts.push('outMax' + i + '=' + b.outMax.toFixed(3));
parts.push('knob' + i + '=' + b.knob);
parts.push('muted' + i + '=' + (b.muted ? 1 : 0));
parts.push('meta' + i + '=' + encodeURIComponent(encodeMeta(b.curve)));
if (Array.isArray(b.lut) && b.lut.length) {
parts.push('lut' + i + '=' + b.lut.map(function (v) {
return Math.round(clamp01(v) * 255);
}).join(','));
}
});
return post(parts.join('&'));
},
onFrame: function (fn) {
frameFn = fn;
tick();
},
requestStatus: function () {},
stop: function () { post('mic=0'); }
};
// ── the device bar ────────────────────────────────────────────────────
function syncBar() {
var audT = document.getElementById('audToggle');
if (audT) audT.classList.toggle('on', audOn);
var t = document.getElementById('micToggle');
if (t) t.classList.toggle('on', micOn);
var note = document.getElementById('deviceNote');
if (note) {
note.textContent = micOn ? ''
: phoneLive ? 'showing the phone app’s audio'
: 'microphone is off — the panel is not listening';
}
}
document.addEventListener('DOMContentLoaded', function () {
var audBtn = document.getElementById('audToggle');
if (audBtn) {
audBtn.addEventListener('click', function () {
var want = audOn = !audOn;
syncBar();
fetch('/api/audio', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: 'on=' + (want ? 1 : 0)
}).then(function (r) { if (!r.ok) throw Error('HTTP ' + r.status); }).catch(function () {
// Nothing re-reads this switch, so a lost request would leave it lying.
if (audOn === want) { audOn = !want; syncBar(); }
say('AUD did not switch: the panel did not take it.', 'err');
});
});
}
document.getElementById('micToggle').addEventListener('click', function () {
micOn = !micOn;
syncBar();
post('mic=' + (micOn ? 1 : 0));
});
document.getElementById('micGain').addEventListener('input', function () {
var v = Number(document.getElementById('micGain').value);
document.getElementById('micGainVal').textContent = v.toFixed(1);
PF.dirty = true;
clearTimeout(gainTimer);
gainTimer = setTimeout(function () { gainTimer = null; post('micGain=' + v); }, 150);
});
document.getElementById('resetAll').addEventListener('click', function () {
if (!confirm('Reset every band, curve and the input gain to defaults?')) return;
PF.busy(this, fetch('/api/audio-in/reset', { method: 'POST' }).then(function (r) {
if (!r.ok) throw Error('HTTP ' + r.status);
location.reload();
})).catch(function () { say('Reset failed: the panel did not take it.', 'err'); });
});
syncBar();
});
})();
</script>
<script>
// Patternflow Audio — the mapping editor.
//
// One module, no chrome.* and no fetch: everything outside this file arrives
// through window.PFAdapter (editor-adapter.js). The console port copies this
// file verbatim and swaps the adapter.
//
// The model, in one sentence: a band is a BOX drawn on the live spectrum
// (width = the frequencies it listens to, height = the level window it maps),
// and a RESPONSE CURVE that turns position-in-window into position-in-output-
// range. Curves bake to a 33-point table on save; the analysis side — and
// later the firmware — only interpolates, and never learns what a bezier is.
'use strict';
const A = window.PFAdapter;
// ── config ──────────────────────────────────────────────────────────────
const HZ_DEFAULTS = [[60, 250], [250, 2000], [2000, 5000], [5000, 16000]];
const LUT_POINTS = 33;
const PRESETS = {
smooth: { label: 'Smooth', curve: { type: 'bezier', id: 'smooth', y0: 0, y1: 1, p1x: 0.45, p1y: 0.05, p2x: 0.55, p2y: 0.95 } },
sharp: { label: 'Sharp', curve: { type: 'bezier', id: 'sharp', y0: 0, y1: 1, p1x: 0.10, p1y: 0.65, p2x: 0.35, p2y: 1.00 } },
fall: { label: 'Fall', curve: { type: 'bezier', id: 'fall', y0: 1, y1: 0, p1x: 0.45, p1y: 0.95, p2x: 0.55, p2y: 0.05 } },
gate: { label: 'Gate', curve: { type: 'steps', id: 'gate', n: 2 } },
steps: { label: 'Steps', curve: { type: 'steps', id: 'steps', n: 3 } },
arch: { label: 'Arch', curve: { type: 'arch', id: 'arch' } }
};
const clamp01 = (v) => Math.max(0, Math.min(1, Number(v) || 0));
const clampHz = (v) => Math.max(CAPS.hzMin, Math.min(CAPS.hzMax, Number(v) || CAPS.hzMin));
const CAPS = A.caps();
function defaultBand(index) {
const [hzMin, hzMax] = HZ_DEFAULTS[index % HZ_DEFAULTS.length];
return {
hzMin, hzMax,
knob: Math.min(index, 3), muted: false,
inMin: 0, inMax: 1, gain: 1,
outMin: 0.30, outMax: 0.85,
curve: null, lut: null
};
}
function normalizeBand(raw, index) {
const band = { ...defaultBand(index), ...(raw || {}) };
band.hzMin = clampHz(band.hzMin); band.hzMax = clampHz(band.hzMax);
if (band.hzMin > band.hzMax) [band.hzMin, band.hzMax] = [band.hzMax, band.hzMin];
if (band.hzMax - band.hzMin < 10) band.hzMax = Math.min(CAPS.hzMax, band.hzMin + 10);
band.inMin = clamp01(band.inMin); band.inMax = clamp01(band.inMax);
if (band.inMax - band.inMin < 0.02) band.inMax = Math.min(1, band.inMin + 0.02);
band.outMin = clamp01(band.outMin); band.outMax = clamp01(band.outMax);
if (band.outMax - band.outMin < 0.05) band.outMax = Math.min(1, band.outMin + 0.05);
// Four bands, four knobs, one line between them: band i drives knob i.
// A free assignment existed and earned nothing but a control to explain.
band.knob = index;
band.muted = band.muted === true;
band.gain = Math.max(0.2, Math.min(4, Number(band.gain) || 1));
if (band.curve && typeof band.curve !== 'object') band.curve = null;
if (band.lut && (!Array.isArray(band.lut) || band.lut.length < 2)) band.lut = null;
return band;
}
function normalizeConfig(raw) {
const stored = Array.isArray(raw && raw.bands) ? raw.bands : [];
const bands = [];
for (let i = 0; i < 4; i++) bands.push(normalizeBand(stored[i], i));
return {
host: (raw && raw.host) || 'patternflow.local',
smoothing: (raw && raw.smoothing) || 0.35,
sendIntervalMs: (raw && raw.sendIntervalMs) || 33,
autoRange: !!(raw && raw.autoRange),
attack: Math.max(0.05, Math.min(0.9, Number(raw && raw.attack) || 0.65)),
bands,
...(raw && raw.manualExtra ? { manualExtra: raw.manualExtra } : {})
};
}
// ── curve engine ────────────────────────────────────────────────────────
function evalCurve(curve, u) {
u = clamp01(u);
if (!curve) return u;
if (curve.type === 'steps') {
const n = Math.max(2, Math.min(8, Math.round(curve.n) || 2));
const k = Math.min(n - 1, Math.floor(u * n));
return k / (n - 1);
}
if (curve.type === 'arch') return Math.sin(Math.PI * u);
if (curve.type === 'bezier') {
// Cubic from (0, y0) to (1, y1); x(t) is monotone while both control xs
// stay in [0,1], so a short bisection recovers t for any u.
const { y0 = 0, y1 = 1, p1x, p1y, p2x, p2y } = curve;
const bx = (t) => 3 * (1 - t) * (1 - t) * t * p1x + 3 * (1 - t) * t * t * p2x + t * t * t;
const by = (t) => (1 - t) * (1 - t) * (1 - t) * y0 + 3 * (1 - t) * (1 - t) * t * p1y + 3 * (1 - t) * t * t * p2y + t * t * t * y1;
let lo = 0, hi = 1;
for (let i = 0; i < 24; i++) {
const mid = (lo + hi) / 2;
if (bx(mid) < u) lo = mid; else hi = mid;
}
return clamp01(by((lo + hi) / 2));
}
return u;
}
function legacyCurve(band, u) {
return Math.pow(clamp01(u), 1 / band.gain);
}
function bandCurveValue(band, u) {
return band.curve ? evalCurve(band.curve, u) : legacyCurve(band, u);
}
function bakeLut(curve) {
const lut = [];
for (let i = 0; i < LUT_POINTS; i++) {
lut.push(Number(evalCurve(curve, i / (LUT_POINTS - 1)).toFixed(4)));
}
return lut;
}
// ── state ───────────────────────────────────────────────────────────────
let cfg = normalizeConfig(null);
let sel = 0;
let frame = { levels: [], env: [], spectrum: [], running: false, connected: false };
let lastEnv = null; // most recent non-empty env, for the auto→manual handoff
let saveTimer = null;
function persist() {
clearTimeout(saveTimer);
saveTimer = setTimeout(() => A.saveConfig(cfg), 150);
}
function touchCurve(band, curve) {
band.curve = curve;
band.lut = bakeLut(curve);
}
// ── main plot geometry ──────────────────────────────────────────────────
const $ = (id) => document.getElementById(id);
const plotCanvas = $('plot');
const pctx = plotCanvas.getContext('2d');
const M = { l: 48, r: 6, t: 22, b: 40 };
let PW = 0, PH = 0; // plot area, css px
function sizePlot() {
const wrap = $('plotWrap');
const cssW = wrap.clientWidth;
const cssH = 400;
const dpr = window.devicePixelRatio || 1;
plotCanvas.width = Math.round(cssW * dpr);
plotCanvas.height = Math.round(cssH * dpr);
plotCanvas.style.width = cssW + 'px';
plotCanvas.style.height = cssH + 'px';
pctx.setTransform(dpr, 0, 0, dpr, 0, 0);
PW = cssW - M.l - M.r;
PH = cssH - M.t - M.b;
}
const DECADES = Math.log10(CAPS.hzMax / CAPS.hzMin);
const xOf = (hz) => M.l + PW * (Math.log10(clampHz(hz) / CAPS.hzMin) / DECADES);
const hzOf = (x) => clampHz(CAPS.hzMin * Math.pow(10, DECADES * ((x - M.l) / PW)));
const yOf = (v) => M.t + (1 - clamp01(v)) * PH;
const vOf = (y) => clamp01(1 - (y - M.t) / PH);
// Inner gridlines only — the endpoints are drawn from CAPS, so the same axis
// code serves the extension's 20–20k and the microphone's 31–8k.
const TICKS = [[50, '50'], [100, '100'], [200, '200'], [500, '500'],
[1000, '1k'], [2000, '2k'], [5000, '5k'], [10000, '10k']]
.filter(([hz]) => hz > CAPS.hzMin * 1.15 && hz < CAPS.hzMax * 0.87);
const DB_LINES = [[1, '0'], [0.75, '-18'], [0.5, '-35'], [0.25, '-53'], [0, '-70']];
// Canvas colors come from the page's CSS variables, read fresh each paint so
// a theme toggle repaints correctly. The extension page is the cream
// instrument; the device console wraps the same module in its dark tokens.
function theme() {
const s = getComputedStyle(document.body);
const v = (name, fallback) => (s.getPropertyValue(name) || fallback).trim();
const led = v('--led', '#e8552e');
const m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(led.replace('#', ''));
const ledRgb = m ? `${parseInt(m[1], 16)}, ${parseInt(m[2], 16)}, ${parseInt(m[3], 16)}` : '232, 85, 46';
return {
field: v('--field', '#fbf7ef'),
cream: v('--cream', '#f4efe6'),
ink: v('--ink', '#141414'),
muted: v('--muted', '#6b655a'),
faint: v('--faint', '#a69f90'),
rule: v('--rule', '#d9d1c0'),
led,
ledA: (a) => `rgba(${ledRgb}, ${a})`,
ruleA: (a) => `rgba(${parseInt(v('--rule', '#d9d1c0').replace('#', '').slice(0, 2), 16)}, ${parseInt(v('--rule', '#d9d1c0').replace('#', '').slice(2, 4), 16)}, ${parseInt(v('--rule', '#d9d1c0').replace('#', '').slice(4, 6), 16)}, ${a})`,
inkA: (a) => `rgba(${parseInt(v('--ink', '#141414').replace('#', '').slice(0, 2), 16)}, ${parseInt(v('--ink', '#141414').replace('#', '').slice(2, 4), 16)}, ${parseInt(v('--ink', '#141414').replace('#', '').slice(4, 6), 16)}, ${a})`
};
}
// The window a band maps right now: its own handles, or the breathing
// envelope while auto range runs.
function bandWindow(index) {
const band = cfg.bands[index];
if (cfg.autoRange) {
const env = (frame.env && frame.env[index]) || (lastEnv && lastEnv[index]);
if (env) return { lo: clamp01(env.lo), hi: clamp01(env.hi) };
return { lo: 0.1, hi: 0.7 };
}
return { lo: band.inMin, hi: band.inMax };
}
function formatHz(hz) {
return hz >= 1000 ? (hz / 1000).toFixed(hz >= 9950 ? 0 : 1).replace(/\.0$/, '') + 'k' : String(Math.round(hz));
}
// ── main plot drawing ───────────────────────────────────────────────────
const MONO = '10px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace';
function drawPlot() {
const T = theme();
const W = M.l + PW + M.r, H = M.t + PH + M.b;
pctx.clearRect(0, 0, W, H);
pctx.fillStyle = T.field;
pctx.fillRect(0, 0, W, H);
// grid
pctx.font = MONO;
pctx.strokeStyle = T.ruleA(0.55);
pctx.fillStyle = T.faint;
pctx.lineWidth = 1;
for (const [v, label] of DB_LINES) {
const y = Math.round(yOf(v)) + 0.5;
if (v > 0 && v < 1) {
pctx.beginPath(); pctx.moveTo(M.l, y); pctx.lineTo(M.l + PW, y); pctx.stroke();
}
pctx.textAlign = 'right';
pctx.fillText(label, M.l - 8, y + 3);
}
pctx.textAlign = 'center';
for (const [hz, label] of TICKS) {
const x = Math.round(xOf(hz)) + 0.5;
pctx.beginPath(); pctx.moveTo(x, M.t); pctx.lineTo(x, M.t + PH); pctx.stroke();
pctx.fillText(label, x, M.t + PH + 16);
}
pctx.textAlign = 'left';
pctx.fillText(formatHz(CAPS.hzMin), M.l, M.t + PH + 16);
pctx.textAlign = 'right';
pctx.fillText(formatHz(CAPS.hzMax), M.l + PW, M.t + PH + 16);
pctx.strokeStyle = T.rule;
pctx.beginPath(); pctx.moveTo(M.l, M.t + PH + 0.5); pctx.lineTo(M.l + PW, M.t + PH + 0.5); pctx.stroke();
// spectrum staircase
const spec = frame.spectrum || [];
if (spec.length > 1) {
pctx.fillStyle = T.inkA(0.14);
pctx.beginPath();
pctx.moveTo(M.l, yOf(spec[0]));
const bw = PW / spec.length;
for (let i = 0; i < spec.length; i++) {
const y = yOf(spec[i]);
pctx.lineTo(M.l + i * bw, y);
pctx.lineTo(M.l + (i + 1) * bw, y);
}
pctx.lineTo(M.l + PW, M.t + PH);
pctx.lineTo(M.l, M.t + PH);
pctx.closePath();
pctx.fill();
}
// boxes
cfg.bands.forEach((band, i) => {
const win = bandWindow(i);
const x0 = xOf(band.hzMin), x1 = xOf(band.hzMax);
const yTop = yOf(win.hi), yBot = yOf(win.lo);
const isSel = i === sel;
const stroke = isSel ? T.led : (band.muted ? T.faint : T.ink);
const alpha = band.muted ? 0.04 : (isSel ? 0.12 : 0.07);
pctx.fillStyle = T.ledA(alpha);
pctx.fillRect(x0, yTop, x1 - x0, yBot - yTop);
pctx.strokeStyle = stroke;
pctx.lineWidth = isSel ? 1.5 : 1;
pctx.beginPath(); pctx.moveTo(x0, yTop); pctx.lineTo(x0, yBot); pctx.stroke();
pctx.beginPath(); pctx.moveTo(x1, yTop); pctx.lineTo(x1, yBot); pctx.stroke();
if (cfg.autoRange) pctx.setLineDash([5, 4]);
pctx.beginPath(); pctx.moveTo(x0, yTop); pctx.lineTo(x1, yTop); pctx.stroke();
pctx.beginPath(); pctx.moveTo(x0, yBot); pctx.lineTo(x1, yBot); pctx.stroke();
pctx.setLineDash([]);
// live level as a horizontal line across the box — the band's average.
// The line BELONGS to the box: below the window it sits pinned on the
// bottom edge ("resting under the floor"), above it on the top. Drawn at
// the raw position it wandered out of its own box, which read as broken.
const level = (frame.levels && frame.levels[i]) || 0;
const ly = Math.max(yTop + 1.5, Math.min(yBot - 1.5, yOf(level)));
pctx.strokeStyle = T.led;
pctx.lineWidth = 2;
pctx.beginPath();
pctx.moveTo(x0 + 1, ly);
pctx.lineTo(x1 - 1, ly);
pctx.stroke();
if (isSel) {
pctx.fillStyle = T.field;
pctx.strokeStyle = T.ink;
pctx.lineWidth = 1;
for (const [cx, cy] of [[x0, yTop], [x1, yTop], [x0, yBot], [x1, yBot]]) {
pctx.fillRect(cx - 3.5, cy - 3.5, 7, 7);
pctx.strokeRect(cx - 3.5, cy - 3.5, 7, 7);
}
}
});
placeTags();
}
function placeTags() {
const T = theme();
cfg.bands.forEach((band, i) => {
const tag = $('tag' + i);
const win = bandWindow(i);
tag.style.left = Math.round(xOf(band.hzMin)) + 'px';
tag.style.top = Math.round(yOf(win.hi) - 11) + 'px';
tag.classList.toggle('sel', i === sel);
tag.classList.toggle('mutedTag', band.muted);
tag.querySelector('.tagText').textContent = 'B' + (i + 1) + (band.muted ? '·M' : '');
drawGlyph(tag.querySelector('canvas'), band, 18, 12, T.ink);
});
}
// tiny curve glyph, used by tags and footer chips
function drawGlyph(canvas, band, w, h, color) {
const dpr = window.devicePixelRatio || 1;
if (canvas.width !== w * dpr) {
canvas.width = w * dpr; canvas.height = h * dpr;
canvas.style.width = w + 'px'; canvas.style.height = h + 'px';
}
const g = canvas.getContext('2d');
g.setTransform(dpr, 0, 0, dpr, 0, 0);
g.clearRect(0, 0, w, h);
g.strokeStyle = color || theme().ink;
g.lineWidth = 1.4;
g.lineCap = 'round';
g.beginPath();
for (let i = 0; i <= 16; i++) {
const u = i / 16;
const v = bandCurveValue(band, u);
const x = 2 + u * (w - 4);
const y = h - 2 - v * (h - 4);
if (i === 0) g.moveTo(x, y); else g.lineTo(x, y);
}
g.stroke();
}
// ── main plot interaction ───────────────────────────────────────────────
const EDGE = 7;
let drag = null;
function hitTest(x, y) {
// Selected band's edges win first — reaching for a handle should not
// reselect the neighbour underneath it.
const order = [sel, ...cfg.bands.map((_, i) => i).filter((i) => i !== sel)];
for (const i of order) {
const band = cfg.bands[i];
const win = bandWindow(i);
const x0 = xOf(band.hzMin), x1 = xOf(band.hzMax);
const yTop = yOf(win.hi), yBot = yOf(win.lo);
const insideX = x > x0 - EDGE && x < x1 + EDGE;
const insideY = y > yTop - EDGE && y < yBot + EDGE;
if (!insideX || !insideY) continue;
const nearL = Math.abs(x - x0) <= EDGE, nearR = Math.abs(x - x1) <= EDGE;
const nearT = Math.abs(y - yTop) <= EDGE, nearB = Math.abs(y - yBot) <= EDGE;
// Corners first — a grab there resizes both axes at once.
if (nearL && nearT) return { band: i, mode: 'tl' };
if (nearR && nearT) return { band: i, mode: 'tr' };
if (nearL && nearB) return { band: i, mode: 'bl' };
if (nearR && nearB) return { band: i, mode: 'br' };
if (nearL) return { band: i, mode: 'l' };
if (nearR) return { band: i, mode: 'r' };
if (nearT) return { band: i, mode: 't' };
if (nearB) return { band: i, mode: 'b' };
if (x > x0 && x < x1 && y > yTop && y < yBot) return { band: i, mode: 'move' };
}
return null;
}
// Grabbing a breathing edge is the gesture that says "I'll take it from
// here": auto range switches off, and every band's window is seeded from the
// envelope it was just breathing at, so nothing jumps.
function freezeAutoWindows() {
const env = (frame.env && frame.env.length ? frame.env : lastEnv) || [];
cfg.bands.forEach((band, i) => {
const e = env[i];
if (!e) return;
band.inMin = clamp01(e.lo);
band.inMax = Math.max(band.inMin + 0.02, clamp01(e.hi));
});
cfg.autoRange = false;
syncAutoToggle();
}
function plotPointer(event) {
const rect = plotCanvas.getBoundingClientRect();
return { x: event.clientX - rect.left, y: event.clientY - rect.top };
}
plotCanvas.addEventListener('pointerdown', (event) => {
const { x, y } = plotPointer(event);
const hit = hitTest(x, y);
if (!hit) return;
if (hit.band !== sel) selectBand(hit.band);
if (cfg.autoRange && hit.mode !== 'move' && hit.mode !== 'l' && hit.mode !== 'r') {
freezeAutoWindows(); // any grab that touches a breathing edge takes over
}
const band = cfg.bands[hit.band];
const win = bandWindow(hit.band);
drag = {
...hit,
startX: x, startY: y,
hzMin: band.hzMin, hzMax: band.hzMax,
lo: win.lo, hi: win.hi
};
plotCanvas.setPointerCapture(event.pointerId);
event.preventDefault();
});
plotCanvas.addEventListener('pointermove', (event) => {
const { x, y } = plotPointer(event);
if (!drag) {
const hit = hitTest(x, y);
plotCanvas.style.cursor = !hit ? 'default'
: hit.mode === 'move' ? 'move'
: (hit.mode === 'tl' || hit.mode === 'br') ? 'nwse-resize'
: (hit.mode === 'tr' || hit.mode === 'bl') ? 'nesw-resize'
: (hit.mode === 'l' || hit.mode === 'r') ? 'ew-resize' : 'ns-resize';
return;
}
const band = cfg.bands[drag.band];
const MINR = 1.12; // narrowest box, as a frequency ratio
if (drag.mode === 'move') {
// Translate in log-frequency: the box keeps its RATIO width, which is
// what a log axis means by "same size somewhere else".
const shift = (x - drag.startX) / PW * DECADES;
let ratio = Math.pow(10, shift);
ratio = Math.max(CAPS.hzMin / drag.hzMin, Math.min(CAPS.hzMax / drag.hzMax, ratio));
band.hzMin = drag.hzMin * ratio;
band.hzMax = drag.hzMax * ratio;
if (!cfg.autoRange) {
const dv = vOf(y) - vOf(drag.startY);
const span = drag.hi - drag.lo;
const lo = Math.max(0, Math.min(1 - span, drag.lo + dv));
band.inMin = lo;
band.inMax = lo + span;
}
} else {
// Edges and corners share the same four moves; a corner just does two.
if (drag.mode.includes('l')) band.hzMin = Math.min(hzOf(x), band.hzMax / MINR);
if (drag.mode.includes('r')) band.hzMax = Math.max(hzOf(x), band.hzMin * MINR);
if (drag.mode.includes('t')) band.inMax = Math.max(vOf(y), band.inMin + 0.02);
if (drag.mode.includes('b')) band.inMin = Math.min(vOf(y), band.inMax - 0.02);
}
drawPlot();
renderChips();
renderSettings();
});
const releasePlot = () => {
if (!drag) return;
drag = null;
persist();
};
plotCanvas.addEventListener('pointerup', releasePlot);
plotCanvas.addEventListener('pointercancel', releasePlot);
// ── curve panel ─────────────────────────────────────────────────────────
const curveCanvas = $('curve');
const cctx = curveCanvas.getContext('2d');
const CM = { l: 30, r: 10, t: 12, b: 26 };
let CW = 0, CH = 0;
let curveDrag = null;
function sizeCurve() {
const dpr = window.devicePixelRatio || 1;
const cssW = 356, cssH = 218;
curveCanvas.width = cssW * dpr; curveCanvas.height = cssH * dpr;
curveCanvas.style.width = cssW + 'px'; curveCanvas.style.height = cssH + 'px';
cctx.setTransform(dpr, 0, 0, dpr, 0, 0);
CW = cssW - CM.l - CM.r; CH = cssH - CM.t - CM.b;
}
const cxOf = (u) => CM.l + clamp01(u) * CW;
const cyOf = (v) => CM.t + (1 - clamp01(v)) * CH;
function drawCurve() {
const T = theme();
const band = cfg.bands[sel];
const W = CM.l + CW + CM.r, H = CM.t + CH + CM.b;
cctx.clearRect(0, 0, W, H);
cctx.fillStyle = T.cream;
cctx.fillRect(CM.l, CM.t, CW, CH);
cctx.strokeStyle = T.rule;
cctx.lineWidth = 1;
cctx.strokeRect(CM.l + 0.5, CM.t + 0.5, CW - 1, CH - 1);
cctx.strokeStyle = T.ruleA(0.5);
cctx.beginPath(); cctx.moveTo(cxOf(0.5), CM.t); cctx.lineTo(cxOf(0.5), CM.t + CH); cctx.stroke();
cctx.beginPath(); cctx.moveTo(CM.l, cyOf(0.5)); cctx.lineTo(CM.l + CW, cyOf(0.5)); cctx.stroke();
// curve
cctx.strokeStyle = T.ink;
cctx.lineWidth = 2;
cctx.lineCap = 'round';
cctx.beginPath();
const steps = band.curve && band.curve.type === 'steps';
const N = steps ? 200 : 64;
for (let i = 0; i <= N; i++) {
const u = i / N;
const v = bandCurveValue(band, u);
const x = cxOf(u), y = cyOf(v);
if (i === 0) cctx.moveTo(x, y); else cctx.lineTo(x, y);
}
cctx.stroke();
// bezier handles
if (band.curve && band.curve.type === 'bezier') {
const c = band.curve;
cctx.strokeStyle = T.faint;
cctx.setLineDash([2, 3]);
cctx.beginPath(); cctx.moveTo(cxOf(0), cyOf(c.y0)); cctx.lineTo(cxOf(c.p1x), cyOf(c.p1y)); cctx.stroke();
cctx.beginPath(); cctx.moveTo(cxOf(1), cyOf(c.y1)); cctx.lineTo(cxOf(c.p2x), cyOf(c.p2y)); cctx.stroke();
cctx.setLineDash([]);
cctx.fillStyle = T.led;
cctx.strokeStyle = T.ink;
cctx.lineWidth = 1;
for (const [hx, hy] of [[c.p1x, c.p1y], [c.p2x, c.p2y]]) {
cctx.fillRect(cxOf(hx) - 3.5, cyOf(hy) - 3.5, 7, 7);
cctx.strokeRect(cxOf(hx) - 3.5, cyOf(hy) - 3.5, 7, 7);
}
}
// live cursor: where the music is on this curve right now
const win = bandWindow(sel);
const level = (frame.levels && frame.levels[sel]) || 0;
const u = clamp01((level - win.lo) / Math.max(0.001, win.hi - win.lo));
const v = bandCurveValue(band, u);
cctx.strokeStyle = T.led;
cctx.setLineDash([3, 3]);
cctx.lineWidth = 1;
cctx.beginPath(); cctx.moveTo(cxOf(u), CM.t + CH); cctx.lineTo(cxOf(u), cyOf(v)); cctx.stroke();
cctx.setLineDash([]);
cctx.fillStyle = T.led;
cctx.beginPath(); cctx.arc(cxOf(u), cyOf(v), 4.5, 0, Math.PI * 2); cctx.fill();
// labels
cctx.font = MONO;
cctx.fillStyle = T.faint;
cctx.textAlign = 'left';
cctx.fillText(cfg.autoRange ? 'in auto' : 'in ' + win.lo.toFixed(2), CM.l, CM.t + CH + 16);
cctx.textAlign = 'right';
cctx.fillText(cfg.autoRange ? '' : win.hi.toFixed(2), CM.l + CW, CM.t + CH + 16);
cctx.fillText(cfg.bands[sel].outMax.toFixed(2), CM.l - 6, CM.t + 8);
cctx.fillText(cfg.bands[sel].outMin.toFixed(2), CM.l - 6, CM.t + CH);
cctx.textAlign = 'left';
cctx.fillText(u.toFixed(2) + ' → ' + (cfg.bands[sel].outMin + v * (cfg.bands[sel].outMax - cfg.bands[sel].outMin)).toFixed(2), CM.l + 6, CM.t + 12);
}
curveCanvas.addEventListener('pointerdown', (event) => {
const band = cfg.bands[sel];
if (!band.curve || band.curve.type !== 'bezier') return;
const rect = curveCanvas.getBoundingClientRect();
const x = event.clientX - rect.left, y = event.clientY - rect.top;
const c = band.curve;
const near = (hx, hy) => Math.hypot(x - cxOf(hx), y - cyOf(hy)) < 12;
if (near(c.p1x, c.p1y)) curveDrag = 'p1';
else if (near(c.p2x, c.p2y)) curveDrag = 'p2';
else return;
curveCanvas.setPointerCapture(event.pointerId);
event.preventDefault();
});
curveCanvas.addEventListener('pointermove', (event) => {
if (!curveDrag) return;
const rect = curveCanvas.getBoundingClientRect();
const u = clamp01((event.clientX - rect.left - CM.l) / CW);
const v = clamp01(1 - (event.clientY - rect.top - CM.t) / CH);
const band = cfg.bands[sel];
const c = band.curve;
if (curveDrag === 'p1') { c.p1x = u; c.p1y = v; }
else { c.p2x = u; c.p2y = v; }
c.id = 'custom';
band.lut = bakeLut(c);
drawCurve();
renderPresetChips();
placeTags();
});
const releaseCurve = () => {
if (!curveDrag) return;
curveDrag = null;
persist();
renderChips();
};
curveCanvas.addEventListener('pointerup', releaseCurve);
curveCanvas.addEventListener('pointercancel', releaseCurve);
// ── presets, steps, settings column ─────────────────────────────────────
function renderPresetChips() {
const band = cfg.bands[sel];
const id = band.curve ? (band.curve.id || 'custom') : null;
document.querySelectorAll('.preset').forEach((el) => {
el.classList.toggle('on', el.dataset.p === id);
});
$('legacyHint').hidden = !!band.curve;
$('stepsRow').hidden = !(band.curve && band.curve.type === 'steps');
if (band.curve && band.curve.type === 'steps') $('stepsN').textContent = String(band.curve.n);
document.querySelectorAll('.preset canvas').forEach((canvas) => {
const preset = PRESETS[canvas.parentElement.dataset.p];
drawGlyph(canvas, { curve: preset.curve, gain: 1 }, 40, 24, theme().ink);
});
}
document.querySelectorAll('.preset').forEach((el) => {
el.addEventListener('click', () => {
const preset = PRESETS[el.dataset.p];
if (!preset) return;
touchCurve(cfg.bands[sel], structuredClone(preset.curve));
drawCurve();
renderPresetChips();
placeTags();
renderChips();
persist();
});
});
$('stepsMinus').addEventListener('click', () => stepsAdjust(-1));
$('stepsPlus').addEventListener('click', () => stepsAdjust(1));
function stepsAdjust(delta) {
const band = cfg.bands[sel];
if (!band.curve || band.curve.type !== 'steps') return;
band.curve.n = Math.max(2, Math.min(8, band.curve.n + delta));
band.curve.id = band.curve.n === 2 ? 'gate' : 'steps';
band.lut = bakeLut(band.curve);
drawCurve();
renderPresetChips();
placeTags();
renderChips();
persist();
}
function renderSettings() {
const band = cfg.bands[sel];
$('bandName').textContent = 'Band ' + (sel + 1);
$('bandMeta').textContent = formatHz(band.hzMin) + ' – ' + formatHz(band.hzMax) + ' Hz'
+ (cfg.autoRange ? ' · in auto' : ' · in ' + band.inMin.toFixed(2) + '–' + band.inMax.toFixed(2));
$('outLabel').textContent = band.outMin.toFixed(2) + ' – ' + band.outMax.toFixed(2);
const track = $('outTrack');
const w = track.clientWidth - 10;
$('outLo').style.left = (5 + band.outMin * w - 5) + 'px';
$('outHi').style.left = (5 + band.outMax * w - 5) + 'px';
$('outFill').style.left = (5 + band.outMin * w) + 'px';
$('outFill').style.width = Math.max(0, (band.outMax - band.outMin) * w) + 'px';
$('muteToggle').classList.toggle('on', band.muted);
}
document.querySelectorAll('.outPreset').forEach((el) => {
el.addEventListener('click', () => {
const band = cfg.bands[sel];
band.outMin = Number(el.dataset.lo);
band.outMax = Number(el.dataset.hi);
renderSettings(); drawCurve(); renderChips(); persist();
});
});
let outDrag = null;
$('outTrack').addEventListener('pointerdown', (event) => {
const band = cfg.bands[sel];
const rect = $('outTrack').getBoundingClientRect();
const v = clamp01((event.clientX - rect.left - 5) / (rect.width - 10));
outDrag = Math.abs(v - band.outMin) < Math.abs(v - band.outMax) ? 'lo' : 'hi';
$('outTrack').setPointerCapture(event.pointerId);
event.preventDefault();
});
$('outTrack').addEventListener('pointermove', (event) => {
if (!outDrag) return;
const band = cfg.bands[sel];
const rect = $('outTrack').getBoundingClientRect();
const v = clamp01((event.clientX - rect.left - 5) / (rect.width - 10));
if (outDrag === 'lo') band.outMin = Math.min(v, band.outMax - 0.05);
else band.outMax = Math.max(v, band.outMin + 0.05);
renderSettings(); drawCurve();
});
const releaseOut = () => { if (outDrag) { outDrag = null; persist(); } };
$('outTrack').addEventListener('pointerup', releaseOut);
$('outTrack').addEventListener('pointercancel', releaseOut);
$('muteToggle').addEventListener('click', () => {
const band = cfg.bands[sel];
band.muted = !band.muted;
renderSettings(); renderChips(); drawPlot(); persist();
});
$('resetBand').addEventListener('click', () => {
cfg.bands[sel] = defaultBand(sel);
touchCurve(cfg.bands[sel], structuredClone(PRESETS.smooth.curve));
selectBand(sel);
persist();
});
// ── footer chips ────────────────────────────────────────────────────────
function renderChips() {
cfg.bands.forEach((band, i) => {
const chip = $('chip' + i);
chip.classList.toggle('sel', i === sel);
chip.classList.toggle('mutedChip', band.muted);
chip.querySelector('.chipName').textContent = 'B' + (i + 1);
chip.querySelector('.chipHz').textContent = formatHz(band.hzMin) + '–' + formatHz(band.hzMax);
drawGlyph(chip.querySelector('canvas'), band, 18, 12, theme().muted);
});
}
for (let i = 0; i < 4; i++) {
$('chip' + i).addEventListener('click', () => selectBand(i));
}
function selectBand(index) {
sel = Math.max(0, Math.min(3, index));
drawPlot();
drawCurve();
renderPresetChips();
renderSettings();
renderChips();
}
// ── preview ─────────────────────────────────────────────────────────────
//
// Ableton-style: synthetic test signals through the SELECTED band's whole
// chain - window, glide ballistics, curve, output range - drawn as a
// scrolling scope. What the knob will do, audible music not required.
const pvOverlay = $('pvOverlay');
const pvScope = $('pvScope');
const pvCtx = pvScope.getContext('2d');
let pvSig = 'pulse';
let pvRaf = 0;
let pvTimer = 0;
let pvT = 0;
let pvLast = 0;
let pvLevel = 0;
const PV_SECONDS = 4;
const PV_STEP = 1 / 30;
let pvIn = [];
let pvOut = [];
function pvSignal(t) {
if (pvSig === 'pulse') {
// A kick every 0.8 s: one sharp burst, then near-silence. The tail the
// output shows comes from the glide, which is the point of the demo.
const phase = t % 0.8;
const spike = phase < 0.06 ? 0.85 : 0;
return Math.min(1, Math.max(0, spike + 0.07 + (Math.random() - 0.5) * 0.03));
}
if (pvSig === 'noisy') {
const spike = (t % 1.7) < 0.06 ? 0.5 : 0;
return Math.min(1, Math.max(0,
0.30 + 0.10 * Math.sin(t * 1.3) + (Math.random() - 0.5) * 0.22 + spike));
}
// swell
return Math.min(1, Math.max(0,
0.45 + 0.35 * Math.sin(t * Math.PI * 2 * 0.35) + (Math.random() - 0.5) * 0.04));
}
function pvChain(sig) {
// Mirror the live pipeline: asymmetric glide on the LEVEL, then window,
// curve, output range.
const a = pvLevel < sig
? Math.max(0.05, Math.min(0.9, cfg.attack))
: Math.max(0.05, Math.min(0.9, cfg.smoothing));
pvLevel += (sig - pvLevel) * a;
const band = cfg.bands[sel];
let u;
if (cfg.autoRange) {
u = clamp01((pvLevel - 0.10) / 0.85);
} else {
const inMin = clamp01(band.inMin);
const inMax = Math.max(inMin + 0.01, clamp01(band.inMax));
u = clamp01((pvLevel - inMin) / (inMax - inMin));
}
return band.outMin + bandCurveValue(band, u) * (band.outMax - band.outMin);
}
function pvDraw() {
const T = theme();
const w = 600, h = 230;
pvCtx.clearRect(0, 0, w, h);
pvCtx.strokeStyle = T.ruleA(0.5);
pvCtx.lineWidth = 1;
for (const v of [0.25, 0.5, 0.75]) {
const y = Math.round(h - v * h) + 0.5;
pvCtx.beginPath(); pvCtx.moveTo(0, y); pvCtx.lineTo(w, y); pvCtx.stroke();
}
const trace = (arr, color, width) => {
pvCtx.strokeStyle = color;
pvCtx.lineWidth = width;
pvCtx.beginPath();
for (let i = 0; i < arr.length; i++) {
const x = (i / (PV_SECONDS / PV_STEP)) * w;
const y = h - clamp01(arr[i]) * h;
if (i === 0) pvCtx.moveTo(x, y); else pvCtx.lineTo(x, y);
}
pvCtx.stroke();
};
trace(pvIn, T.faint, 1.2);
trace(pvOut, T.led, 2);
}
function pvTick(now) {
if (pvOverlay.hidden) return;
if (!pvLast) pvLast = now;
// Wall-clock scheduling, not per-frame increments: a throttled tab still
// simulates the RIGHT amount of time when frames do arrive (capped per
// frame so a background stint cannot demand thousands of steps at once).
const target = pvT + (now - pvLast) / 1000;
pvLast = now;
let budget = 60;
while (pvT < target && budget-- > 0) {
pvT += PV_STEP;
const sig = pvSignal(pvT);
pvIn.push(sig);
pvOut.push(pvChain(sig));
const cap = PV_SECONDS / PV_STEP;
if (pvIn.length > cap) { pvIn.shift(); pvOut.shift(); }
}
if (budget < 0) pvT = target;
pvDraw();
pvSchedule();
}
// rAF when the surface is live, a timer backstop when it is throttled or
// hidden - the preview keeps moving either way.
function pvSchedule() {
pvRaf = requestAnimationFrame(pvTick);
clearTimeout(pvTimer);
pvTimer = setTimeout(() => {
cancelAnimationFrame(pvRaf);
pvTick(performance.now());
}, 300);
}
function pvOpen() {
const dpr = window.devicePixelRatio || 1;
pvScope.width = 600 * dpr; pvScope.height = 230 * dpr;
pvScope.style.width = '600px'; pvScope.style.height = '230px';
pvCtx.setTransform(dpr, 0, 0, dpr, 0, 0);
$('pvTitle').textContent = 'Preview — Band ' + (sel + 1);
pvIn = []; pvOut = []; pvT = 0; pvLast = 0; pvLevel = 0;
pvOverlay.hidden = false;
pvSchedule();
}
function pvClose() {
pvOverlay.hidden = true;
cancelAnimationFrame(pvRaf);
clearTimeout(pvTimer);
}
$('openPreview').addEventListener('click', pvOpen);
$('pvClose').addEventListener('click', pvClose);
pvOverlay.addEventListener('click', (e) => { if (e.target === pvOverlay) pvClose(); });
document.querySelectorAll('.pvSig').forEach((el) => {
el.addEventListener('click', () => {
pvSig = el.dataset.s;
document.querySelectorAll('.pvSig').forEach((x) => x.classList.toggle('on', x === el));
});
});
// ── auto toggle, status, wiring ─────────────────────────────────────────
function syncAutoToggle() {
$('autoToggle').classList.toggle('on', cfg.autoRange);
$('autoHint').textContent = cfg.autoRange
? 'boxes breathe with the room — drag a top or bottom edge to take manual control'
: 'manual windows — the box edges are exactly what maps';
}
$('autoToggle').addEventListener('click', () => {
if (cfg.autoRange) freezeAutoWindows();
else cfg.autoRange = true;
syncAutoToggle();
drawPlot(); drawCurve(); renderSettings();
persist();
});
$('stopBtn').addEventListener('click', () => A.stop());
// Damping = the level smoothing the analysis already runs (an EMA on each
// band, before the window and curve). Right means calmer: the slider's 0..1
// maps to alpha 0.9..0.05, so a gentle word scale replaces a number nobody
// would know the direction of. It smooths the INPUT level, not the output —
// gate and steps curves stay crisp, their trigger just stops flickering.
const DAMP_WORDS = [[0.25, 'tight'], [0.5, 'balanced'], [0.75, 'smooth'], [1.01, 'glassy']];
const ATK_WORDS = [[0.25, 'snap'], [0.5, 'quick'], [0.75, 'soft'], [1.01, 'lazy']];
function dampWord(v) {
for (const [top, word] of DAMP_WORDS) if (v < top) return word;
return 'glassy';
}
function syncDamping() {
const v = clamp01((0.9 - cfg.smoothing) / 0.85);
$('damping').value = String(v);
$('dampingWord').textContent = dampWord(v);
const k = clamp01((0.9 - cfg.attack) / 0.85);
$('attack').value = String(k);
$('attackWord').textContent = ATK_WORDS.find(([top]) => k < top)[1];
}
$('attack').addEventListener('input', () => {
const v = clamp01($('attack').value);
cfg.attack = Math.max(0.05, Math.min(0.9, 0.9 - v * 0.85));
$('attackWord').textContent = ATK_WORDS.find(([top]) => v < top)[1];
persist();
});
$('damping').addEventListener('input', () => {
const v = clamp01($('damping').value);
cfg.smoothing = Math.max(0.05, Math.min(0.9, 0.9 - v * 0.85));
$('dampingWord').textContent = dampWord(v);
persist();
});
function renderStatus() {
const el = $('sourceChip');
if (frame.demo) { el.textContent = 'demo source'; el.className = 'chip'; }
else if (frame.running && frame.connected) { el.textContent = (A.labels && A.labels.live) || 'live · tab audio'; el.className = 'chip okChip'; }
else if (frame.running) { el.textContent = 'capturing · connecting'; el.className = 'chip'; }
else { el.textContent = 'idle'; el.className = 'chip'; }
$('hostChip').textContent = cfg.host + ':81';
$('captureHint').textContent = frame.running || frame.demo ? '' : A.captureHint;
$('stopBtn').disabled = !frame.running;
}
A.onFrame((state) => {
frame = state || {};
if (frame.env && frame.env.length) lastEnv = frame.env;
drawPlot();
drawCurve();
renderStatus();
});
window.addEventListener('resize', () => {
sizePlot();
drawPlot();
renderSettings();
});
(async function init() {
const stored = await A.loadConfig();
cfg = normalizeConfig(stored);
if (A._setDemoConfig) A._setDemoConfig(cfg);
sizePlot();
sizeCurve();
syncAutoToggle();
syncDamping();
selectBand(0);
renderStatus();
A.requestStatus();
})();
</script>
</body>
</html>
)HTML";
// <gz:AUDIO_IN_INDEX_HTML> GENERATED by firmware/toolchain/console_pages.py build — do not edit.
// gzip -9 of AUDIO_IN_INDEX_HTML (69547 bytes → 19920 bytes), served with Content-Encoding: gzip.
static const uint8_t AUDIO_IN_INDEX_HTML_GZ[] PROGMEM = {
0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00,0x02,0xff,0xd5,0x7d,0xdb,0x76,0x1b,0x47,
0x92,0xe0,0xbb,0xbe,0x22,0x45,0xf7,0x18,0x80,0x05,0x14,0x01,0xf0,0x22,0x09,0x14,
0xa5,0xa5,0x28,0xca,0xd2,0x5a,0x17,0x1e,0x91,0x6e,0xcd,0xb4,0x96,0xeb,0x29,0x00,
0x05,0xa0,0xcc,0x42,0x15,0x5c,0x55,0x20,0x09,0xab,0xb9,0xa7,0x9f,0xe6,0x03,0x66,
0xe7,0x9c,0x3d,0xfb,0x25,0xf3,0x3e,0x9f,0xd2,0x5f,0xb2,0x71,0xc9,0x6b,0x5d,0x40,
0x48,0xf6,0xcc,0x76,0x77,0xdb,0x26,0xaa,0x2a,0x33,0x32,0x33,0x32,0x32,0x6e,0x19,
0x19,0xf9,0xe4,0xfe,0x38,0x19,0xe5,0xab,0x45,0x20,0x66,0xf9,0x3c,0x7a,0x7a,0xef,
0x09,0xfe,0x11,0x91,0x1f,0x4f,0x0f,0xb7,0x82,0x78,0x0b,0x5f,0x04,0xfe,0x18,0xfe,
0xcc,0x83,0xdc,0x17,0xa3,0x99,0x9f,0x66,0x41,0x7e,0xb8,0xb5,0xcc,0x27,0x9d,0x47,
0xf8,0x35,0x1b,0xa5,0xe1,0x22,0x17,0x59,0x3a,0x3a,0xdc,0xda,0x5e,0x4c,0x3a,0xa3,
0x24,0xce,0x92,0x28,0xf0,0x7e,0xce,0x9e,0xcd,0x0e,0xc7,0xdd,0xfe,0x70,0x67,0xa7,
0xdf,0xdf,0x7a,0xfa,0x64,0x9b,0x0b,0x3e,0x95,0x15,0x9e,0x86,0x93,0xe6,0xfd,0xeb,
0x30,0x1e,0x27,0xd7,0xde,0xe9,0xcb,0x56,0x73,0xb2,0x8c,0x47,0x79,0x98,0xc4,0xcd,
0xd6,0xe7,0x2b,0x3f,0x15,0x1f,0x0f,0xf9,0x5b,0xfb,0xc7,0xc3,0xc6,0xb6,0xbf,0x08,
0xb7,0xb3,0xdc,0xcf,0x97,0x59,0xa3,0xfd,0xe6,0xf0,0xd3,0x45,0xfb,0xed,0x61,0x3f,
0x78,0xdc,0x3e,0x6b,0xff,0xa9,0x7d,0x7a,0xf8,0x11,0xaa,0x1f,0x7e,0xc6,0xcf,0xc1,
0xa0,0x11,0x85,0x57,0x41,0xa3,0x3d,0x0e,0xd3,0x7c,0x35,0xb8,0xdf,0x6b,0x5f,0x0d,
0xe2,0x65,0x14,0xb5,0xa7,0x41,0x3e,0xf8,0xbe,0x1d,0xc6,0x93,0x28,0x9c,0xce,0xf2,
0xc1,0xbb,0xe5,0x7c,0x18,0xa4,0xed,0x59,0x12,0x8d,0x07,0xef,0x87,0x3f,0x07,0xa3,
0xbc,0x9d,0xf9,0xab,0x81,0xee,0x41,0xde,0xbe,0x6c,0x07,0xad,0xcf,0xc1,0xb7,0xdf,
0x36,0x03,0x2f,0x0f,0x6e,0xf2,0xe3,0x24,0xce,0x83,0x38,0x3f,0xcc,0x5b,0xb7,0xed,
0xe1,0x32,0xb3,0x8a,0x0e,0xdb,0x8b,0xd6,0x67,0xf5,0x24,0x26,0xd0,0xf9,0xa1,0x37,
0x0e,0x33,0x7f,0x18,0x05,0xe3,0xc3,0xfb,0xbd,0x5b,0xfb,0xa9,0x7b,0xb0,0xf0,0xf2,
0x59,0x10,0x37,0x27,0xed,0x49,0xeb,0x20,0x0d,0xf2,0x65,0x1a,0x8b,0xc5,0x6d,0x7b,
0x91,0x44,0x91,0x81,0x98,0xb5,0xe7,0xed,0x51,0x3b,0x61,0x2c,0xe4,0xed,0x49,0x7b,
0x7a,0xd8,0x3b,0xd0,0x2d,0x7c,0x80,0x16,0xa6,0xdf,0x7e,0x7b,0x7f,0x02,0x7d,0x9b,
0x1c,0xf6,0xda,0xa3,0x28,0xf0,0xd3,0xf3,0x70,0x1e,0x24,0xcb,0xbc,0x99,0xb7,0xda,
0xcd,0xcc,0x1b,0xf9,0x51,0xf4,0x2c,0x6b,0xb6,0x06,0xdf,0x37,0xb3,0x56,0x4b,0xb6,
0xa8,0xa0,0x8f,0x5b,0x9f,0x47,0xcd,0x71,0x1b,0xb1,0x02,0x63,0xd1,0xaf,0x03,0x7c,
0x4d,0xa8,0x0a,0x5a,0xb7,0xb2,0xce,0x0f,0xed,0x1f,0x5a,0xad,0x5b,0xdd,0xf2,0x0f,
0xd0,0xf2,0xe4,0xb0,0x7b,0x50,0x68,0xf1,0x00,0x7a,0xd3,0xcc,0x0f,0x81,0x24,0xd4,
0xbb,0x0f,0xed,0x39,0xd4,0x4b,0xbe,0xfd,0x36,0xf1,0x26,0x61,0x9a,0xe5,0x87,0x87,
0x80,0x88,0x67,0x50,0x7d,0x00,0x9d,0x97,0xc3,0x86,0xe9,0x4a,0x16,0x03,0x6b,0xca,
0xa7,0x65,0xc8,0xb7,0x6d,0x00,0x6a,0xca,0xc4,0xad,0xcf,0xf3,0xc3,0xf8,0x60,0xf2,
0xe7,0x3f,0x03,0xa8,0xdb,0x76,0x9c,0x5c,0x0f,0x3e,0xdc,0x42,0x19,0x22,0x0b,0x53,
0x6c,0x04,0x23,0xf9,0xf6,0xdb,0x37,0xde,0x62,0x99,0xcd,0xe0,0xe1,0xe0,0xec,0x19,
0x3c,0x8e,0x9a,0x67,0xad,0xc1,0x9f,0x9e,0xfd,0xc9,0x83,0x5a,0xd0,0x8f,0x3f,0x1d,
0x9e,0x7a,0x88,0xf4,0xe6,0x8f,0xed,0xb7,0xed,0x17,0x00,0xec,0xda,0xcf,0x47,0xb3,
0xb3,0x02,0xa4,0x79,0xeb,0xf3,0xa9,0xc7,0xe0,0xa1,0xdf,0x7f,0xf2,0xa0,0x37,0xcd,
0xb7,0x87,0x6f,0xfd,0x7c,0xe6,0xcd,0x43,0xf8,0xdc,0x7e,0xdb,0xa2,0xaa,0x61,0xfe,
0x32,0x49,0x5f,0x04,0x57,0xe1,0x28,0x30,0x95,0x61,0xfe,0x92,0xc3,0xe4,0xcf,0x7f,
0xfe,0x7c,0xab,0x26,0x3a,0x0e,0xae,0xc5,0x69,0x9a,0xcc,0xc3,0x2c,0x30,0xd3,0xb1,
0x6a,0xc7,0x3c,0xd1,0x33,0xd3,0xa5,0x7e,0xb0,0x63,0x26,0x26,0x6b,0x7d,0xce,0x60,
0xba,0x9b,0x89,0x37,0x5c,0x86,0xd1,0xf8,0xdb,0x6f,0x33,0xfe,0x71,0x78,0x28,0xdf,
0xb4,0x00,0xfd,0x33,0x0f,0xd1,0xd9,0x6c,0xb5,0x57,0x38,0xe3,0xb7,0xad,0x03,0x6b,
0x36,0x2c,0x1c,0xab,0x62,0x07,0x71,0xf3,0x24,0x4d,0x93,0xb4,0xd9,0xc8,0xb9,0x50,
0x03,0x07,0x92,0x78,0xf2,0xe9,0xcf,0x7f,0x7e,0x1c,0xec,0x02,0x94,0xdb,0x5b,0x43,
0x76,0xdf,0x37,0x97,0x48,0x92,0x72,0x28,0x93,0x00,0xd0,0x45,0x6f,0x0a,0xd4,0x95,
0xb6,0x3e,0xe3,0xaa,0x4e,0xbd,0xe4,0xb2,0x95,0xcf,0xd2,0xe4,0x5a,0x70,0x43,0xa9,
0xc4,0xa3,0xa6,0x7a,0xa2,0x0e,0x5c,0x59,0xcf,0x52,0xfa,0x03,0x93,0x92,0x02,0xc3,
0xc0,0x6e,0xde,0x5a,0x34,0xf7,0x02,0xc7,0x0f,0x10,0xe1,0xbf,0x67,0xb0,0xce,0x17,
0x13,0x9e,0xa3,0xc3,0xec,0xe0,0x8d,0x37,0x49,0xd2,0x13,0x1f,0xba,0xa1,0x1b,0x9f,
0x00,0x7d,0x42,0x49,0xec,0xf8,0x6d,0xab,0xd9,0xd2,0xfc,0x46,0x32,0xae,0xd8,0x9f,
0x07,0x87,0x5b,0x57,0x61,0x70,0xbd,0x48,0xd2,0x7c,0x4b,0x8c,0xe4,0x9a,0xde,0xba,
0x0e,0xc7,0x39,0x30,0x2a,0x9a,0xc0,0x0e,0x3d,0x00,0xa7,0x08,0xf3,0xd0,0x8f,0x3a,
0x19,0xac,0xa5,0xe0,0xb0,0x87,0x5c,0x2e,0x0f,0xf3,0x28,0x78,0x7a,0xea,0xe7,0x79,
0x90,0x02,0x1f,0x81,0xa1,0x75,0xc4,0xdb,0x70,0x24,0xe6,0xfe,0x62,0x11,0xc6,0xd3,
0x27,0xdb,0x5c,0xe0,0xde,0x93,0xfb,0x9d,0x8e,0xf8,0xfe,0xe4,0xdd,0xc9,0x87,0xa3,
0xf3,0x93,0x17,0x62,0xb8,0x12,0xb0,0x08,0xe6,0xd7,0x7e,0x1a,0x6c,0xe7,0x49,0x12,
0x01,0xfb,0x0c,0xe3,0x6d,0x9a,0xb9,0x9f,0xfc,0xe5,0x38,0x4c,0x7e,0x0a,0xe3,0x9f,
0x16,0xfe,0x34,0xf0,0x16,0x50,0x12,0xc8,0xe3,0x9e,0xc0,0xff,0x61,0xd1,0x6c,0x7b,
0x61,0x5a,0xeb,0x50,0xe1,0x0e,0xa0,0x2a,0x88,0x33,0x44,0x4d,0x33,0x18,0x87,0x79,
0x92,0x8a,0xfe,0xe3,0x6e,0xb0,0xb7,0xd7,0xdf,0xdd,0xdb,0x6f,0x79,0x5c,0xf7,0x04,
0x3e,0x08,0x98,0x17,0x21,0x4b,0xc0,0xcf,0x34,0x68,0x8b,0x34,0x48,0x97,0x31,0xbd,
0xa7,0xd6,0x81,0xff,0xe1,0x43,0x2c,0x24,0xbb,0xa6,0x4e,0x64,0xd8,0x0b,0xfa,0xec,
0x89,0x4e,0x07,0x79,0x7b,0xbe,0xc2,0x41,0x6d,0x7f,0x27,0xec,0x91,0x1f,0x61,0x5f,
0xc4,0x5f,0xff,0xf2,0x6f,0x6a,0xf4,0xb2,0x29,0x4f,0x9c,0x01,0x92,0xc5,0x28,0x0d,
0xfc,0xb9,0x08,0xe3,0x2c,0x4f,0x97,0x73,0x40,0xb1,0x58,0x00,0x16,0xa1,0xb6,0xf0,
0x33,0x6c,0x12,0x7b,0xb9,0x48,0x16,0xcb,0x85,0x68,0xd2,0x1f,0x6f,0x94,0x65,0x22,
0xa4,0x4f,0x22,0x4b,0x96,0xe9,0x28,0x10,0xc9,0x04,0x9f,0xb2,0x40,0x5c,0xf9,0xd1,
0x32,0xc8,0x5a,0x9e,0xf8,0x6e,0xfb,0xde,0x20,0x4d,0x92,0x5c,0x7c,0x86,0xea,0x9d,
0x0e,0x35,0x31,0x10,0xdf,0x4c,0x76,0x83,0x49,0xb0,0x7f,0x60,0xde,0x75,0xfa,0xf0,
0x36,0x18,0x07,0x0f,0xc7,0x43,0x7e,0x1b,0xc6,0x97,0xf0,0xa6,0xb7,0x8b,0xff,0xe7,
0x37,0xf3,0x65,0x1e,0x8c,0xe1,0xdd,0xfe,0x70,0x7f,0x6f,0xcf,0xe7,0x77,0x13,0x98,
0x95,0x1c,0xde,0xf9,0xfb,0x8f,0x27,0x8f,0xbb,0xfc,0x2e,0x5d,0x46,0x01,0xbc,0x1a,
0x3f,0x1e,0xf7,0x46,0xf2,0x55,0x44,0x15,0x83,0x47,0x80,0xf0,0x80,0xdf,0x24,0x08,
0xbd,0xbf,0xff,0xd0,0xdf,0xdd,0xe1,0x17,0x43,0x1f,0x8b,0x0c,0x77,0x77,0x86,0xfd,
0xb1,0x84,0x1d,0x06,0x11,0xbe,0x9b,0x0c,0x27,0x0f,0x83,0x89,0xec,0x43,0x12,0x27,
0x03,0xb1,0x0c,0xe9,0x47,0xb6,0xf0,0x47,0x30,0x41,0x67,0x2f,0xdf,0xc2,0x43,0xe7,
0x43,0x30,0x5d,0x46,0x3e,0xcc,0xce,0xdb,0x20,0x8e,0x92,0xb6,0x38,0xa6,0xf9,0xf1,
0xb3,0xb6,0xd0,0x65,0x0f,0xee,0xdd,0xde,0xbb,0xf7,0x9d,0xf8,0x2c,0x86,0xc9,0x4d,
0x27,0x0b,0x7f,0x85,0x19,0x18,0xc0,0xef,0x14,0x26,0xb5,0x03,0xaf,0x0e,0x04,0x7c,
0x1e,0x26,0xe3,0x15,0x21,0x6b,0xee,0xa7,0xd3,0x30,0x1e,0x08,0x1a,0xc2,0xd0,0x1f,
0x5d,0x4e,0xd3,0x64,0x19,0x43,0x87,0x80,0xed,0x34,0x25,0xd6,0x5a,0xf8,0x6d,0x94,
0x44,0x49,0xaa,0x5e,0x03,0xda,0xe8,0xe5,0x24,0x41,0xbc,0xf4,0xfa,0x8b,0x9b,0xed,
0x9e,0xb7,0xbb,0x27,0x5e,0xc3,0xa2,0x81,0xbe,0x41,0xcf,0x33,0x3f,0xce,0x3a,0x59,
0x90,0x86,0x93,0xb6,0xc8,0x56,0x59,0x1e,0xcc,0x3b,0xcb,0x10,0x7e,0xea,0xd7,0xd4,
0x4b,0x0f,0xc9,0x4a,0xf6,0xe3,0x86,0x57,0x17,0x82,0x7b,0xd4,0x5d,0xdc,0x1c,0xd8,
0x9d,0x13,0xfe,0x32,0x4f,0xf0,0xcd,0xc2,0x1f,0x8f,0x69,0x3c,0xfd,0x5d,0x2e,0x02,
0xf2,0x73,0x11,0x81,0x74,0x16,0x93,0x28,0xa0,0x17,0xf8,0xb7,0x03,0x12,0x3e,0xa0,
0x65,0x3f,0xc0,0x7e,0x2f,0xe7,0x31,0x7e,0x99,0xfa,0x0b,0x00,0x4e,0xf5,0xb0,0x69,
0xc4,0x17,0x20,0x09,0x87,0x00,0x13,0x3c,0x0f,0xa3,0x95,0x1a,0x1d,0x7e,0x69,0x21,
0x9a,0x40,0x3a,0xcf,0xcf,0x61,0x51,0x41,0x31,0x67,0xf8,0x44,0x23,0x5c,0x62,0x06,
0x94,0xa1,0xa0,0x00,0xae,0x81,0x24,0x7a,0x3d,0x68,0xc1,0x2d,0x4f,0xf4,0xc3,0xe5,
0x69,0x86,0x52,0xac,0x81,0xfd,0x04,0x64,0x5f,0x43,0x0d,0x9a,0x12,0x58,0x45,0x7f,
0xfd,0xb7,0xbf,0xc0,0x3f,0x02,0x15,0x2a,0x28,0x23,0x9f,0x80,0xb6,0xe5,0x8b,0xcf,
0x85,0xd1,0x0a,0x1f,0x14,0x96,0xb8,0x13,0x02,0x72,0x33,0x18,0x68,0x80,0xc8,0x3f,
0x10,0x3f,0x2f,0xb3,0x3c,0x9c,0xac,0x3a,0x92,0x83,0x0d,0x04,0x35,0xd9,0x19,0x06,
0xf9,0x75,0x10,0xc4,0x07,0x12,0x0d,0xfd,0x05,0x11,0x82,0x37,0x4c,0xfd,0x78,0xbc,
0x21,0x64,0xaa,0xf9,0x58,0x56,0x04,0x62,0x87,0x6a,0x72,0xca,0x1e,0xe1,0xcb,0x59,
0x40,0xea,0x13,0x3f,0x94,0x49,0x29,0x22,0x94,0x49,0x3a,0x4c,0xfd,0x71,0x08,0xd2,
0x54,0xf4,0x24,0x34,0x62,0x8f,0x05,0x3c,0xe2,0x4c,0xf1,0x8b,0x6b,0x09,0x79,0xbf,
0xdb,0xa5,0xd2,0x97,0xe1,0xe8,0x92,0x91,0x58,0x3b,0x79,0x36,0x20,0xa4,0x26,0x41,
0x3c,0x26,0xed,0x20,0x32,0x88,0x80,0xba,0x5e,0xf7,0x71,0x30,0x3f,0xa8,0x9d,0xd8,
0x51,0x04,0x78,0xdc,0x18,0xe9,0x84,0x9a,0x47,0x3c,0x18,0xa8,0x3b,0x0b,0x17,0x44,
0xd5,0x3c,0x5a,0x1a,0x26,0x30,0xaf,0x28,0x1c,0xcb,0x76,0x90,0x79,0x94,0x91,0xd1,
0xaf,0x46,0x1c,0x71,0x88,0x96,0x43,0xfd,0x7b,0x00,0x8f,0x87,0xb5,0x19,0x06,0xca,
0x24,0xc9,0x2b,0xf8,0x96,0xfb,0x8a,0x74,0xbe,0x86,0xc6,0x93,0xcb,0x63,0x1a,0x90,
0xea,0xaf,0x53,0x0e,0x64,0x79,0x01,0x34,0xbd,0xa1,0xc5,0x9d,0x86,0xb0,0x82,0x57,
0xcf,0xf3,0x98,0x90,0xc1,0xcc,0x22,0x8c,0x41,0xe0,0x84,0xb9,0xdb,0x3f,0x1a,0xf9,
0x68,0x99,0x66,0x08,0x65,0x91,0x84,0x84,0xd4,0x35,0xf8,0xa3,0xde,0x57,0xa1,0xaf,
0x92,0x89,0x71,0x69,0xa7,0x8f,0x92,0xaf,0x19,0x8c,0xee,0x23,0x46,0x25,0x6f,0xb0,
0x3a,0x3e,0x50,0xfa,0x39,0x8c,0x3e,0x41,0xd2,0x01,0xc3,0x01,0x48,0x67,0x67,0xcf,
0x74,0x77,0x1c,0x4c,0xfc,0x65,0x94,0x13,0xa6,0xa6,0xb3,0x24,0xcb,0x37,0x18,0x6f,
0xef,0x0b,0xc7,0x5b,0x4f,0x2f,0x95,0x03,0x96,0x14,0x53,0x3d,0xa1,0xee,0x90,0xfb,
0x72,0xc8,0xaa,0xe7,0x83,0x59,0x72,0x45,0x54,0x5f,0x35,0xd7,0xbc,0x84,0x2b,0x5e,
0x39,0xec,0x0b,0xb5,0x93,0x21,0x28,0xad,0xdb,0xf0,0x6b,0x3a,0x8d,0x82,0xcc,0xe2,
0x64,0x9e,0xfa,0xf8,0x05,0xcb,0x8a,0x09,0x1d,0xb9,0xb1,0x3f,0x27,0x75,0xe2,0xcb,
0x97,0xa4,0xae,0x1a,0xc6,0x8b,0x65,0x6e,0xf8,0x56,0x6f,0x87,0x60,0xfb,0x23,0xac,
0xd4,0xa9,0x1c,0x98,0xae,0xea,0x08,0x0c,0x7b,0x1e,0x41,0xdd,0x57,0xa2,0x6b,0x6f,
0x1f,0x5f,0xa0,0xca,0xda,0xa1,0x3e,0x0d,0x44,0x8a,0x9c,0x8b,0x59,0x1c,0x21,0xe3,
0x63,0xea,0x2f,0xaa,0xa8,0xa3,0x48,0x0c,0x9b,0x0f,0xf1,0xa1,0xa4,0x82,0x2f,0x5d,
0x2a,0x6b,0xe8,0xc6,0xe5,0x33,0x3d,0x49,0x22,0x3c,0x80,0x37,0xfe,0x30,0x88,0xaa,
0xd0,0xe0,0x70,0xea,0x3d,0xc9,0xa9,0xb9,0x0e,0x0d,0x58,0xa2,0xa8,0xdf,0xb7,0x65,
0x45,0xaf,0xa6,0x27,0xd5,0x04,0x2f,0x87,0xba,0x48,0xb2,0x90,0x85,0x7b,0x1a,0x44,
0x7e,0x0e,0x36,0xbd,0x85,0xae,0x30,0x8e,0xc2,0x18,0xc4,0x5d,0x94,0x8c,0x2e,0x0f,
0x34,0x56,0xba,0x15,0x18,0xd6,0xa3,0xec,0x2a,0xbd,0x61,0x20,0xe2,0x24,0x0e,0xac,
0xc1,0x0a,0x6f,0x9c,0xe4,0x3f,0xb4,0x85,0x3d,0x79,0xf4,0x8a,0x46,0x64,0xfa,0xe1,
0x0f,0x01,0xe5,0xb0,0xbe,0x50,0xcc,0x4c,0x72,0x29,0xd6,0xd0,0x86,0xe5,0x5f,0x8a,
0xda,0xba,0xce,0xd0,0xbb,0x77,0x2d,0xdf,0xc2,0xe8,0xf7,0xba,0xff,0x00,0x40,0x41,
0x5e,0xab,0x56,0xb1,0x2d,0x60,0x46,0xbd,0x7e,0x66,0x75,0x99,0xfb,0xa8,0xf0,0xae,
0x46,0xdb,0x09,0xae,0x80,0x66,0x32,0x39,0x40,0x97,0x1c,0x3d,0xb0,0x17,0x4c,0x85,
0x72,0x77,0x24,0x3f,0x2f,0xd6,0x60,0x34,0xa8,0x01,0x6b,0x41,0x4e,0x85,0xbc,0x6c,
0xee,0x47,0x11,0x16,0xbb,0x1b,0xa0,0x29,0x5b,0x0d,0xd2,0xe2,0x2c,0x73,0xd0,0xa3,
0xc4,0x22,0x02,0x3d,0xdf,0xe2,0x28,0xf8,0xac,0x57,0x55,0x15,0x69,0xac,0x93,0xa8,
0x5f,0xc1,0x70,0x6f,0xef,0x7d,0x43,0x5d,0xb0,0xb8,0x90,0x24,0xb6,0x92,0x44,0xc8,
0x93,0xe5,0x68,0xd6,0xf1,0xa5,0x26,0x6a,0x50,0xef,0x4f,0x6b,0xe9,0x67,0xe3,0x65,
0xbf,0x5f,0x47,0x3d,0xd2,0xd0,0x69,0x1d,0x7c,0x9d,0x34,0x31,0x1a,0x36,0xd4,0xc2,
0x05,0x57,0x4d,0x42,0xf7,0x78,0x1c,0x5e,0x46,0xcc,0xa0,0x5e,0x58,0xc8,0x62,0x24,
0x7c,0xce,0x71,0xdc,0xb6,0x18,0xdd,0xdb,0x53,0x05,0xa4,0x96,0xfd,0x05,0xfa,0x9c,
0x43,0x18,0x80,0xf9,0xab,0x00,0xba,0x1e,0x43,0x6f,0x6c,0xd2,0xa0,0x17,0x9f,0x4b,
0x66,0x02,0x63,0xb0,0xdf,0xbd,0x4b,0xdf,0xfa,0x0a,0xf5,0x4d,0xa3,0xaf,0x47,0xe2,
0xf5,0x91,0xe4,0x9d,0x80,0x99,0xb2,0xd8,0xaa,0x31,0x55,0x5c,0xc9,0x05,0x2f,0x3d,
0x34,0x13,0x4a,0x26,0x83,0xab,0xc7,0x43,0xb1,0x1f,0xfe,0x0b,0xb4,0xe2,0xab,0xd4,
0x12,0x9e,0x6b,0x59,0x37,0x2c,0x13,0x9e,0x95,0xf2,0x3a,0xa9,0x5e,0x16,0xa8,0x76,
0x81,0x51,0x9f,0x67,0xc7,0x84,0x2b,0x25,0x2e,0xf6,0x15,0x22,0xf8,0xeb,0xf7,0x69,
0xe8,0x98,0x2b,0x53,0x78,0x3e,0xa0,0xff,0x76,0x60,0x91,0xc0,0xbb,0x3c,0xe8,0x30,
0x1e,0x33,0xe4,0x01,0x8b,0xc0,0xcf,0x9b,0x3b,0x6d,0x94,0xd1,0x60,0x61,0x36,0xbb,
0x6d,0xd1,0x9b,0xa4,0xad,0x56,0x01,0xc7,0x0c,0x7a,0x13,0xb1,0x5c,0x26,0xa5,0xba,
0x49,0xac,0x5f,0xb9,0x7b,0xeb,0x05,0xf6,0x17,0xd9,0x06,0xc6,0x3e,0xd7,0x84,0x07,
0x06,0x9a,0xd8,0x95,0x6b,0xf7,0x9e,0x19,0x1c,0x4c,0x71,0x5c,0x10,0xdb,0xdd,0x6a,
0xb1,0x5d,0xb6,0x13,0x0c,0x8e,0x24,0x4b,0x5f,0xb7,0xdc,0x4d,0x41,0xbb,0xc9,0xa2,
0x09,0x07,0xb6,0xd5,0x22,0xfb,0x40,0x64,0xfd,0x45,0x9a,0xce,0x1d,0x66,0x8d,0x45,
0xaa,0xaa,0x85,0x4f,0xb3,0x70,0x3c,0x0e,0xe2,0x0b,0xbb,0x25,0xcd,0x8a,0x75,0x37,
0x86,0xcb,0x3c,0x4f,0xe2,0x8d,0x34,0x33,0x45,0xfe,0x8e,0xd1,0xcb,0x4f,0x96,0x4a,
0x21,0x48,0x0d,0xd1,0x9f,0x7f,0xef,0x19,0xaf,0xb6,0xe6,0x2c,0x96,0x08,0x73,0x90,
0x43,0x57,0x32,0x49,0x90,0x36,0x5b,0x1c,0x82,0xc9,0xff,0x2a,0xf0,0xef,0x32,0xfb,
0x87,0x3e,0x30,0xf7,0x10,0x11,0xe5,0x2c,0x16,0xac,0xfd,0x0e,0x1d,0x79,0x2e,0x31,
0xed,0x54,0x5b,0xeb,0xd7,0x33,0x80,0x46,0xfc,0x25,0x40,0xb4,0x5f,0x83,0xa0,0x26,
0x28,0xc4,0x64,0xbf,0x90,0x25,0xee,0xcb,0x1e,0x50,0xdd,0xcd,0x69,0x67,0x23,0x87,
0xc8,0x23,0x1b,0x76,0xad,0x8e,0x5b,0x43,0x6b,0x40,0x47,0x41,0x85,0x59,0x82,0x9e,
0x8a,0x38,0x19,0xae,0xb3,0x07,0x37,0xb4,0xdc,0xbf,0xdc,0x52,0xdc,0x8c,0x6e,0xe4,
0x10,0x6c,0xf6,0xa1,0x0d,0x61,0x45,0x8f,0xa8,0x8d,0x29,0xfb,0xa6,0x4b,0x1c,0x45,
0x0e,0x6a,0x40,0xfb,0x37,0x9d,0xd1,0x2c,0xa4,0x99,0xac,0x28,0xde,0xb3,0xc0,0x58,
0x64,0x2d,0xba,0xf0,0x7f,0x25,0xb8,0x14,0xb0,0xc8,0x2f,0xc3,0x52,0x75,0xa8,0x34,
0xd7,0xb4,0xeb,0xd4,0x33,0x23,0x69,0xf4,0x7c,0x89,0x27,0x00,0x67,0x31,0x59,0xe6,
0xe7,0x29,0x54,0x22,0xbd,0xb9,0xac,0x48,0xba,0x6b,0xbd,0xc4,0x17,0x6a,0xb4,0x3d,
0x00,0xfa,0xc1,0x0f,0x23,0x07,0x66,0xd1,0x5e,0x20,0x7c,0xa7,0x0c,0x7d,0x57,0xdb,
0x0e,0x0e,0x83,0xe9,0xdf,0x21,0x6d,0xb1,0x9d,0x97,0x61,0x54,0xd7,0x0e,0x01,0x7c,
0xe8,0xed,0xd9,0x20,0x77,0xd6,0x39,0xea,0x18,0xe2,0x2b,0x58,0xec,0xd2,0x7e,0xab,
0x85,0xba,0x6b,0x99,0x38,0x8f,0xbf,0xc6,0xc2,0xa9,0x31,0x5a,0x5d,0x7e,0x36,0x49,
0x12,0x74,0xc7,0xa1,0xbb,0xca,0x71,0x28,0xf0,0x8b,0xaf,0x70,0x09,0x60,0xc5,0x63,
0x3f,0x1d,0x7f,0x9d,0xd8,0x5f,0x0f,0xff,0xab,0x06,0xbd,0x99,0x5a,0xfe,0xd0,0xf6,
0xda,0xa8,0x31,0x6c,0xa2,0x86,0xeb,0xb2,0xb4,0xe8,0xa5,0x47,0xaf,0xac,0x8c,0x63,
0xb1,0x17,0x89,0xe5,0x23,0xd9,0xb7,0xa7,0x74,0xff,0x2b,0x7c,0xbb,0x1a,0xd1,0xb5,
0x1e,0x14,0x28,0xe4,0xa7,0x52,0xc7,0x2d,0xea,0x27,0x35,0x8e,0x74,0x8b,0x32,0x80,
0x4c,0xd1,0xa9,0x23,0xb5,0x47,0xf1,0x00,0x7f,0xe1,0x46,0x9e,0x4d,0x25,0x50,0xe6,
0x54,0x7e,0xff,0x5c,0x69,0x0c,0x28,0xd9,0xa2,0x0b,0xde,0xe5,0xc2,0xeb,0xfe,0xe7,
0xba,0xf0,0xd6,0xb1,0x6b,0x43,0x0c,0xb0,0x82,0x85,0x32,0x31,0x74,0xcf,0xbf,0xda,
0x85,0xe7,0x2d,0xae,0xde,0x43,0x4d,0x40,0x4d,0x61,0xc1,0x4f,0xc2,0x9b,0x00,0xb4,
0xec,0x30,0x46,0xe8,0xc8,0x83,0x7f,0x85,0x15,0x3a,0x46,0x7f,0xc9,0x5e,0x69,0xdf,
0x28,0x9d,0x0e,0xfd,0x66,0x1f,0x14,0x6d,0xf5,0x6f,0xd7,0xdb,0xdd,0x6b,0x6d,0xba,
0x82,0x4a,0xb2,0x5a,0x7e,0x20,0x45,0x56,0xf5,0x6e,0xad,0x46,0xb7,0xb8,0xd2,0x8b,
0xba,0x1e,0xab,0x5f,0xe4,0x2c,0xdb,0x29,0xac,0x40,0x66,0xff,0x5f,0xa2,0xb8,0xf4,
0xe4,0x34,0xab,0x15,0xb5,0x4b,0xc4,0x63,0x6d,0x79,0x3d,0xde,0xbd,0xba,0x96,0x63,
0xac,0x56,0xcc,0xee,0xd2,0x61,0x2a,0x91,0xc9,0xd8,0xa8,0xe6,0x8f,0xae,0xfd,0x73,
0x75,0x16,0x4e,0xff,0x16,0x7d,0xd6,0x3c,0x1f,0xd5,0xee,0x48,0xea,0xf4,0x5d,0xf6,
0x48,0x95,0xed,0xf1,0x0d,0xd4,0x1c,0x25,0x8b,0x2a,0xcb,0xf4,0xab,0x99,0x36,0xf5,
0xe7,0x4d,0x30,0x0d,0xaa,0x36,0xd3,0x8c,0xf1,0x52,0x3f,0x4d,0x3f,0x04,0xab,0xd7,
0x71,0x5b,0xf0,0xaf,0xf7,0x8e,0x8f,0x7a,0xbf,0x24,0xb3,0x6b,0x9c,0x9d,0x06,0x50,
0xa5,0xdb,0xcd,0xda,0x85,0xb4,0x5a,0xa9,0x97,0xff,0x8e,0x83,0x85,0xc3,0x00,0x44,
0x76,0x19,0xc6,0x82,0xd8,0x8b,0x09,0x21,0x68,0x64,0x72,0x4f,0x3f,0x4f,0x2e,0x83,
0xd8,0x16,0xce,0x55,0x7b,0xf2,0xdd,0xe3,0xee,0xf3,0xee,0xe3,0xe2,0x9e,0x7c,0xef,
0x79,0xef,0xb1,0xda,0x81,0xe7,0x3d,0xf9,0x93,0x17,0x27,0x0f,0x5f,0x3c,0x77,0xf7,
0xe4,0x1f,0x1d,0x3d,0xea,0x3f,0xec,0xbb,0x7b,0xf2,0x7b,0x47,0x7b,0x7b,0xbb,0xfb,
0xce,0x9e,0x7c,0x7f,0xb7,0xdf,0xeb,0x3d,0xb2,0xf7,0xe4,0x5f,0xbe,0xdc,0x3b,0xee,
0x9f,0x58,0x7b,0xf2,0x7b,0x0f,0x9f,0x3f,0x7a,0xf8,0xd2,0xde,0x93,0x7f,0xf9,0x72,
0xff,0xf9,0xde,0x91,0xbb,0x27,0xdf,0xdb,0xe9,0xf5,0x7a,0xa4,0xf3,0x02,0x26,0xce,
0x61,0xc0,0x12,0x0d,0x30,0xe2,0x37,0x38,0x1d,0x72,0x83,0x43,0x64,0xb9,0x3f,0x87,
0x45,0x86,0x91,0x71,0x9f,0xc6,0x7e,0xee,0x77,0x00,0x39,0xf3,0xe0,0x90,0xc2,0xc9,
0x2e,0x04,0x6e,0xb0,0x22,0xca,0xd2,0x70,0x1c,0xe8,0x10,0x87,0xe3,0xf7,0xef,0xce,
0xde,0xbf,0x39,0xe9,0x60,0xdc,0x09,0xd1,0x52,0x88,0xdb,0x4c,0x99,0x68,0x52,0xd5,
0x9f,0x88,0xbd,0x7a,0xb3,0x96,0x47,0xcd,0x6a,0x3c,0xe7,0xd7,0x09,0x45,0xaa,0x64,
0x18,0x03,0x11,0x82,0x30,0x4b,0xae,0x63,0x84,0x16,0x07,0x00,0x84,0x9a,0x93,0x31,
0x11,0x02,0xa3,0x3a,0x04,0x87,0x77,0xb0,0xc7,0x94,0x0d,0x2e,0xec,0x4b,0xee,0x83,
0x55,0x08,0x5d,0x5e,0x89,0xb1,0x9f,0x5e,0x02,0x0d,0x09,0x9f,0xeb,0x52,0xe8,0x05,
0x6e,0xc8,0x77,0xd0,0x6c,0x1b,0xcd,0x40,0xf5,0x05,0x5e,0xe4,0x67,0x62,0x0b,0xa1,
0xc8,0xb1,0x8e,0x13,0x80,0x1e,0x27,0xf9,0x0c,0x56,0xe4,0x96,0x27,0x8e,0xfd,0xf8,
0xca,0xcf,0x78,0xd5,0x66,0xb0,0xdc,0x22,0x8c,0x00,0x99,0xa4,0x41,0x30,0x40,0x68,
0x32,0xf0,0xe3,0xe7,0x8c,0x40,0x65,0x3a,0x6c,0x43,0x8d,0x16,0x0a,0x66,0x33,0x01,
0x6b,0x38,0x00,0xfc,0xac,0xa0,0x71,0x98,0x53,0x8a,0xe6,0xa8,0x41,0xe5,0xe7,0x02,
0xd9,0x9c,0x3c,0x3a,0xe9,0xbf,0xd8,0x77,0x27,0xed,0xe5,0xcb,0x97,0xc7,0x2f,0x8f,
0xe4,0xa4,0x71,0xdc,0x8e,0xc0,0xcd,0x2d,0x52,0x1d,0x31,0x92,0x64,0x1e,0xf8,0x31,
0x74,0x1e,0xda,0xcf,0x60,0x9c,0x01,0x47,0xbd,0xd0,0xb8,0x5f,0x9f,0xd1,0x6f,0xae,
0x74,0x60,0x85,0x9c,0xe0,0x58,0xa8,0x3a,0xe2,0xef,0x0c,0xb4,0x5e,0xe9,0x5a,0x82,
0xfa,0x7e,0x6e,0xd5,0x81,0xd5,0x84,0xd3,0xf4,0x36,0x1c,0xa5,0xc9,0x62,0x06,0x22,
0x49,0x64,0xd7,0x61,0x0e,0x98,0xc4,0x7a,0x80,0x34,0x78,0x06,0xb4,0xc3,0xf8,0xbe,
0xc1,0x1e,0x21,0x6b,0x6e,0x8b,0x6f,0xb8,0x09,0xf5,0x00,0xc0,0xc9,0x60,0xac,0x10,
0x6d,0xdc,0xc6,0x73,0xdc,0x3d,0xfb,0x12,0x85,0xb4,0xb7,0xfb,0xdb,0x34,0x52,0xcd,
0xe3,0xeb,0x3c,0x9d,0x5d,0x7b,0xef,0xf4,0xcb,0xf7,0x15,0x00,0x67,0x6f,0xb3,0xa9,
0xd4,0xfd,0x58,0xd0,0x14,0x03,0x31,0xbe,0xe1,0xa1,0xbf,0x03,0x0c,0x0e,0x82,0xf9,
0x22,0x5f,0x01,0xa7,0xe4,0x6a,0xfc,0x58,0xad,0x09,0x4c,0xa0,0x89,0xe2,0xb6,0xb6,
0x6a,0x14,0x3e,0xc2,0x8a,0x2c,0x7e,0x05,0x56,0x40,0x9f,0xd5,0x72,0x9f,0xa5,0xc9,
0x9c,0xe6,0xcc,0xa1,0x14,0x74,0x2a,0x03,0x1d,0x2d,0x63,0xa0,0xc3,0xd1,0x0c,0x29,
0xf9,0xc0,0xd0,0x50,0x12,0x47,0xb0,0xb0,0xc2,0x79,0xc6,0xb4,0x11,0xd2,0xaa,0x1a,
0xf9,0x31,0xf4,0x4b,0x44,0x49,0x3c,0x05,0xd6,0x79,0x85,0x86,0x22,0x8c,0x36,0x6d,
0x13,0x5d,0x8c,0x81,0x56,0x38,0xbe,0x69,0x8b,0xa2,0xdf,0xf0,0xd7,0xdc,0x50,0x50,
0x12,0x6f,0x09,0x8a,0x32,0xf1,0x69,0xa9,0x2f,0x63,0x3f,0xce,0xae,0x61,0x75,0x8f,
0x05,0x46,0x04,0x8a,0xeb,0x64,0x09,0xeb,0x3a,0xc1,0x30,0xae,0xeb,0x10,0x16,0x57,
0x36,0x4b,0xae,0xf5,0x12,0x22,0x1c,0x4c,0x26,0x28,0x24,0x84,0xde,0x28,0x69,0x8b,
0xd2,0x27,0x8b,0xb2,0x1c,0x93,0x00,0x71,0x51,0x2c,0xfc,0xcd,0xc8,0x5f,0x40,0x3f,
0x83,0x57,0x1c,0xf9,0x72,0x15,0x66,0xe1,0x30,0x8c,0xa8,0x06,0xeb,0x65,0x12,0x81,
0x1f,0x92,0x6b,0xc0,0x01,0x6e,0xcc,0x0c,0x03,0x18,0x6b,0x80,0xe3,0x5a,0x11,0x23,
0xa4,0x28,0xb1,0xa6,0x15,0x83,0x76,0x0d,0x1c,0x24,0xf2,0x81,0xec,0x40,0x87,0x45,
0xbc,0x00,0x43,0x02,0xe1,0x07,0x35,0xfc,0x21,0x07,0x77,0x99,0x0e,0xd2,0x5e,0x1c,
0x6d,0x21,0x93,0xb0,0x24,0xed,0x06,0x7e,0x19,0xfd,0xbe,0x2d,0x74,0xb4,0x0c,0xe9,
0x64,0xd8,0x83,0x81,0x50,0x7e,0x27,0x4b,0xf6,0xdb,0x11,0x47,0x5d,0xdc,0x5a,0x53,
0x22,0x16,0x63,0x8d,0xc4,0xfd,0x70,0x8e,0x81,0x80,0x7e,0x9c,0x5b,0xf4,0x30,0x83,
0x02,0x01,0x70,0x12,0x74,0x81,0x21,0x37,0xf6,0xa7,0x62,0xe6,0xa3,0x8f,0x6d,0xe1,
0xc3,0x5b,0x0c,0x22,0x24,0x2b,0x06,0x11,0x0d,0x9f,0xc9,0x9e,0x87,0x21,0x4e,0x41,
0x26,0x8d,0x22,0xe4,0x3d,0x44,0x0b,0x14,0x70,0x27,0x52,0x1f,0xff,0xc2,0x03,0x50,
0x06,0x8e,0xd5,0x70,0x21,0xaf,0xb0,0xab,0xa5,0x51,0x66,0xe3,0xf7,0xbf,0x81,0xd4,
0x08,0x7d,0xd1,0x74,0x07,0x01,0x0b,0xb1,0x45,0xbc,0x41,0xed,0x7c,0x54,0xa1,0x00,
0xbe,0x5e,0xa5,0x55,0x0b,0x06,0x3e,0x14,0x37,0x1b,0x86,0x7e,0x16,0x66,0x0a,0x3f,
0xb7,0xcc,0x52,0x4f,0x91,0x2a,0xe1,0x25,0xd2,0x26,0x6b,0xb9,0x2c,0xa4,0x98,0x47,
0x00,0x59,0x0e,0x93,0x1b,0x60,0xed,0x18,0x4e,0x88,0x63,0x07,0xb9,0x41,0x7f,0xdb,
0x52,0xa6,0x84,0xbc,0x30,0x10,0x13,0x11,0x9a,0x63,0x38,0x6c,0x98,0xb9,0x05,0x48,
0xd6,0x40,0xee,0xe3,0x4c,0x42,0x44,0xe6,0xce,0x7e,0x57,0x20,0x3f,0x02,0x6e,0x1f,
0x80,0x42,0x0d,0xef,0xa0,0xaa,0xcf,0xb6,0x88,0xd8,0xd9,0xdb,0xc7,0x8f,0x23,0x92,
0x3e,0x08,0xeb,0x1a,0x18,0x6a,0xa0,0xd4,0x52,0x98,0xdb,0x7c,0x06,0x85,0xb3,0x6c,
0x39,0x47,0xba,0x83,0x75,0x88,0x4a,0x6c,0x1b,0x98,0x1b,0xc2,0x99,0x03,0x0f,0x06,
0x66,0x0c,0x74,0x29,0x28,0x84,0x13,0x96,0x20,0xc8,0x51,0xc2,0x7b,0x05,0x5e,0x1f,
0x3a,0x68,0x9d,0xd2,0xa6,0xaa,0x66,0x7d,0x7d,0x69,0x8d,0x73,0x3c,0x9a,0xbb,0x27,
0x23,0x84,0x43,0xb6,0x66,0xf9,0x59,0xfb,0x52,0x76,0x8c,0x5b,0x47,0x6e,0x86,0x1b,
0x3f,0x1a,0xd9,0x5a,0x8a,0xf7,0x32,0x71,0x76,0x4b,0x1a,0x35,0x59,0x60,0x6e,0x6b,
0xc5,0x2e,0x5a,0x81,0x14,0x76,0xef,0x4c,0x2c,0x46,0xe5,0x67,0x03,0x4e,0xc5,0x40,
0x98,0xc5,0x67,0xbd,0xb2,0x78,0xb3,0xe6,0xca,0xf0,0x16,0x57,0x91,0x64,0x11,0x55,
0xa4,0x24,0x44,0x29,0x26,0x83,0x77,0xe0,0x7b,0xda,0x97,0x44,0x31,0x7f,0x76,0x74,
0x45,0xb7,0xd0,0x6f,0x19,0x4c,0x67,0x35,0x56,0x2f,0x0d,0x8a,0x6b,0xa2,0xd6,0x54,
0x73,0xfd,0xf8,0x28,0xd6,0x6c,0x9c,0x54,0x6d,0x51,0x71,0x3f,0xf1,0xb3,0xde,0xf1,
0x2a,0x4d,0x2a,0x4b,0xe7,0x2c,0x88,0x26,0xb6,0xde,0x8f,0x2b,0xae,0x68,0x9e,0xad,
0xdd,0xd0,0xea,0x4d,0x52,0xfc,0x57,0xaf,0xc5,0x73,0x94,0x24,0xc8,0x17,0x60,0xc1,
0x80,0x30,0xca,0x04,0x2d,0xde,0x30,0x26,0xa6,0x1c,0xad,0x58,0x2c,0xa1,0xcd,0x98,
0x26,0x51,0x26,0x2e,0x83,0x60,0x81,0x6f,0xc2,0x94,0x96,0x83,0x43,0xf0,0x72,0xe5,
0x20,0x36,0xf0,0x04,0x87,0xa4,0x77,0x23,0xcc,0x61,0x6a,0x55,0x88,0x10,0x31,0x5e,
0xb0,0xbd,0xda,0x42,0xbb,0x76,0x6c,0x0e,0x0c,0xbf,0x4b,0xbb,0x2a,0x95,0xee,0xd4,
0x5b,0xb7,0x85,0xc1,0xc0,0x9f,0x50,0xf4,0xa8,0x89,0x45,0xd2,0x6f,0xa8,0x3d,0xf3,
0xa8,0x9a,0x35,0x6f,0x8c,0xf3,0x43,0xbe,0x42,0xd8,0x85,0x6e,0x38,0xa5,0xc9,0xcf,
0x6b,0xde,0xd8,0xa1,0x08,0xf2,0xad,0x5c,0x9f,0xda,0xe2,0xde,0xda,0x3a,0xa8,0xf4,
0x81,0x4a,0xaf,0x48,0x07,0x08,0x47,0x74,0xa4,0x79,0x6b,0x0d,0xad,0x00,0x53,0x17,
0xa7,0xfd,0xe1,0x8e,0xf2,0x7f,0x81,0xb5,0xf5,0x64,0x5b,0x86,0x53,0x3f,0xd9,0x96,
0x27,0x6a,0x30,0x48,0x17,0xfe,0x8c,0xc3,0x2b,0x90,0x1f,0xc0,0xcc,0x0e,0xb7,0x90,
0xff,0x6c,0x3d,0xbd,0x07,0xd0,0x9f,0xb0,0x94,0x7b,0x4a,0x7d,0xb4,0x8b,0x50,0x40,
0xe7,0x16,0xbf,0x87,0x2f,0xb4,0x07,0x27,0x3f,0x01,0xa7,0xa3,0x83,0x36,0xf0,0xaa,
0xf2,0x3b,0x05,0x61,0x6e,0x3d,0x2d,0xc5,0x72,0xaf,0xa9,0xc2,0x91,0x98,0x5b,0x4f,
0xdf,0x1e,0x9d,0x9e,0xbe,0x7e,0xf7,0xbd,0x5d,0xf2,0xc9,0x36,0xf4,0xaa,0xdc,0x3f,
0x19,0x57,0x59,0xe8,0x61,0x38,0x86,0x2f,0x46,0xaf,0xd8,0x52,0xa5,0x51,0xf1,0xa9,
0xee,0x33,0xd6,0x30,0x9a,0xb3,0xae,0x80,0xa4,0xb1,0xf5,0x34,0x1c,0x47,0x41,0x5d,
0x25,0xa5,0x79,0x3b,0x55,0x50,0x63,0xdb,0x7a,0x6a,0x45,0xd4,0x7b,0x60,0x52,0xfb,
0xd1,0xe0,0x51,0xaf,0x00,0x46,0x52,0x34,0xb5,0xce,0xaa,0xba,0x86,0x63,0xa2,0x06,
0xb7,0x84,0x0a,0x1b,0x7c,0x8a,0xc6,0xc2,0x93,0x6d,0xae,0x55,0xc0,0x0b,0xcf,0x33,
0xce,0xe1,0x3d,0x17,0x45,0x9a,0xf1,0x4a,0x24,0xd9,0x8d,0xfa,0xcb,0xf1,0x39,0xd1,
0x95,0x6e,0xd6,0xac,0xa0,0x2d,0x81,0xe7,0xb4,0x80,0x04,0xa8,0x38,0x3c,0xe1,0x7c,
0x1e,0x6e,0x9d,0xc4,0xd8,0x15,0x31,0x04,0xd6,0x90,0xa1,0xca,0xe1,0x0f,0x49,0xed,
0x34,0x87,0x05,0xe8,0xf0,0x00,0x5a,0x68,0x7c,0xac,0xa2,0x79,0xf4,0xe3,0x8b,0x56,
0x35,0x05,0x71,0x5b,0x30,0x21,0xf6,0x4b,0x8c,0xda,0xd1,0x73,0xb4,0x8e,0xbc,0x4c,
0xfc,0xd8,0xd6,0x53,0x22,0xac,0xce,0x07,0x6c,0x93,0x1b,0x74,0x49,0xc7,0x41,0x98,
0x35,0x7c,0xd0,0x8b,0xbf,0x72,0xf8,0x49,0xdc,0x19,0x26,0xe8,0x19,0x34,0xaa,0xf5,
0x7f,0xf6,0x18,0x8d,0x19,0xb8,0x66,0x70,0xf6,0xbc,0xb3,0x40,0xac,0xee,0x96,0xd9,
0x98,0xdc,0x7a,0xfa,0x9a,0x24,0xe6,0x14,0xac,0xe5,0x42,0x57,0x58,0x94,0x4a,0x44,
0x7d,0x0f,0xdf,0x15,0x4e,0x80,0x29,0x00,0xe7,0x40,0x61,0x7a,0xb8,0xd5,0xdb,0x42,
0xdd,0x17,0xfe,0xee,0x6f,0x09,0x64,0x91,0x87,0x5b,0xa0,0xe9,0x57,0xac,0x47,0x09,
0xe2,0x8f,0x7e,0xa4,0x91,0x4d,0x0e,0x7c,0x19,0x14,0xbf,0xf5,0xf4,0x91,0xd7,0xad,
0x5b,0xf0,0x1a,0x88,0x51,0x0e,0xd6,0xac,0x69,0x53,0x9c,0xd5,0x07,0x5d,0x54,0x3d,
0x82,0xf8,0x0a,0x70,0xc1,0xe1,0xf1,0x9e,0xaa,0xaa,0xb2,0x38,0xeb,0x03,0x85,0x02,
0x3e,0x01,0x86,0x0e,0x7f,0xbf,0x04,0x3d,0xfb,0x4d,0x18,0x5f,0x6a,0xf0,0x4a,0xd0,
0x80,0x81,0x95,0x06,0x13,0xe8,0x59,0x9e,0x2f,0xb2,0xc1,0xf6,0xf6,0x34,0xcc,0x67,
0xcb,0x21,0x68,0xc3,0xf3,0xed,0x20,0x9e,0xce,0x97,0xf1,0x74,0xdb,0x62,0x8a,0xdb,
0x39,0x68,0xa4,0xdb,0x18,0x8b,0xb6,0x7d,0xe7,0x41,0x9c,0x6f,0xd0,0xef,0x31,0x87,
0xb1,0xe7,0xa0,0x11,0xe0,0xb9,0xc8,0x9f,0x86,0x91,0x8f,0x3d,0x00,0x31,0x78,0xb8,
0x15,0x27,0x60,0x8a,0xc4,0xd0,0x63,0x41,0xac,0x1f,0xc8,0x07,0x23,0x47,0xc7,0xc1,
0x28,0x01,0xf3,0x00,0xc5,0x0c,0x69,0x2f,0x4a,0x35,0x90,0xce,0x3e,0x32,0xf7,0x6d,
0x6b,0x5f,0xea,0x13,0xa8,0xbe,0x80,0xb6,0xa2,0xe9,0xfe,0x75,0x0c,0xf8,0x02,0x03,
0xf1,0x98,0x8d,0x58,0x3e,0x95,0x73,0xa2,0x3a,0xb6,0xf5,0x54,0xff,0x14,0x7f,0xfd,
0x97,0xff,0xf3,0x64,0xdb,0x2f,0x2f,0x36,0x12,0xa8,0x47,0x51,0x54,0x81,0x2f,0x67,
0xa5,0x3d,0xfd,0x40,0x1b,0x26,0xfa,0xac,0x93,0xa1,0x6f,0x49,0x12,0x45,0x06,0x27,
0x15,0xb8,0x4a,0xf6,0x96,0x27,0x9b,0x2e,0xf0,0xff,0x74,0x0e,0x05,0x96,0x0b,0xad,
0x9b,0x35,0xab,0x57,0x13,0xae,0xd2,0x40,0xef,0xa4,0xf2,0x75,0xa4,0xfa,0x35,0xbc,
0xe0,0x28,0xcf,0x41,0x93,0xa9,0xe5,0x03,0x3e,0x7d,0xae,0x62,0x03,0x5d,0xc5,0x06,
0x0c,0x17,0xe8,0xf6,0x2a,0xd8,0x00,0x43,0xf8,0x08,0x46,0x47,0x0d,0x1b,0xf8,0x65,
0x19,0xba,0x1d,0xa8,0x91,0xfc,0x1b,0x0f,0xe9,0x05,0x17,0xac,0x1d,0x93,0x02,0xf4,
0x1b,0x06,0x25,0x41,0xac,0x19,0xd5,0xd0,0x87,0x85,0x3a,0x0a,0xc6,0x75,0x03,0xb3,
0x88,0x16,0x17,0xf1,0x29,0xef,0x39,0xde,0xb5,0x54,0x64,0x47,0xf8,0x7f,0x72,0xa1,
0x9e,0xad,0x62,0x50,0xca,0xf3,0x70,0x24,0x72,0x74,0x2e,0x64,0xb0,0xb2,0xfd,0x08,
0x0d,0xe3,0x34,0x59,0x4e,0x67,0xec,0x85,0x0c,0x22,0xb0,0x56,0xd0,0xb6,0x46,0xc9,
0xdd,0x81,0xe7,0x40,0xf0,0xbc,0xb4,0x85,0x32,0xa3,0xc8,0xb5,0x3b,0x53,0x36,0xf4,
0x3c,0x81,0xff,0xf8,0x02,0x23,0x25,0x40,0xa3,0xe3,0xce,0x55,0xad,0x4c,0x39,0x45,
0x38,0x0c,0x65,0xa0,0x1a,0x85,0x46,0xbd,0x90,0x43,0x66,0x6b,0x5b,0x97,0x45,0xe2,
0xe5,0x57,0xe5,0xb9,0xce,0x7d,0x98,0x1e,0x2c,0x08,0x3f,0xba,0x85,0xd5,0x28,0xc3,
0x3d,0xb7,0x9e,0x3e,0xef,0xfd,0xc7,0xbf,0xff,0xa0,0x14,0x2c,0x09,0xdd,0xc0,0xac,
0xa1,0x22,0x1b,0x72,0xaf,0x16,0x72,0x1f,0x20,0xf7,0x7f,0x03,0xe4,0x7e,0x2d,0xe4,
0x1d,0x80,0xbc,0xf3,0x1b,0x20,0xef,0xd4,0x42,0xde,0x05,0xc8,0xbb,0x77,0x42,0x2e,
0x4c,0x9c,0x36,0x0c,0x62,0x5c,0x39,0x65,0x6d,0x3b,0x89,0xaa,0xd7,0x9b,0x8e,0x17,
0x05,0xee,0x7d,0x72,0x76,0xfa,0xfe,0xdd,0xd9,0x49,0x61,0xbd,0x59,0xb3,0x4d,0x24,
0x55,0x9a,0x6e,0xdd,0x91,0x52,0x93,0xc2,0x98,0xc9,0x77,0xb6,0x7e,0xfc,0xe3,0x87,
0x3f,0x16,0x9b,0xb6,0x07,0xa6,0xa3,0x3e,0x35,0x24,0xb3,0xf8,0x9c,0x32,0xa0,0x74,
0xe3,0x7e,0x01,0xac,0xf9,0x6c,0x9e,0x24,0xf9,0xac,0x28,0x2d,0xca,0x28,0xa5,0x36,
0xcf,0xa8,0xb0,0x96,0x0d,0x36,0x77,0xdf,0xa4,0xa9,0x99,0x9f,0x2e,0x36,0x6d,0x09,
0xcb,0x7e,0x6d,0x43,0x13,0x1f,0xe5,0xf0,0x46,0xed,0xbc,0x84,0xa2,0x5f,0xdb,0xcc,
0xd4,0x47,0x45,0x6d,0xa3,0x66,0xbe,0x87,0xa2,0x5f,0x8d,0x36,0xb4,0xcc,0x37,0x45,
0x1b,0x96,0xfd,0xda,0x86,0xfc,0x74,0xb4,0x29,0x21,0x1c,0x41,0xd1,0x9a,0x66,0xac,
0x65,0x6d,0xf1,0x4b,0xe5,0x5e,0xd0,0xfc,0xd2,0xbc,0x60,0x47,0xad,0xd5,0x4b,0x02,
0x9b,0x59,0x23,0x29,0x0d,0x40,0x43,0x7c,0x1b,0xc6,0xcb,0x12,0x6e,0xbe,0xfd,0xe6,
0xd1,0xc3,0x7e,0xff,0xa0,0x62,0xfc,0xc6,0x18,0xc6,0xca,0xef,0x1c,0x69,0xb6,0xf5,
0x74,0xe7,0xce,0xe6,0x4e,0xa3,0x72,0x6b,0x0f,0xd6,0x23,0x40,0x37,0x19,0x05,0x53,
0x7f,0xb4,0xaa,0x50,0x7b,0xce,0x67,0x61,0xc6,0xb2,0x2a,0xcb,0x31,0x26,0x2d,0x5d,
0xc6,0x19,0xef,0x57,0x46,0xe8,0x1f,0xa6,0xdd,0x38,0x12,0x53,0x78,0x4a,0x7c,0x01,
0x9c,0x00,0x44,0x95,0x8c,0x53,0x06,0xa5,0x6b,0xb9,0x98,0xa6,0x60,0x18,0x43,0x05,
0x6f,0x8d,0xb2,0xc6,0x2d,0xbd,0x48,0xfd,0x29,0x89,0x3d,0xdc,0x1a,0x9d,0x51,0xb4,
0x5a,0x26,0xb7,0x10,0x46,0x4b,0xb0,0xd0,0xe7,0x02,0x96,0xe8,0x22,0xf0,0xc4,0x51,
0xbc,0x92,0x6d,0x66,0xfe,0x55,0x80,0xce,0x61,0xf4,0x31,0xef,0x74,0xc8,0xf1,0x85,
0x46,0x71,0x14,0x78,0x15,0xb2,0xbe,0xc4,0xde,0xae,0x48,0x69,0xab,0x67,0x7d,0xe8,
0x81,0xdb,0xaa,0xe2,0x64,0x2a,0xea,0x76,0xab,0x6a,0xf2,0x54,0x50,0xed,0x96,0x5d,
0x9a,0x5e,0x3c,0x7d,0x8e,0x68,0xec,0x95,0xe6,0xd1,0xa9,0xfa,0x36,0xc8,0xfd,0x1a,
0x3d,0x66,0xbf,0x0f,0x48,0xfe,0xdf,0x62,0xe7,0xe1,0x9e,0x78,0xf5,0x6b,0x01,0x9d,
0xd6,0x30,0xdc,0xbe,0x92,0x36,0x66,0x77,0xb4,0xf8,0xed,0x83,0x35,0xc8,0xb5,0xba,
0xdc,0x7b,0x0e,0xce,0x2a,0xe9,0xd1,0xc5,0x51,0x24,0xcb,0x9c,0x6b,0xb8,0xf4,0xdb,
0xf5,0x76,0xba,0xd4,0xff,0xae,0xf7,0x68,0xaf,0x84,0x03,0x9b,0x2a,0xad,0x85,0xa9,
0xdc,0x7b,0x1a,0x96,0x7e,0xe1,0xb4,0x6d,0x8d,0x49,0xc6,0x68,0x6e,0x3d,0x2d,0x80,
0x74,0x81,0x62,0x78,0xa5,0x0d,0x93,0x9e,0xd7,0x57,0x79,0x93,0xd8,0x15,0x38,0x9a,
0xf2,0x8e,0x2a,0xaf,0xc2,0x0d,0xaa,0x54,0x0d,0xdd,0x54,0x92,0x5b,0x61,0xee,0x70,
0x5d,0x46,0xa9,0x4b,0x15,0xbd,0x26,0xc4,0x39,0xa3,0x84,0x54,0x69,0xfa,0x3d,0x0b,
0x51,0x9d,0x7e,0xda,0x05,0x16,0xd4,0xef,0xf5,0x0e,0x7a,0x65,0x1e,0xf4,0x1b,0x81,
0x93,0xf7,0x41,0x81,0xf7,0xf6,0x7e,0x1f,0xf8,0x00,0xd3,0xe9,0xbe,0xb7,0xf7,0xfb,
0xf6,0xdf,0xeb,0xef,0x39,0x43,0x78,0x08,0x63,0x80,0x77,0x6a,0x14,0x0f,0x7f,0xaf,
0x61,0xf4,0xdc,0x66,0xf6,0xa1,0x95,0x9e,0x6e,0x65,0xff,0x77,0x6a,0x64,0xc7,0x69,
0xe3,0x11,0x0e,0x65,0x47,0xb5,0xf1,0xa8,0x62,0x24,0xae,0x38,0x58,0xcf,0x45,0x5c,
0x4e,0x51,0xcb,0x27,0xde,0x2e,0xf3,0x80,0x24,0xc6,0x3a,0x81,0x85,0x71,0x40,0x95,
0xde,0x01,0x41,0x4e,0xf6,0x92,0xa0,0x5f,0xe3,0x03,0xa8,0x94,0x6f,0x15,0x63,0x30,
0x76,0x7a,0x51,0x05,0x58,0x33,0xc8,0xa2,0x0f,0x05,0x59,0xf8,0x86,0x4e,0x14,0x46,
0x41,0xad,0xf4,0xad,0x32,0x03,0x30,0xa5,0x8c,0xb4,0xf0,0x06,0x22,0xbb,0xdb,0x98,
0x3c,0x3b,0x79,0x73,0x72,0x4c,0xd9,0x67,0x78,0x1b,0x5b,0x66,0xd2,0x52,0xdd,0x67,
0x21,0x89,0x42,0x67,0x1a,0xe1,0x26,0x7c,0xc7,0x04,0xb9,0xa0,0x35,0x09,0xc5,0x41,
0xa0,0x8f,0x93,0xb6,0xda,0xd6,0xf7,0x41,0xb0,0xce,0x97,0x19,0xb4,0x88,0x5e,0xaa,
0x8c,0x53,0xc3,0xd8,0x66,0xa5,0x0a,0xdb,0x34,0x76,0xa5,0x79,0x63,0x2b,0x4a,0x8e,
0xda,0x4f,0x51,0x9c,0x95,0x72,0x94,0x43,0x24,0x2b,0xa5,0xe8,0xe2,0xea,0x9c,0xb6,
0x30,0xca,0x42,0xf4,0x54,0x85,0x04,0x83,0xbe,0x51,0x23,0x50,0xad,0x49,0x83,0xd6,
0xa3,0x24,0x0b,0xee,0x9c,0x32,0x2a,0x75,0xb7,0xb2,0x68,0xc6,0x84,0x9b,0x7d,0x6b,
0xec,0x18,0x0a,0xc3,0x4c,0xe2,0xca,0x95,0x8a,0xdf,0x97,0x11,0x74,0xea,0x29,0x5a,
0x4e,0x82,0x7e,0x67,0x77,0xeb,0xc3,0x08,0xb2,0x0e,0x5e,0x9c,0x84,0xd9,0x6a,0xeb,
0xe9,0x3b,0xfc,0x23,0xd2,0x24,0x99,0xff,0x36,0x70,0xd9,0x75,0x80,0xf2,0xf0,0x0c,
0xf7,0x8d,0xe8,0xf7,0x7a,0xcc,0xd8,0xde,0x04,0x0e,0xca,0x28,0x5a,0x98,0x45,0xf4,
0x71,0x7c,0x65,0x1d,0x37,0x91,0xa1,0x8f,0x66,0x8d,0x97,0x95,0x45,0x76,0x21,0x45,
0xc1,0x55,0x10,0x55,0xeb,0x53,0x36,0x28,0xd0,0x5c,0xd6,0xc1,0xa2,0xb5,0xc0,0xa1,
0xe7,0x95,0x5a,0x55,0xdd,0x6a,0xb5,0xd5,0x45,0x8b,0x1c,0x0a,0x88,0x56,0x3b,0x9c,
0xec,0x36,0xc0,0xa7,0xee,0x5a,0xee,0x26,0xa3,0xf6,0xab,0x3b,0x8c,0x1f,0xe9,0xc4,
0x16,0xeb,0x54,0xcf,0x7b,0x75,0x85,0x5e,0xfd,0x2a,0x8a,0xca,0x23,0xe8,0x5e,0x3b,
0x0f,0xf7,0xea,0xbd,0x12,0x55,0x1b,0x35,0xb5,0x63,0xe8,0xfd,0x7e,0x63,0xe8,0x6f,
0x3c,0x86,0xfe,0x5e,0x17,0x06,0xd1,0xbf,0xfc,0x9d,0xc6,0xd0,0xff,0xfd,0xc6,0xb0,
0xb3,0xf9,0x18,0x2e,0x61,0x08,0x7b,0xbf,0xd7,0x10,0x76,0x7e,0xbf,0x21,0xec,0x6e,
0x3c,0x84,0x3d,0x1c,0x42,0x6f,0x7f,0xa3,0x31,0xa8,0xe5,0xa2,0xff,0xaa,0x5c,0x6d,
0xf7,0xb6,0xb7,0x65,0xc6,0x2b,0x90,0x3b,0x63,0x7f,0x41,0x11,0x0b,0xe4,0x20,0xc5,
0x3e,0x65,0xcb,0x74,0x02,0xd2,0x5a,0x46,0x95,0x75,0x64,0x01,0x8c,0x3e,0x9d,0x86,
0x57,0x1c,0x7a,0x6b,0x76,0x3d,0xdb,0x08,0x2b,0x5b,0x60,0xc8,0x32,0x07,0x34,0x73,
0xda,0x3a,0xce,0x26,0xc9,0xbb,0x38,0x61,0xdc,0xc0,0x00,0x5c,0x30,0x2c,0xa1,0x56,
0xea,0x8b,0x9f,0x93,0x61,0x26,0x30,0x85,0x24,0x45,0xd7,0x0e,0x00,0x00,0xc2,0x10,
0xe8,0x8f,0xc5,0x30,0x22,0x0c,0x15,0x00,0x40,0x08,0x9c,0x23,0xa2,0x54,0x6a,0x37,
0x8c,0x38,0x85,0xbe,0x05,0x59,0x5b,0xa0,0x7f,0x25,0x23,0xe1,0x3a,0xf7,0x17,0x19,
0xc6,0xde,0xbe,0x79,0xfd,0xee,0xe4,0xe8,0x03,0x03,0x12,0xc2,0x9f,0x2f,0xa2,0x30,
0x5f,0x82,0xd8,0x6d,0x72,0x48,0x2c,0x46,0x1c,0x63,0x14,0x1a,0x16,0x1d,0x81,0xb8,
0x35,0x69,0xe1,0x00,0x80,0x37,0xa3,0xd0,0x39,0x09,0x7e,0x8c,0x81,0xb4,0x18,0xec,
0xa4,0x80,0x71,0xaf,0xd8,0x0a,0x07,0xc9,0xdc,0x3a,0x70,0x83,0xb6,0x01,0x3e,0xe8,
0x09,0x7e,0x24,0xfc,0x9b,0x90,0x52,0xac,0x8d,0x9f,0x77,0xe2,0x24,0x05,0x4d,0x2a,
0xfc,0x15,0x80,0x65,0x09,0x47,0x72,0x29,0x68,0x63,0xb4,0xb4,0xa3,0xf0,0x12,0x47,
0xef,0xa7,0xe8,0x71,0xbe,0x4e,0xd2,0xcb,0x0c,0x87,0x0a,0x75,0x27,0xa1,0x46,0x00,
0x98,0xf9,0xc3,0x24,0xc7,0xae,0xad,0x60,0xa8,0xac,0x39,0x0c,0x31,0xf0,0xd3,0x4f,
0x57,0x9e,0x82,0xf6,0xe2,0xf9,0x4f,0x2f,0xdf,0xbc,0x7f,0xff,0x61,0x1b,0x7e,0x9c,
0x9d,0x1e,0xbd,0xc3,0xf8,0x15,0x76,0x5f,0x43,0xf3,0x43,0xb9,0xfd,0x25,0x7e,0x59,
0x86,0xa0,0x13,0xa1,0x68,0xc2,0xb8,0x46,0x0c,0x74,0xcc,0xc2,0x5c,0xfc,0x2f,0x54,
0x8b,0xc5,0x72,0xa1,0x60,0x61,0x35,0x1c,0x43,0x1b,0xba,0x97,0xc1,0xf4,0x42,0xdf,
0x3a,0x57,0x18,0x32,0x13,0x88,0x45,0xe0,0x5f,0x66,0x58,0xe1,0x31,0x4e,0x24,0x3c,
0x08,0x4e,0x77,0x17,0xe3,0x7e,0xf7,0x04,0xc8,0x75,0xe6,0x59,0xd3,0xe8,0x06,0xf2,
0x7a,0x76,0x1c,0xef,0x22,0xb9,0x06,0x1a,0x41,0x5c,0x86,0x7a,0xf3,0x15,0xc8,0x02,
0xda,0xe3,0x88,0x4f,0x42,0x7d,0xa8,0x91,0x95,0x81,0xe6,0x74,0xc0,0x11,0x8f,0xb9,
0x1f,0x5d,0xa2,0x57,0x43,0x93,0xe9,0xd1,0xe9,0x6b,0xc1,0xe1,0x47,0x11,0xe0,0x43,
0x67,0x28,0x14,0x4d,0x0e,0xba,0xc1,0x7c,0x8f,0x0a,0x3b,0xe2,0x50,0x74,0x76,0xf7,
0xda,0x42,0x21,0xe9,0x50,0xec,0x3e,0xa4,0x64,0x25,0xaa,0x0e,0xac,0xb8,0xf9,0xa2,
0xdb,0x6b,0x5e,0xb5,0x30,0x14,0x13,0xbe,0x73,0xf2,0x52,0x7c,0xfe,0xf3,0x9f,0x31,
0x60,0x4a,0x66,0x54,0xbc,0x12,0x4f,0x44,0x57,0x3c,0x83,0x7f,0x07,0xf0,0xfb,0xa9,
0xe8,0xc1,0xef,0x1e,0xfe,0xe6,0x30,0x1c,0x0d,0x6f,0x3c,0x8c,0x9b,0x18,0xec,0xa6,
0xea,0x29,0xf8,0xcd,0x7e,0x57,0x7c,0x27,0x28,0xbb,0x65,0x94,0x4c,0x7b,0xdd,0x26,
0x27,0xba,0xf4,0x6f,0x9a,0xb2,0xc1,0x1b,0x6e,0xb0,0x2d,0x7a,0x41,0x67,0xb7,0xd5,
0x02,0x64,0xaa,0x31,0xb4,0xc4,0xb6,0xea,0x7f,0xab,0xd0,0x5a,0x14,0xc6,0xdc,0x73,
0xd9,0x1a,0x01,0x05,0x4c,0x37,0x7b,0x00,0xa8,0x69,0x8d,0xed,0x3b,0x8d,0x81,0x07,
0x0e,0xdc,0x7e,0x97,0x4f,0x2a,0x30,0xd6,0x4e,0x3f,0x9c,0x9c,0x9d,0x9c,0xff,0x44,
0x1e,0xe5,0x33,0xc0,0x05,0x07,0xf0,0xb0,0x37,0x78,0x00,0xad,0x20,0xd3,0x1b,0x88,
0xc6,0x30,0xf8,0x35,0x0c,0xd2,0x46,0x1b,0xf8,0x21,0x3c,0xf1,0x67,0x78,0x5a,0x75,
0x07,0xd8,0xff,0x55,0x6f,0x20,0x7a,0x6d,0xb1,0xe8,0xdd,0x0c,0xe8,0xe8,0x12,0xfe,
0xa4,0x60,0xd8,0x2e,0xfe,0xec,0xdf,0xf0,0x51,0x39,0xfc,0x49,0x6f,0x1f,0xef,0x89,
0x5b,0x56,0x9d,0xc9,0x15,0x3c,0x10,0xb5,0xed,0xe0,0x67,0x78,0xa8,0x6e,0x07,0x07,
0x2c,0xdb,0xd9,0x37,0xed,0xec,0xa8,0x76,0x7a,0x5e,0xb7,0xab,0xda,0x41,0x4f,0x30,
0x34,0x53,0xd7,0x0e,0x7e,0xc6,0x66,0xa8,0x9d,0x1e,0xb7,0xd3,0xad,0x1a,0xcf,0xe3,
0xca,0xf1,0x74,0xf7,0x68,0x8a,0x6e,0x0f,0xee,0xd9,0x13,0x15,0xc4,0xa3,0x64,0x1c,
0xa0,0x97,0xa9,0x49,0xe6,0x41,0x4b,0xe2,0x36,0x9c,0x88,0xe6,0x7d,0xf9,0x46,0xce,
0x61,0xa3,0x71,0xa0,0x3f,0xd1,0x17,0x8f,0x92,0x07,0x1f,0x1e,0x1e,0x02,0x0e,0xd0,
0xe1,0xd8,0x30,0x45,0xb3,0x41,0x03,0x26,0x94,0x4b,0xc5,0xf5,0xd5,0xd0,0x89,0x6b,
0xd5,0xf2,0xd7,0xb4,0x20,0x71,0xa1,0xfa,0x67,0x17,0x0a,0xc7,0xe2,0xdb,0x6f,0x5d,
0x1a,0xf9,0xa4,0xbe,0x5c,0x18,0xe8,0x0b,0xab,0x4f,0xe1,0xf8,0x40,0x82,0x51,0x5f,
0x87,0xf4,0x55,0xd6,0x5b,0x01,0x5e,0xe5,0xaf,0x9e,0xfa,0x05,0x78,0x36,0x3f,0x57,
0xfa,0x67,0xdf,0xbc,0xed,0xaf,0x2e,0xb4,0xd6,0x09,0x2b,0x68,0x61,0x31,0x80,0xd2,
0x5a,0xa0,0x78,0x79,0x77,0x21,0xf4,0xba,0x44,0xf3,0x2d,0xef,0xe7,0x04,0x56,0x4f,
0xa3,0xdd,0x68,0x71,0x1f,0x6f,0xef,0xd9,0xfd,0x6c,0x70,0x14,0x9a,0xb3,0xb4,0x03,
0x3d,0x87,0x73,0x67,0xfe,0xe6,0x7a,0xf0,0x98,0xe2,0xd7,0xe0,0x76,0x2e,0xb1,0x6f,
0x50,0xaf,0x49,0x8e,0x66,0x44,0x12,0x1c,0xfd,0x46,0x82,0xd1,0xf5,0xbc,0x2c,0x02,
0x16,0x8a,0xc9,0x36,0xfa,0x2d,0x39,0xf1,0x03,0x6b,0x4a,0x70,0xa9,0xc6,0xb0,0x3c,
0x35,0x0b,0xe9,0xb7,0x85,0xce,0x9b,0xfb,0x08,0x28,0x11,0x03,0x10,0x5f,0xc7,0xb9,
0x06,0xd4,0x6f,0x01,0x5b,0xe9,0x12,0x83,0xe9,0xb7,0x5a,0x85,0x29,0xd1,0x7d,0x62,
0xe2,0xe2,0x4e,0xc5,0xd4,0x6c,0x1f,0x98,0x5c,0x03,0x25,0x6e,0x43,0x58,0xdf,0xf1,
0x6c,0xb6,0xea,0xee,0xed,0xba,0x4e,0x2f,0x8a,0x9d,0x5e,0x40,0xa7,0x5d,0xfa,0x31,
0x3d,0xbc,0x28,0x74,0x6b,0x01,0x6d,0xff,0xf7,0xb3,0xf7,0xef,0x3c,0x1a,0x4d,0x93,
0x7e,0x66,0x39,0x8a,0xcd,0x70,0xb2,0x6a,0x2e,0x80,0x43,0x0e,0x2c,0x74,0xaf,0xed,
0xc7,0xb0,0xd8,0x8f,0x5f,0xa0,0x1f,0xa6,0x65,0x2f,0x43,0x95,0x81,0x28,0x61,0x0d,
0x39,0x35,0x35,0x56,0xaf,0x34,0x32,0xbb,0xc8,0x42,0x7b,0x74,0x28,0x4e,0x63,0x15,
0xfb,0xf0,0x8b,0x17,0x05,0xf1,0x14,0x24,0xf8,0x7d,0x68,0x7e,0xbf,0x82,0x3a,0xca,
0xc8,0x77,0x79,0x10,0x7b,0xde,0x25,0x4f,0xfd,0xe5,0x53,0xf7,0x82,0xd9,0xd0,0x2f,
0x9f,0x7a,0x17,0x92,0x13,0xfd,0xf2,0xa9,0x7f,0x21,0x39,0xd1,0x2f,0x9f,0x76,0x2e,
0x24,0x27,0xfa,0xe5,0xd3,0xee,0x85,0xe4,0x44,0xbf,0x7c,0xda,0xbb,0x70,0x67,0xa9,
0xd0,0x0b,0xcd,0xf5,0x27,0x29,0x08,0xd5,0x97,0x48,0x50,0xea,0x13,0xbe,0x9d,0x87,
0xa3,0xf7,0xf8,0x0e,0xd8,0x61,0x16,0xa8,0x97,0x24,0xca,0xdf,0xa0,0x02,0x57,0xf8,
0x00,0x4a,0x95,0x5d,0x1a,0xde,0x82,0x1c,0x47,0x15,0x8e,0x6c,0x45,0x50,0xfa,0x92,
0x64,0x41,0xe1,0xb3,0x99,0x3a,0x75,0x25,0x28,0x55,0x2f,0xa8,0x49,0x80,0x3f,0x31,
0x07,0xdd,0x32,0x9c,0x83,0x7e,0x80,0x59,0x6d,0xf1,0xcc,0x54,0x32,0x11,0xa7,0x2f,
0x29,0x63,0xf3,0x80,0x61,0x81,0x56,0xc2,0x1d,0xc5,0x5d,0x87,0x0c,0x56,0x22,0x2a,
0x12,0x19,0xa9,0x0c,0x14,0xf4,0x8f,0x6e,0x98,0x19,0x6a,0xb5,0xa0,0x63,0xb6,0xcd,
0x56,0x3e,0x85,0xee,0x34,0xf0,0x70,0x44,0x1c,0x30,0x20,0x3e,0xee,0xf1,0xcb,0x32,
0x58,0xe2,0xfe,0x88,0x18,0x06,0x60,0x8d,0x8e,0xe5,0xf1,0x29,0x8e,0x8f,0xa2,0x63,
0x21,0x9e,0x78,0x9d,0xe3,0x33,0x2a,0x63,0x49,0x3c,0x0a,0x54,0x20,0xf0,0x24,0x9c,
0xd2,0x51,0x2c,0x06,0x36,0x03,0xe5,0x11,0xf3,0x84,0x60,0x08,0x7c,0xd3,0xe7,0x0e,
0x9a,0xd3,0x1a,0x7e,0xce,0x07,0xb2,0x10,0x02,0x74,0x49,0x2c,0xe3,0x8c,0x14,0x43,
0x3a,0x4e,0x86,0x5d,0x4c,0x41,0xd9,0x56,0x07,0xda,0x00,0x1a,0x9d,0x16,0x9b,0xa8,
0x33,0x67,0xb8,0x21,0xdd,0xc8,0xe4,0x29,0x81,0x38,0xe6,0x60,0x6b,0x58,0xc8,0x59,
0x44,0x68,0xbc,0x9e,0xa1,0xc2,0x48,0x1b,0x37,0xfe,0x10,0x51,0xc1,0x9e,0x20,0x84,
0xcb,0xd0,0x30,0xba,0x92,0x5a,0x46,0xf4,0xc0,0xc7,0xc0,0x93,0x73,0x85,0xcd,0xac,
0xd4,0x5c,0x81,0x46,0x8d,0x2d,0xe8,0x27,0x4c,0xbf,0x6e,0x9e,0x78,0x52,0x0e,0x31,
0x44,0xde,0xe6,0x84,0xa0,0xf5,0x5e,0x36,0xd5,0x92,0x72,0xd3,0x8a,0x63,0x05,0xb9,
0x16,0xac,0xca,0x9a,0x55,0x72,0xdb,0xb0,0x74,0xee,0x2b,0xaa,0x83,0xdf,0xd4,0x03,
0xf8,0x4b,0x6d,0xc3,0xdf,0x71,0x32,0xa2,0xc4,0xc6,0x1e,0x0f,0x49,0xad,0x1f,0x06,
0x23,0x3b,0x98,0xa7,0xcb,0x80,0x5f,0xe0,0x90,0x30,0x4b,0x38,0xbc,0xc4,0xa5,0xc8,
0x22,0xbe,0xc2,0x14,0x79,0xc6,0xa4,0x78,0xd8,0x6b,0x14,0xd2,0x6a,0x8b,0x66,0x6a,
0xad,0x73,0x95,0x27,0x9b,0x44,0x44,0xa1,0xdc,0xcf,0x86,0x8d,0x00,0x82,0x31,0xe3,
0x96,0x24,0xc9,0x11,0x06,0x88,0x61,0x7a,0x69,0x9e,0x3a,0x52,0x78,0xfd,0xc5,0x02,
0x08,0x31,0xe2,0x11,0x27,0xb1,0x6b,0x3a,0xc8,0x63,0x87,0x0c,0xc8,0xb6,0x19,0xc8,
0xe2,0xe8,0x28,0x43,0x00,0x8d,0x04,0x3c,0xbf,0x27,0x7c,0x52,0x97,0x99,0x76,0xaf,
0x41,0xf3,0xbd,0xa4,0xd7,0x64,0x25,0x19,0x38,0xac,0x79,0x03,0x74,0x58,0xbb,0xea,
0x18,0x23,0x5a,0x05,0x18,0xf5,0xe6,0xb3,0xee,0x3d,0x0d,0xe4,0x69,0xbb,0xe7,0x80,
0xc1,0xc0,0xcf,0x09,0xcd,0x16,0x67,0xc4,0x31,0x1d,0x8a,0x9f,0x3d,0xfa,0x7b,0x68,
0xa3,0x59,0x68,0x8e,0x70,0x1f,0x3f,0x82,0x26,0xf0,0xb3,0x27,0xd3,0x49,0x23,0x97,
0x6b,0x24,0x93,0x49,0x43,0x95,0xb4,0xd9,0x04,0x14,0x56,0xaf,0xb3,0x55,0x3c,0x7a,
0xee,0xa7,0x4d,0xcd,0x2b,0xf5,0xf5,0x04,0x47,0xd2,0xd2,0x8c,0xd0,0x97,0x9d,0x79,
0x91,0xae,0x8a,0x02,0x88,0x9e,0xfe,0xe3,0xdf,0x19,0x2a,0x49,0x22,0xf5,0xc6,0x44,
0xa2,0xea,0xa6,0x71,0x10,0x88,0x3c,0x5d,0xbd,0x9a,0x9b,0xa3,0xda,0x0e,0x90,0x40,
0x5b,0xb7,0xf9,0xb6,0xa4,0xc9,0x96,0x62,0x89,0xcd,0xcf,0x5a,0xd1,0x48,0x97,0x71,
0x4c,0x07,0x1a,0x10,0x2a,0xd0,0x28,0x21,0x43,0xbb,0x7c,0xd5,0x0a,0xc5,0xb3,0xb2,
0xd5,0x05,0x98,0xf8,0x06,0x40,0x43,0x9e,0x64,0x89,0x50,0xe6,0xd3,0x05,0x4b,0x1c,
0xec,0x70,0xcb,0x94,0x65,0xa7,0x18,0x14,0xfe,0xd9,0x93,0x3f,0xb9,0xb0,0x29,0x11,
0xc4,0x57,0x04,0x0a,0xfe,0xda,0x70,0xcc,0x58,0x03,0x6b,0xac,0x9f,0x81,0xfb,0x0e,
0x08,0x29,0xcd,0x00,0x8c,0x0f,0x60,0x21,0xb3,0x50,0x3f,0xcf,0xc2,0x16,0x48,0x09,
0xa0,0x75,0x03,0x3c,0x5b,0xc0,0x48,0xd2,0xe5,0x9c,0x5a,0x50,0x0f,0x6b,0xba,0x8b,
0x91,0x7b,0x1f,0x70,0x7b,0x72,0x40,0xe4,0x22,0xdf,0x2b,0x89,0x08,0xab,0x68,0x84,
0xe9,0xff,0x0b,0x9d,0x33,0x54,0x7b,0x34,0x4c,0xd2,0x9c,0xf2,0xd8,0xab,0x2c,0xe5,
0xf2,0xd4,0x20,0x1e,0x82,0x95,0x0b,0xc0,0xe2,0x80,0x72,0x6f,0x1a,0x68,0xfa,0x92,
0x0e,0xf5,0x1b,0x40,0xa3,0x08,0x23,0x62,0x80,0x11,0x43,0x01,0xc5,0xf3,0x60,0x19,
0xfb,0x78,0xe4,0x7a,0x2a,0x57,0x10,0xfc,0x23,0xe5,0x0d,0xaf,0xa5,0xdc,0xbf,0x64,
0x31,0xe0,0x8f,0x2e,0x0d,0x24,0xbd,0x92,0x63,0x9c,0x4c,0x3e,0x53,0x76,0x46,0xfb,
0xf0,0x74,0xf4,0x0c,0x80,0xec,0x88,0x8c,0xfd,0x26,0xb1,0x7f,0x15,0x4e,0xc9,0xd8,
0x26,0x4f,0xc2,0x08,0x43,0xde,0x22,0x10,0x07,0x9e,0x45,0x56,0x01,0xae,0x16,0x50,
0xd0,0x51,0x38,0x90,0x42,0x62,0x86,0x8c,0x8a,0x89,0xe2,0x5e,0x3b,0xdd,0xae,0xb6,
0x37,0x0f,0xa4,0xcc,0xa6,0xee,0xfc,0x68,0xce,0x49,0x0e,0x70,0x38,0x2c,0x90,0x94,
0x18,0x6c,0xd3,0x51,0x2c,0x94,0x8f,0xc8,0x70,0xf9,0x00,0xb4,0x3e,0x78,0x39,0xc3,
0x33,0x84,0x61,0xae,0x72,0xd7,0x5b,0x8c,0xb2,0xbb,0x9e,0xf0,0x0d,0xc1,0x4b,0x51,
0x60,0x51,0xb8,0x7c,0xa3,0x48,0x1a,0x08,0x93,0x09,0x12,0x7f,0x18,0xe2,0xf9,0x74,
0x61,0xd3,0x40,0x81,0x93,0x3a,0x14,0x70,0xcc,0x9a,0x00,0x0c,0x04,0xc5,0x30,0x0a,
0x54,0x4a,0x83,0x0e,0x1c,0x6c,0x60,0x7b,0x14,0x32,0x78,0x15,0x14,0x05,0x22,0xfa,
0x47,0x7c,0x03,0x0a,0x51,0xc0,0xe2,0xdf,0x97,0xf2,0x87,0xe7,0x39,0xc3,0x50,0x3f,
0xc0,0x2d,0xc8,0xfd,0x0c,0xdd,0x2b,0x2c,0xf5,0x01,0x85,0xe8,0x6b,0x07,0x88,0x0a,
0x3f,0xb6,0xf8,0xb3,0x11,0x74,0x9f,0x64,0x14,0x4c,0xe3,0x7d,0x96,0x70,0x5a,0xb8,
0x59,0x57,0x41,0xa0,0x54,0x6c,0x13,0x86,0xf5,0xb0,0xd5,0x51,0x16,0x3d,0x70,0xd2,
0x28,0x70,0xf4,0x96,0x38,0xe4,0xa5,0xca,0x32,0x99,0xf8,0xad,0x94,0xaf,0xc8,0xa2,
0xb0,0xb2,0x16,0x87,0xfe,0x78,0x7c,0x82,0x29,0x24,0xdf,0x90,0x93,0x26,0x48,0x9b,
0x0d,0x73,0x76,0x74,0x84,0xe7,0x28,0x03,0xd0,0x18,0x1d,0x1c,0x73,0x2b,0xba,0xcb,
0x12,0x6a,0x8b,0x53,0x69,0x10,0xef,0x2d,0xc3,0x54,0x4b,0xa7,0x04,0x4b,0x2a,0x0a,
0xdc,0xc5,0x2a,0xa9,0x6f,0x49,0xfc,0x4d,0x1a,0x41,0xe2,0xac,0xec,0x30,0x36,0x64,
0x35,0xc8,0x93,0x61,0x23,0xa5,0xa5,0x34,0xcc,0x13,0x52,0xdb,0x50,0xaa,0x12,0x17,
0xa2,0xc0,0x94,0x03,0xd4,0x1c,0xe9,0x86,0x1a,0x20,0x13,0x74,0x27,0x12,0x0d,0x4d,
0xfd,0x05,0xe8,0x5f,0xb0,0x86,0xad,0x23,0xc8,0xa8,0xbd,0x85,0x79,0x5b,0xaa,0x4b,
0x89,0xab,0x31,0x4a,0x47,0x24,0xc6,0x99,0x27,0xa0,0x96,0x31,0x69,0xf2,0x49,0x63,
0xa4,0x17,0x71,0x04,0xfd,0x0a,0xa3,0x25,0xb2,0x03,0xd0,0x01,0xf1,0xec,0x2d,0x32,
0x0b,0xa9,0xac,0x26,0x05,0x4f,0x98,0x73,0x58,0x17,0x14,0xe0,0x20,0x9a,0x50,0xeb,
0x71,0x82,0x14,0xc8,0x47,0x76,0xe5,0x2a,0x45,0x01,0x06,0xe3,0x40,0x96,0x75,0x88,
0x7e,0x07,0x64,0x5b,0xe7,0x12,0xaf,0x4a,0x3f,0x37,0xe4,0xe4,0xaf,0x9a,0x18,0xf2,
0xde,0x16,0xc0,0xe3,0xc6,0x88,0x33,0x18,0xbb,0xfb,0xb2,0x6d,0xe8,0x07,0x84,0xff,
0x49,0x14,0xe0,0xcf,0xe7,0xab,0xd7,0xe3,0x66,0x83,0x0f,0x07,0x34,0x5a,0x45,0xaf,
0xd2,0x22,0xc9,0xf2,0x26,0x9e,0x9d,0x52,0xab,0x94,0xfb,0xf3,0xe0,0x01,0x93,0xb5,
0x46,0xaf,0xad,0x1e,0x38,0x57,0x97,0x14,0x7c,0xc0,0x6d,0xbd,0xd8,0xe7,0x41,0x3e,
0x4b,0xd0,0xc0,0x39,0x7d,0x7f,0x76,0xde,0x50,0x22,0x84,0x4f,0xf1,0x64,0xe8,0x61,
0x6a,0xc8,0xab,0x80,0x3a,0xe7,0x60,0x16,0x35,0xd0,0x38,0x5e,0x80,0x71,0x36,0x22,
0x06,0xbb,0x7d,0xd3,0xb9,0xbe,0xbe,0xee,0x00,0xae,0xe6,0x9d,0x65,0x1a,0xb1,0x4b,
0x65,0xdc,0x50,0x6e,0x1d,0x3c,0x64,0x3f,0xc6,0x4c,0x24,0xf0,0xdf,0x1a,0xae,0x93,
0xba,0x6e,0x0d,0xbe,0x48,0x45,0xd8,0x37,0xa9,0x34,0x5e,0x9d,0x9f,0x9f,0x0a,0x74,
0x51,0x98,0x3b,0x55,0xac,0x1a,0x77,0xa2,0xd2,0xbe,0xce,0xa8,0x45,0xd3,0xd3,0x40,
0xa2,0x1c,0x03,0x0e,0x1a,0xc9,0x65,0xa3,0x5e,0x26,0x9a,0x9e,0x51,0x25,0x64,0xe9,
0x54,0x71,0x60,0xd1,0xeb,0x38,0x1c,0x33,0xaf,0x67,0xa1,0xe5,0x21,0xe3,0x84,0x45,
0x8f,0xf2,0x8b,0xa5,0x1b,0xc6,0xdb,0x07,0x79,0xba,0xf2,0xb0,0xb9,0x20,0x4d,0x1b,
0x1b,0xf0,0x5f,0x42,0x44,0xa7,0x23,0x49,0x0e,0x39,0x9c,0xa6,0xb8,0x96,0x3d,0xd5,
0x16,0x4b,0x54,0x7c,0xed,0x5e,0x59,0x83,0xd3,0x4e,0xc3,0x91,0xbf,0x80,0x09,0x75,
0xd7,0xb6,0xd6,0x47,0x66,0xbf,0xbe,0xc5,0xc3,0x9d,0x3b,0x3d,0xaf,0xbf,0xd7,0xc6,
0x27,0x1f,0x6c,0xd7,0x47,0x5d,0x74,0xd1,0x1d,0xa8,0xe9,0x64,0x55,0x10,0x69,0x02,
0xb5,0xbd,0x6a,0xa5,0x4f,0x95,0xb5,0x0e,0xbe,0x41,0xc1,0xf3,0xca,0x1c,0x00,0x88,
0x1c,0xf4,0xbb,0xf3,0x79,0xe9,0x24,0x99,0x7b,0x92,0xfe,0x70,0x79,0x1f,0x93,0x61,
0x57,0xe8,0xaf,0x91,0x2a,0xef,0x68,0xf1,0xa7,0x01,0x5e,0x65,0x35,0xc0,0x23,0xd4,
0xb0,0xf2,0x41,0xd1,0x20,0x7b,0x0d,0x43,0xe6,0x32,0xe1,0x2e,0x6f,0x95,0xc0,0x38,
0x53,0x86,0xa8,0x01,0x45,0x07,0xa0,0x39,0xa6,0x0f,0xb7,0x25,0xa0,0x2a,0x7b,0xcd,
0xcb,0x76,0x32,0xcc,0x23,0x1d,0x0f,0x56,0xb6,0x2c,0xe9,0x22,0x48,0x13,0x06,0xd8,
0x75,0x1a,0xe6,0x72,0x5b,0x06,0x56,0x62,0x3e,0x23,0x35,0xc6,0x13,0xef,0xe3,0x40,
0x89,0x3a,0x12,0x8f,0xc4,0x97,0x07,0x96,0x05,0x2b,0xaf,0xa6,0x71,0x3a,0x76,0xf4,
0xe3,0x0b,0x99,0x6b,0xc3,0x7c,0xa5,0xee,0x78,0xae,0xc7,0xa2,0x66,0x97,0xe7,0xb7,
0x5b,0x54,0x96,0x81,0x71,0xff,0x67,0x8f,0x7e,0x1f,0xe8,0x4f,0xc8,0x15,0x91,0x2e,
0x4f,0x22,0xf8,0x5e,0xbb,0x0a,0xe5,0x81,0xab,0x46,0xcb,0x54,0xe4,0x4a,0x1e,0x59,
0x43,0x50,0xf5,0x8c,0x3c,0x48,0x4d,0x82,0x8f,0x45,0x51,0xad,0x7d,0x64,0x15,0xbf,
0x0b,0xf4,0x1f,0xfd,0xc8,0x5d,0xe4,0x66,0xc7,0xa0,0x00,0xd3,0xcb,0x93,0x97,0x78,
0xd2,0xbe,0xd9,0xb3,0xc0,0x97,0x90,0xf7,0xf5,0x98,0xf3,0x6d,0xcc,0x09,0xed,0x80,
0xb9,0x7f,0xdf,0xf7,0x08,0xf2,0x07,0x94,0x76,0xf3,0xe0,0xc0,0x2a,0x53,0xb2,0xbf,
0xea,0x38,0x91,0x6a,0x8d,0xb4,0x15,0xab,0x74,0x05,0x00,0xb5,0xa6,0xad,0x66,0x30,
0xd6,0x03,0x96,0x21,0xb9,0x66,0xa4,0x49,0xda,0xb6,0x7b,0x41,0xfb,0x05,0xa4,0x5a,
0x82,0x79,0xa1,0x1e,0xc8,0x9d,0x86,0xfe,0x7a,0x7b,0x4c,0x74,0x40,0x03,0x8b,0xf1,
0x2f,0x2e,0xb3,0xef,0x96,0x31,0xc6,0x07,0x92,0x8d,0x7e,0xb4,0xcb,0x60,0x14,0x0b,
0x9b,0x5e,0xf4,0xab,0xda,0x62,0x1a,0xba,0xf8,0xac,0x1c,0x19,0x8d,0x8e,0x79,0xd7,
0xd0,0xa3,0x1f,0x9a,0x7b,0xd1,0xb3,0x7f,0xd3,0x2e,0x94,0x0e,0x63,0x2a,0x8d,0xbb,
0x42,0x43,0x8f,0x1e,0xc0,0xfc,0x82,0xbf,0x58,0x45,0xbf,0xf4,0x6f,0x5a,0xc5,0x7a,
0x48,0xb6,0x08,0x14,0xff,0xb6,0xd1,0x20,0x94,0x8d,0xf2,0x2f,0x7e,0xc3,0xcd,0xf2,
0xaf,0x62,0x7d,0x0c,0xae,0xc0,0xaf,0xf8,0xb7,0x2d,0x64,0xfa,0xa7,0x21,0x67,0x2e,
0x2c,0x96,0x25,0xb7,0xfa,0xc0,0x76,0x6f,0x43,0x41,0xf8,0x03,0x3d,0x8d,0x96,0x39,
0x7b,0x59,0x9d,0x2a,0xb7,0x36,0x51,0xdd,0xb6,0xee,0x95,0xde,0x57,0x53,0x95,0x52,
0x7e,0x0f,0x1c,0x4f,0xa4,0x31,0x12,0xda,0x4a,0xd7,0x08,0xca,0xec,0x78,0x34,0x99,
0x16,0x5c,0xc9,0xe4,0x99,0x3b,0x14,0x9f,0x1a,0x38,0xe5,0x87,0x28,0xb1,0xb1,0x90,
0x21,0x00,0xb9,0x3f,0xd7,0xb5,0x50,0xdb,0xd0,0xd4,0x46,0xe5,0xb1,0xb8,0x7e,0xa3,
0x97,0xeb,0x8e,0x5d,0x81,0xe9,0x4e,0x97,0xe6,0x47,0xab,0xa8,0x76,0x5a,0xe3,0x57,
0x22,0xae,0xd2,0xbd,0x69,0x40,0x59,0x30,0xe3,0x36,0x71,0x51,0xd7,0xf9,0x02,0xbd,
0x06,0x11,0x11,0x82,0x0f,0xe1,0xdf,0x06,0x35,0x24,0x29,0xcb,0xe2,0x1f,0xd6,0x72,
0x2b,0xd4,0xf5,0x6f,0x2a,0xea,0xfa,0x37,0x77,0xd7,0x25,0x52,0x74,0xeb,0xe2,0x5e,
0xa2,0xa2,0x51,0x0d,0x60,0x6f,0x0d,0x80,0x62,0xe3,0x1a,0x00,0xd0,0xf3,0xdd,0x00,
0x90,0xb2,0x8b,0x9d,0xc7,0x77,0x16,0x76,0x6b,0x6a,0xf2,0x1a,0x28,0xd6,0xe5,0xb7,
0x9b,0xd5,0x2e,0xa3,0x8d,0xdf,0xde,0x5d,0x1b,0xd7,0x53,0xb1,0x2e,0xbe,0xab,0x29,
0x4e,0xeb,0xcd,0x2d,0xdf,0x94,0xab,0x50,0xd3,0x67,0x5d,0x55,0x58,0x81,0x6e,0x4d,
0x56,0x78,0x7f,0xfc,0xf0,0xfa,0x38,0x99,0x2f,0x40,0xa9,0x89,0xf3,0xa6,0xb5,0xad,
0x38,0xf4,0x78,0x1b,0xd1,0x86,0x87,0xba,0xdd,0x51,0x9a,0xfa,0x2b,0x2f,0xcc,0xe8,
0x2f,0x94,0x82,0x25,0xdd,0x42,0x35,0x8f,0x7e,0xc9,0x7d,0x0a,0x97,0xf5,0xd9,0xbd,
0x80,0x32,0xc5,0xe1,0x62,0xb5,0xf2,0x36,0x49,0x15,0xeb,0xac,0xdb,0x81,0xeb,0xef,
0xed,0xb5,0x5c,0x16,0x62,0xf6,0xe2,0x6c,0xd9,0x54,0xf0,0x24,0x99,0xad,0x21,0xb4,
0x4f,0xb8,0x97,0x5c,0xef,0x5b,0x5d,0x4f,0x32,0x91,0x24,0x7e,0x89,0x8e,0x0c,0x9b,
0x83,0x4c,0x62,0xd3,0x4b,0xb3,0xe3,0x31,0xd1,0x3a,0x86,0x34,0x2f,0x6d,0x28,0x52,
0x87,0x92,0x17,0x57,0xba,0xca,0xa1,0xe2,0x56,0x94,0xc0,0xd7,0x65,0x73,0xd4,0x3d,
0x54,0x18,0x0e,0xbb,0x0d,0x69,0x5a,0xdd,0x2a,0x83,0x55,0xdd,0xf0,0xe3,0x5a,0x87,
0xfc,0xf6,0x6f,0xf3,0x1f,0xc7,0xdc,0x54,0xf2,0x5f,0x62,0x52,0xee,0xfc,0x9c,0xaf,
0xd3,0xc9,0x74,0xbe,0x05,0xa5,0x95,0x21,0x51,0xe2,0xcb,0x16,0x55,0xf5,0x28,0xe4,
0x09,0x1d,0x03,0x32,0xdd,0x07,0xac,0x50,0xb4,0x18,0x49,0x9f,0x69,0x19,0x0f,0x7f,
0x7e,0x87,0xde,0x57,0x6e,0x03,0xc8,0x3c,0xaf,0x83,0x4e,0xda,0xa5,0x05,0x9d,0x32,
0xcb,0xad,0x69,0xc0,0x1c,0xc2,0xb7,0x5b,0xc0,0x5a,0x86,0xa8,0xf0,0xa9,0xa0,0x19,
0xb2,0x42,0xfb,0x4c,0x34,0x1a,0x9a,0xa8,0x07,0x96,0x73,0xfc,0x19,0x06,0x35,0x24,
0xd7,0xca,0xc7,0xa9,0xb7,0x0d,0xfe,0xfa,0x97,0xff,0x9b,0x71,0x4e,0x09,0xbb,0x5e,
0xc3,0x32,0x67,0x42,0xcc,0x5f,0x38,0xa1,0x60,0x5c,0x27,0xa3,0x1a,0x5a,0x87,0x3a,
0x84,0xa7,0x61,0x36,0xff,0xc8,0x56,0x5b,0xe3,0x47,0x7a,0xf1,0xfe,0xad,0xec,0xf5,
0x1b,0xb0,0x86,0xc8,0x5c,0x2d,0x9b,0x42,0x72,0xb6,0x31,0xb9,0xde,0x57,0xcc,0x37,
0x54,0x33,0xb8,0xe2,0xe7,0x8a,0x8e,0x90,0x0f,0xb7,0xb2,0x75,0xb3,0xd5,0x43,0xa8,
0xd5,0xfa,0x2e,0xfd,0x58,0xab,0xa2,0x96,0x95,0xee,0xb6,0xc3,0xaf,0xaa,0x9d,0x12,
0xbf,0xa7,0x63,0xc2,0x38,0x27,0x80,0xfc,0x58,0x0a,0xd0,0x30,0x94,0x08,0xb0,0xd5,
0xf1,0x2a,0x73,0xe0,0x0b,0x9c,0x15,0xeb,0x7d,0x0b,0xca,0x9e,0x95,0x3a,0x77,0x1a,
0x74,0x54,0x5a,0x49,0x74,0x62,0x49,0xeb,0x2f,0x4b,0xd0,0xbf,0x8e,0x47,0xcc,0x94,
0x11,0xc9,0x3e,0xd4,0x28,0x00,0xd5,0x0c,0x9d,0x0d,0x11,0x1a,0xa6,0x9e,0x05,0x52,
0x4e,0xf1,0x7b,0x8e,0x1a,0xc0,0xa1,0x61,0xaf,0xf5,0x14,0x5d,0x53,0x12,0x38,0x33,
0x33,0x9a,0xb3,0x6b,0x77,0x07,0x1a,0x9f,0xca,0xbb,0xc1,0xdd,0x58,0xe7,0xf7,0x28,
0x78,0x37,0x5c,0x19,0x71,0xeb,0x84,0x73,0x6c,0xc2,0x32,0xbe,0x90,0x0c,0xb5,0x95,
0xea,0x98,0xa8,0x25,0xba,0x33,0x52,0x80,0xe6,0x5b,0xb1,0x02,0x47,0xe6,0xab,0xbe,
0xde,0x6d,0xd0,0x56,0xf4,0x91,0xc2,0xe8,0x6a,0xfa,0x88,0x0b,0xc5,0x0a,0x66,0xdb,
0x00,0x3e,0x19,0xc8,0xba,0xf3,0x5f,0x63,0x06,0x5f,0x55,0x58,0xbc,0x95,0xae,0xc2,
0xc2,0x96,0xb1,0x71,0x37,0xa9,0xcf,0xb6,0xcb,0xb3,0xe2,0xaa,0x65,0xe9,0x8d,0x2e,
0xfa,0x45,0x0d,0xc6,0xb1,0x87,0x84,0xf5,0x2b,0xa4,0xb5,0xb6,0xe8,0xed,0x75,0x37,
0x45,0xb8,0xca,0xd8,0xf1,0xc5,0x54,0xc1,0x81,0x5c,0x68,0xb7,0xa4,0xf3,0x66,0x83,
0x8f,0xa2,0x70,0x50,0x01,0x9a,0x05,0x6d,0xeb,0x50,0x08,0xd2,0xb5,0x15,0x02,0x99,
0x27,0xda,0x5b,0xf4,0x0c,0xd4,0x18,0x67,0xaf,0x9b,0x10,0x88,0x5b,0x12,0x4d,0x5c,
0xa0,0xed,0x4a,0xdf,0xcb,0x36,0x75,0x19,0x59,0x5a,0x81,0x91,0xad,0xf7,0x7f,0x7e,
0x8d,0x07,0x14,0x7d,0x65,0xcc,0xf1,0x3c,0xf6,0x8a,0x37,0xad,0x55,0x57,0x63,0xf2,
0xe1,0xea,0x66,0x6c,0xb0,0xd3,0x6c,0xb3,0x75,0x6d,0xed,0x1c,0xf1,0x5f,0x67,0x79,
0xe1,0x4b,0xbc,0x82,0xfa,0x80,0x72,0x7e,0xa9,0x5b,0xa8,0xd5,0x0f,0xe0,0x6f,0xd5,
0x97,0x29,0x93,0x4b,0xd0,0xbd,0x50,0x59,0x86,0xae,0xa2,0xc3,0x6c,0x9e,0x8c,0x97,
0x11,0x07,0xb6,0xf2,0x1e,0x80,0xf7,0x9d,0x4c,0x3a,0xcb,0x68,0x1f,0xf0,0x74,0x32,
0xe3,0x04,0x72,0xcc,0x28,0xbf,0xa6,0x8e,0xdc,0xf5,0xd3,0x14,0x43,0xa4,0x11,0x9a,
0x3a,0x2a,0x54,0xf2,0x8d,0x36,0x4b,0x71,0xd5,0x32,0x3d,0xb1,0x4a,0x0e,0x8d,0x09,
0x33,0xe1,0x61,0x11,0x06,0x99,0x0e,0x86,0x25,0xe8,0xd0,0xf2,0x10,0x10,0x3f,0xe7,
0x58,0xe4,0x6b,0x5f,0xa6,0x3b,0x55,0x80,0xe4,0x30,0x10,0x14,0x0c,0x23,0x88,0xd0,
0xc5,0x40,0xfb,0x64,0x19,0x66,0xb6,0x89,0xf1,0xe6,0x18,0x9f,0x4f,0x13,0x53,0x06,
0xc8,0xe7,0xef,0xff,0x11,0x83,0x91,0xaf,0x63,0x15,0x96,0x40,0xae,0x55,0xb5,0x73,
0x87,0x90,0x9a,0x94,0x99,0x0f,0x57,0xed,0x8c,0xf6,0x61,0x41,0x0c,0xc4,0x23,0xec,
0x55,0xa8,0xf4,0x0b,0xe8,0x40,0xd2,0x96,0x19,0x3f,0x65,0x39,0x72,0x61,0xca,0x51,
0x73,0x96,0xc8,0x45,0xd6,0xa2,0x28,0x71,0xde,0x8f,0x53,0x69,0x12,0x04,0xc5,0x7e,
0x71,0x7c,0x0c,0xd2,0x7a,0xa6,0xb3,0xc2,0x75,0x28,0x55,0x21,0xd7,0x8f,0x61,0x61,
0xd8,0xef,0x79,0x27,0xbc,0x83,0xe0,0xe8,0x2c,0xac,0x27,0x8e,0x97,0xb4,0x1f,0x38,
0x44,0xea,0xc9,0x93,0xd2,0x61,0x64,0x41,0xfb,0x23,0x57,0x32,0xb5,0xac,0x1f,0xfb,
0xd1,0x2a,0x43,0x29,0x87,0xf3,0x86,0xe4,0x80,0x81,0x32,0x00,0x0c,0xf3,0x03,0xb2,
0x53,0x58,0x47,0x9b,0xe3,0x57,0x8a,0x49,0xa6,0x8c,0x7e,0x8b,0x04,0x8b,0x64,0xec,
0x88,0xe5,0x6d,0x20,0x64,0x5f,0xb1,0xcc,0x4f,0x0b,0x88,0xa5,0xd0,0x2d,0x40,0xad,
0x77,0xef,0x5e,0x63,0x89,0x19,0x64,0xf3,0x34,0x1c,0xe5,0xa0,0x7e,0xdd,0xa3,0xe0,
0x73,0x71,0x04,0x08,0x2a,0x12,0xc3,0x01,0x85,0xe2,0x9b,0xe4,0xe0,0x18,0x57,0xf4,
0xb7,0x6c,0x06,0xdc,0x61,0x24,0xc8,0x91,0xbe,0xfa,0xd3,0x4f,0x2f,0x4e,0x5e,0x1e,
0xfd,0xf8,0xe6,0x1c,0xc3,0x87,0x3f,0x7d,0xda,0xc7,0x28,0xbc,0x3d,0x0c,0x5f,0xfb,
0x04,0x7f,0xf0,0x3a,0x83,0x2e,0x3f,0xc0,0xdf,0x36,0x5e,0x96,0x45,0x4f,0x7b,0xf4,
0xd4,0xdb,0xc7,0xc7,0x8b,0x03,0x09,0xea,0xcd,0x8f,0xe7,0x3f,0x9d,0xbe,0x7f,0xfd,
0x8e,0x20,0xed,0xec,0x68,0x64,0x72,0xfc,0xa0,0x8a,0x4e,0x36,0xb1,0xc9,0xb4,0x5f,
0x00,0xbc,0xef,0x4c,0x85,0x23,0x4b,0xb7,0xd6,0x7f,0x5e,0xd4,0x32,0xeb,0x77,0x26,
0x6a,0x59,0xf7,0x40,0x05,0x2a,0xdf,0xd1,0x83,0xdf,0x1e,0xcf,0xcc,0x3d,0x30,0xf1,
0xcc,0xaa,0x07,0x2f,0x55,0x08,0xf3,0xfa,0x1e,0xfc,0x0e,0x91,0xce,0xdc,0x03,0x0c,
0x11,0x75,0x7b,0x80,0xb9,0x2d,0x2a,0x7b,0xa0,0x82,0x48,0xb9,0x07,0x53,0x59,0x2c,
0x1e,0x88,0xbe,0x46,0x28,0x96,0x70,0x11,0xaa,0xea,0xac,0x07,0x66,0xc5,0xa7,0xee,
0x28,0x60,0x18,0x5b,0xeb,0xf6,0xec,0x88,0x23,0x6f,0xcb,0xc0,0x7c,0xf5,0xc1,0x0e,
0xca,0xc5,0xcc,0x92,0x9a,0xf4,0xa4,0x13,0x03,0x48,0x0f,0xfd,0x18,0x87,0x4f,0x4d,
0x00,0x6e,0xd7,0x0a,0xc0,0x05,0x44,0xba,0x67,0x08,0x50,0xdb,0xb3,0x00,0xbc,0xfa,
0xb5,0x02,0xc0,0xf1,0xd1,0xe9,0x99,0xf2,0x28,0x6b,0x48,0xea,0xa5,0x7f,0x53,0x00,
0x69,0x4a,0x23,0x6c,0x09,0x1c,0x5f,0x02,0xe4,0x23,0x0f,0xb7,0xde,0x48,0x38,0x5a,
0x91,0xcb,0xa4,0x60,0xe0,0xb9,0xcd,0x26,0x25,0xc6,0x67,0x3d,0x80,0xeb,0x7d,0xb2,
0x1d,0xd9,0x17,0x00,0xc1,0x5a,0xc4,0x9f,0xa8,0xb4,0xf8,0x07,0xfb,0x9d,0xf4,0x19,
0x91,0xeb,0xd3,0xf1,0x91,0xdb,0x70,0xd8,0xf2,0x61,0x2f,0xb4,0x1e,0x0f,0x01,0x6b,
0x8b,0x9d,0x96,0xf6,0x48,0x73,0x24,0xc9,0x3d,0xcb,0x53,0xde,0xd5,0xee,0xf1,0x5e,
0x5b,0x7a,0xc1,0x7b,0xd2,0xa7,0x23,0x9d,0xe0,0x98,0xd1,0xc0,0x38,0xc0,0xf1,0xb4,
0xb5,0xdc,0x04,0xe4,0xf9,0x44,0x5d,0xd0,0x75,0x5c,0xdf,0xd2,0x45,0x48,0x1a,0x19,
0x3a,0xda,0x8e,0xd0,0x01,0x62,0x10,0x5b,0x2c,0xe0,0x84,0x64,0x25,0x70,0x18,0xe1,
0x79,0x5e,0x19,0x79,0x6d,0x7c,0x8d,0x35,0x71,0x2e,0x3e,0xdf,0xb6,0xd8,0xf1,0x8d,
0x75,0x78,0x52,0xa0,0xa6,0x9c,0xe9,0xa6,0x79,0x49,0xd7,0x69,0xf1,0x83,0x7f,0x53,
0x51,0xc2,0xbf,0x21,0xdd,0x06,0xb5,0x32,0x0b,0xd2,0x53,0xab,0x52,0x4b,0x7c,0x32,
0x5f,0xda,0xd6,0x07,0x9c,0xb4,0x4f,0xe6,0xb1,0x6d,0x75,0xe5,0xa2,0x08,0x13,0xda,
0xee,0xd8,0x5d,0x7d,0x42,0xb1,0xcc,0x4e,0xcf,0x2a,0xe9,0xcf,0xaa,0xf2,0x00,0xab,
0xe8,0x11,0xd3,0xbc,0xa9,0xf1,0x74,0x7b,0x4d,0xf3,0x52,0x8d,0x98,0xe6,0xb3,0xa2,
0x44,0x71,0xc4,0x5c,0xae,0x63,0x83,0x7d,0x82,0x6c,0xa6,0xdf,0x72,0xe1,0xd8,0x2b,
0xcd,0x2a,0xfb,0x80,0xcb,0xea,0x8e,0x31,0xbd,0x14,0xdb,0xe5,0xb7,0xaa,0x6b,0x4c,
0x45,0x55,0x65,0x8a,0x9d,0x93,0x25,0x3b,0x0e,0x6c,0xea,0xde,0x5e,0xab,0x00,0xab,
0xd4,0x3f,0x59,0xfa,0x01,0x97,0x3e,0x60,0x4f,0xe0,0xcb,0x64,0x99,0xf2,0xce,0x14,
0xe8,0xf5,0xf8,0x1b,0x17,0x0b,0xfc,0x46,0xb5,0x8d,0xd2,0xc4,0xcb,0xab,0x69,0x28,
0xd0,0x73,0x20,0xb5,0x37,0x50,0xdb,0xe8,0x20,0x1e,0x9d,0x9d,0x0d,0x3d,0x86,0x74,
0x44,0x91,0x72,0x98,0xac,0x3b,0x9c,0xc6,0x68,0xca,0xf0,0xb1,0xaa,0x80,0x2f,0xab,
0x40,0x55,0x25,0x18,0xab,0x0b,0x27,0x30,0x93,0x2f,0x66,0x76,0xe1,0x8c,0xc6,0x94,
0x5a,0xfc,0x66,0x11,0xa1,0xdb,0x5d,0xa1,0x8d,0x40,0x1f,0xf2,0x92,0xd0,0xb8,0x64,
0x8f,0xf5,0xa1,0xf3,0x60,0x45,0x87,0xd2,0x6b,0xb2,0x66,0xac,0x43,0x09,0x5d,0xcf,
0x3e,0x96,0xb0,0xab,0x59,0x98,0x2e,0x4c,0xac,0x4c,0xee,0x50,0x68,0x3c,0xb3,0x9d,
0xf4,0xed,0xb7,0xc4,0x95,0x93,0x89,0xb0,0x5e,0x72,0x98,0xe9,0x10,0x37,0xe1,0x1b,
0x2d,0xfb,0x83,0x09,0x8c,0xd1,0x60,0x60,0xfd,0x23,0x90,0xe6,0xfd,0x82,0xfb,0x5b,
0x7e,0xa3,0xa6,0xd5,0x83,0x0a,0xd6,0x7f,0x82,0x87,0x23,0xf4,0x5b,0x0b,0xaa,0xe4,
0x72,0xf8,0xa5,0x86,0x95,0xf0,0x86,0x15,0xb2,0x04,0x9b,0x8b,0x64,0xa0,0xec,0x13,
0xda,0xdc,0x4e,0x20,0xe3,0x80,0xbe,0xc1,0x1f,0xde,0x32,0x6a,0x89,0x67,0xe6,0x41,
0x60,0xe0,0xdc,0x81,0xc3,0x88,0x68,0x9b,0x8b,0xde,0x61,0x98,0x50,0x33,0x02,0x5b,
0x2a,0xe4,0x20,0xab,0x10,0xfa,0xbc,0x0b,0x7f,0x1e,0x3c,0xe0,0x7e,0x4b,0xaf,0xbd,
0xcb,0xe1,0xb8,0x17,0x9f,0xc2,0x0b,0xdc,0x86,0x6a,0x95,0xb9,0x36,0xed,0xd6,0xda,
0x9d,0xc2,0x37,0x84,0xa0,0x46,0x29,0x9d,0xaf,0xf4,0x8e,0x59,0x5b,0xb8,0x76,0x45,
0xfd,0xba,0xe5,0xee,0xe6,0x82,0x15,0x32,0x56,0x11,0x7d,0x6f,0xb3,0x42,0x1d,0xe7,
0x1b,0x55,0xdc,0xd9,0xe1,0x6a,0xce,0xd6,0xae,0x5d,0x47,0x7f,0x90,0x5b,0x75,0x6a,
0x9f,0xd8,0x22,0x3d,0xd4,0xda,0x34,0xed,0x81,0x02,0xa3,0xa9,0xcf,0x06,0x43,0xd5,
0x5a,0x6a,0x57,0xb9,0x25,0xa1,0xf1,0x9a,0xa4,0x9f,0x8a,0xcd,0xcb,0x0a,0x73,0x3f,
0x5e,0xfa,0xd1,0x09,0x1d,0x65,0x7d,0x46,0x49,0xca,0xf5,0xf3,0xa0,0x54,0x00,0xc3,
0x8b,0x3f,0xd3,0xe6,0x28,0xcb,0x1f,0x4b,0xdb,0x27,0xa2,0x05,0x9a,0xc3,0x55,0xfe,
0xf7,0xa3,0xe1,0x9b,0xb3,0x6c,0x30,0x55,0x64,0x7b,0xf1,0xb9,0xb0,0xb6,0x58,0x32,
0xd1,0x2f,0x2d,0x3e,0xba,0xd4,0xab,0xba,0x70,0xba,0x6d,0xa9,0xde,0xd7,0x1d,0x6d,
0xd3,0x49,0xc3,0x81,0xfa,0xd7,0x1d,0x72,0xb2,0x37,0x97,0xf8,0xfc,0x9b,0x7b,0xbe,
0x89,0x21,0x5c,0xda,0xfc,0x38,0x06,0xf6,0xdd,0x93,0x35,0x81,0xa6,0x93,0xb4,0xb9,
0x14,0xdf,0x89,0x58,0xd5,0x90,0x3d,0xbc,0x14,0x60,0xff,0x52,0x51,0x1d,0xbe,0x79,
0xf7,0x99,0x3a,0x82,0x99,0x41,0x1b,0xf4,0xe3,0xf4,0x35,0xc0,0x35,0x28,0xb8,0xe3,
0x8c,0x1d,0x46,0xc0,0x2e,0x87,0xe1,0x88,0xc3,0x8e,0x51,0x97,0x5c,0x81,0x48,0x06,
0xd6,0xdc,0x24,0x9d,0x1c,0x64,0xd5,0x0d,0x6e,0x66,0xe0,0xc5,0x3b,0x09,0xb0,0x71,
0x14,0x10,0x7c,0xf8,0x83,0x0e,0x09,0x2b,0x56,0x7e,0x93,0x29,0x60,0x74,0x33,0x11,
0xf0,0xe2,0x4f,0xdd,0x36,0x1e,0x17,0x22,0x77,0x6e,0x36,0x43,0xd7,0xc2,0x30,0xcc,
0x64,0xd4,0x6c,0x1a,0xa8,0xd8,0x48,0x8e,0xa7,0x8e,0x57,0x62,0xe9,0x59,0x78,0xfb,
0x0c,0x7d,0xe0,0xf8,0xc3,0x15,0xea,0xbb,0x6c,0x97,0x90,0x3d,0x40,0x96,0x00,0xd9,
0x00,0x40,0xe2,0x87,0x4c,0xcc,0x36,0xc6,0x87,0x28,0x02,0xb1,0xbf,0xa0,0xde,0xee,
0x00,0x1a,0x9a,0x3d,0x8c,0x70,0x6a,0x39,0xbf,0x72,0xf8,0x17,0xe0,0x81,0x44,0xdc,
0x29,0xbd,0xa7,0x6f,0x7d,0xfc,0xa6,0x9e,0x72,0x07,0xfc,0xca,0x80,0xaf,0x02,0x6d,
0x7e,0xc1,0x00,0x1e,0xdc,0xd1,0x83,0xd5,0x9a,0x1e,0xac,0xec,0x1e,0x20,0xb8,0x1e,
0x77,0x03,0xd9,0x6f,0x94,0x30,0x6e,0x66,0xc8,0x87,0xe5,0xfb,0x2a,0xde,0xdc,0x57,
0xcc,0x59,0x79,0xdd,0x78,0x0c,0xf3,0x10,0x85,0x42,0x13,0xa0,0x3c,0x10,0x18,0x7f,
0xbf,0x2d,0xfa,0x76,0x90,0xe1,0xf0,0xa6,0x09,0x25,0x5a,0x50,0x1f,0x16,0x16,0x35,
0x35,0xc7,0x1b,0x0d,0x02,0x50,0x95,0xb9,0xc5,0xb9,0x3a,0x56,0xe9,0x9c,0xeb,0xd2,
0x2a,0xcc,0xaa,0xe9,0x80,0x6e,0x69,0x32,0x36,0x4b,0xd0,0x16,0x62,0x9c,0x83,0x8e,
0x17,0x34,0xfb,0x2a,0xe5,0x7a,0x2e,0x9e,0x29,0x36,0x6b,0x1b,0x8c,0x75,0x80,0x6c,
0x04,0xb9,0x0b,0x10,0xdf,0x13,0xb8,0x3f,0xa2,0x4f,0xb9,0x12,0xa6,0x25,0xbc,0x9f,
0x59,0xfc,0xc4,0xbc,0xa6,0x0a,0x83,0xca,0xbe,0x15,0x1b,0xbb,0x0c,0xde,0x2c,0x73,
0xfb,0x54,0x2d,0x23,0x99,0x45,0x78,0xbd,0xdc,0x34,0xfe,0x05,0x67,0x8e,0x50,0x1f,
0x20,0x21,0x2a,0xe5,0x45,0x89,0xd9,0x85,0xc8,0x1e,0x2c,0xe7,0x04,0xf2,0x09,0x13,
0xee,0xb0,0xdb,0x2a,0xa1,0x1b,0x20,0x16,0x04,0x00,0xba,0x55,0x83,0xbf,0x63,0x6f,
0x0f,0x89,0x03,0x44,0xe7,0x68,0x82,0x41,0xca,0x45,0x2d,0x08,0xd5,0x26,0x40,0x02,
0x16,0xc0,0x5b,0x55,0xe9,0x00,0x18,0x3e,0xf0,0xe9,0x38,0xb4,0xaa,0xee,0x3c,0x39,
0xd0,0xbe,0xf3,0xf8,0x01,0x4a,0x55,0x5a,0x8a,0x7e,0x96,0x9f,0xd0,0x71,0x1f,0xde,
0x04,0x20,0x0e,0x38,0xe7,0xcd,0x2b,0xcc,0xeb,0x8d,0xf7,0x97,0x74,0xf8,0x52,0x13,
0x68,0xa9,0xad,0x8f,0xd7,0xa1,0x0e,0xf1,0xd7,0x7f,0xf9,0x57,0x96,0xd8,0x14,0xc4,
0x99,0x4c,0x26,0xdc,0x67,0xff,0x2a,0x70,0x03,0xae,0x0d,0xb5,0x2d,0x30,0x28,0x3c,
0xcb,0xa5,0xdf,0xdf,0xd9,0xc6,0xd0,0xd5,0x68,0xfe,0x6d,0x20,0xd6,0x16,0x46,0x93,
0xf8,0xd6,0x91,0x67,0x82,0x9c,0x28,0xb2,0x49,0x6d,0x51,0xd8,0x84,0x4d,0x97,0x21,
0xdb,0x94,0x6f,0x51,0xb8,0xa3,0xfb,0x6a,0x0e,0x6c,0x69,0xae,0xee,0xaa,0x28,0x90,
0x1f,0x26,0x5e,0xe7,0x33,0x88,0xd3,0x20,0x99,0x63,0xbc,0xb0,0xf8,0xdb,0xf6,0x2a,
0xfe,0x01,0xb9,0x25,0x72,0x44,0xc0,0x5d,0xdd,0xce,0x4d,0x38,0xd6,0x5e,0x16,0x1c,
0x9a,0xbc,0x55,0xef,0x50,0xfc,0xa1,0xd9,0xa0,0xdb,0xa4,0xcc,0xd7,0x51,0x8e,0x12,
0xca,0x14,0x42,0x48,0xb4,0x8b,0x75,0x93,0x37,0x1b,0xfd,0xb1,0x29,0xf9,0x96,0x69,
0x75,0x20,0x76,0x41,0xdd,0x48,0x07,0x62,0xbf,0x2d,0xf0,0x1a,0x69,0xd0,0x43,0x86,
0xf0,0xae,0xab,0x28,0xf0,0xf4,0x23,0x0b,0x83,0xd3,0x57,0xcc,0x5c,0x38,0xcc,0x97,
0x8e,0x78,0xa6,0x81,0x0f,0xf3,0x96,0x65,0x62,0x71,0x63,0xcd,0x2c,0x1e,0x02,0x3d,
0x85,0xef,0x4d,0x9b,0x5d,0xd1,0x3d,0x5f,0xba,0xbb,0x98,0x34,0x9a,0xb7,0x37,0xa5,
0xe3,0x28,0xcb,0xb0,0x15,0x2c,0xe4,0x8d,0xa2,0x10,0x06,0xfd,0x11,0x1d,0xf4,0x4e,
0x01,0x6c,0x7e,0x97,0x8f,0xf5,0xf0,0xbb,0xf1,0x22,0x35,0x8e,0x67,0x8e,0x60,0x38,
0x05,0x26,0x15,0x7d,0xc0,0x2d,0x1c,0xb2,0xbd,0xe8,0x56,0x56,0x83,0x08,0xe5,0xf4,
0xb7,0x55,0x2b,0x6c,0xf8,0x3b,0x04,0xd5,0x2a,0x14,0xd6,0xae,0x7f,0xb7,0xf4,0xab,
0xea,0xd2,0x94,0x9e,0x5f,0x37,0x40,0x50,0x1f,0x80,0x7d,0x71,0xd3,0xa8,0x2c,0xa7,
0x61,0x13,0x40,0xab,0x20,0xcc,0x9d,0x87,0xcb,0x29,0xf5,0xe3,0x0c,0xb7,0xdb,0x9b,
0xd0,0x54,0x1b,0x91,0x0f,0xff,0xe8,0x9f,0xd4,0x36,0xcd,0x0a,0xb5,0xd3,0x11,0x6f,
0xbd,0x88,0xfe,0x4b,0xb7,0xad,0xd2,0x34,0x11,0x5c,0x7c,0x95,0xd3,0x7f,0x87,0xb4,
0x42,0x18,0x6b,0x2f,0x4e,0x8e,0x8f,0x5e,0x50,0xf6,0x0b,0x2b,0x59,0x87,0xf1,0x84,
0x00,0xf7,0xb7,0xbc,0x6f,0x8a,0x54,0x6e,0xde,0x4f,0x90,0x46,0x67,0xbf,0xb2,0x57,
0x0f,0xda,0x7b,0x80,0x3d,0x00,0xcd,0xc2,0x02,0xa2,0x3c,0x3e,0x58,0xca,0x81,0x82,
0xf9,0x3d,0xb8,0x55,0x0d,0x70,0xf6,0x2b,0x43,0xbc,0x21,0x80,0xaa,0xa6,0xa9,0xa3,
0x72,0x89,0xa8,0x5c,0x1f,0xaa,0xd7,0xd0,0x62,0xf3,0x86,0x87,0x8c,0x60,0x4f,0x3f,
0xb6,0x8c,0xf7,0x71,0xc5,0x20,0xa5,0xe7,0x11,0x86,0xfe,0x80,0x15,0x1f,0x13,0x9b,
0x85,0x1a,0xd0,0xe9,0x2b,0x55,0xfe,0x8a,0xcb,0xaf,0x4c,0x17,0xa0,0x10,0x56,0x68,
0xae,0x18,0x77,0xd4,0xc2,0xab,0x16,0x6f,0x65,0xbc,0x06,0xfe,0x9c,0xd2,0xb5,0x4b,
0xe8,0xbd,0xc8,0x78,0x03,0x45,0x6d,0xbb,0x81,0x91,0x47,0x3b,0x33,0x7c,0x1e,0x95,
0xf7,0x9e,0x48,0xdb,0xc5,0x11,0xb5,0xd5,0xd9,0x1b,0x4a,0xee,0x82,0x79,0x68,0x10,
0x1e,0xc6,0x50,0xa8,0x23,0x5f,0x4e,0xde,0xa1,0x46,0x26,0xfa,0x94,0x90,0xaa,0x7b,
0xa9,0xf7,0x53,0xad,0x33,0x01,0x99,0xd8,0xe9,0xc1,0xd7,0x47,0x97,0x9e,0x1c,0xc6,
0xf9,0xeb,0xe3,0x1f,0x78,0x37,0x02,0x77,0x20,0x1a,0x7b,0xdd,0x06,0xee,0x39,0xf4,
0x70,0xcb,0xa1,0x01,0xff,0x6d,0xc8,0xfd,0x08,0x78,0xea,0xcb,0xa7,0xbd,0x2e,0x17,
0xc4,0x27,0xa0,0x18,0x2c,0x4b,0x85,0x2f,0x1b,0x66,0xef,0xa2,0xd1,0xbf,0x6c,0x98,
0xbd,0x8b,0xc6,0xde,0xa5,0x82,0x2a,0xe1,0xc2,0x33,0x66,0xa9,0xf0,0x26,0x61,0x04,
0xc6,0x6d,0xb3,0xf9,0x69,0xf6,0xeb,0x05,0x21,0x72,0xf6,0xab,0x78,0x2a,0x9c,0x89,
0xec,0x61,0x32,0x1e,0x30,0x31,0xe1,0xcb,0x13,0x61,0x51,0xda,0x77,0xe8,0xdc,0x7c,
0xa8,0xa7,0xef,0xc5,0xf3,0x9f,0x30,0xd5,0x11,0x0f,0x05,0x14,0xf2,0x06,0x77,0x16,
0x33,0x67,0xc2,0x43,0xa7,0xf7,0x48,0x3e,0xd2,0xd3,0xce,0x9e,0x7c,0xea,0xd3,0xe3,
0xde,0x0e,0x3f,0xe2,0xef,0x87,0x50,0xef,0x82,0xe7,0xcc,0xbd,0x7b,0xb4,0x70,0x88,
0x99,0x0f,0xd5,0x1f,0x9f,0x9d,0x99,0xeb,0x46,0xdb,0xf2,0x88,0x3a,0x5d,0x3a,0x8a,
0x47,0x12,0xf9,0x7c,0x3b,0xcc,0x1f,0xed,0xf2,0x91,0xab,0x4a,0xdf,0x73,0x9a,0x06,
0xf2,0xf0,0xfb,0x28,0x49,0x65,0xae,0x1e,0xbe,0x8b,0x55,0x5f,0x9b,0x41,0x67,0x21,
0xd4,0x99,0x4f,0xbc,0x92,0x14,0xa1,0x60,0x06,0x80,0x94,0x58,0xfc,0x81,0x1d,0x26,
0xa7,0xb6,0x48,0x91,0x05,0x66,0x86,0x5a,0x78,0xd7,0x16,0xad,0x1d,0x3a,0x76,0x81,
0xd7,0xb1,0xf2,0x25,0xba,0x9e,0x25,0x49,0xb1,0x57,0x0e,0xb3,0x45,0xc1,0x40,0x5c,
0x7f,0xbe,0x40,0x5f,0xd6,0x19,0x32,0x1d,0x13,0x24,0x41,0x27,0x9f,0x0c,0x1b,0x45,
0xdd,0xa2,0x89,0x67,0x37,0xdb,0xb4,0xd3,0x32,0x24,0x9f,0x01,0x5a,0x1f,0x24,0x39,
0x4e,0x81,0xee,0x82,0x34,0x5f,0xb1,0xae,0x8b,0xc5,0xc8,0x0c,0xd5,0x25,0xbd,0x3c,
0x0d,0xe7,0x4d,0x0b,0x5c,0x44,0x1e,0xa1,0xab,0x66,0x83,0xae,0xd6,0xc5,0x2d,0xef,
0x6f,0x82,0x47,0x7b,0x7b,0xfd,0xc0,0xe6,0xf7,0x73,0x28,0xb2,0xfd,0x3f,0xbf,0x79,
0xd6,0xfc,0xd4,0xed,0x3c,0xf6,0x3b,0x93,0x8b,0xcf,0xfd,0xdb,0x56,0xfd,0xc3,0x1f,
0xb6,0x43,0x2f,0xb8,0x09,0x46,0x4d,0x3c,0x78,0x0a,0x78,0x8f,0xfc,0x51,0xd0,0x6c,
0x7c,0x83,0xc0,0x65,0x64,0xa4,0x6e,0xfb,0xc3,0x14,0xbd,0x7b,0x73,0x50,0xbb,0xff,
0xf9,0x0f,0x9f,0x4d,0xa2,0x10,0x4a,0x2c,0xd1,0xdb,0x6f,0xdd,0xb6,0x85,0xf3,0xba,
0x5f,0xfd,0x7a,0x47,0xbe,0xfe,0x67,0x8c,0x4b,0xeb,0xef,0x80,0x48,0x7c,0x04,0x74,
0xb6,0xbb,0xdf,0x28,0xb9,0x97,0xe4,0xa5,0xb2,0x34,0x5e,0xfa,0x4d,0x23,0x9e,0x0c,
0x27,0x0f,0x83,0x49,0x43,0x7a,0x5c,0xe4,0xcd,0xc6,0x54,0x86,0x7e,0x73,0x99,0xdd,
0x60,0x12,0xec,0xab,0x32,0x74,0xa7,0x31,0x95,0x80,0x5f,0xf4,0xbd,0xb7,0x8b,0xff,
0x57,0xdf,0xe5,0x86,0x02,0x95,0xe0,0xa8,0x5b,0x2c,0xb3,0x3f,0xdc,0xdf,0xdb,0xf3,
0x55,0x19,0x79,0xe3,0x31,0xf7,0x05,0x7f,0x53,0x19,0x7f,0xff,0xf1,0xe4,0x71,0x57,
0x95,0xe1,0x1b,0x90,0xa9,0x08,0xfe,0xa4,0x12,0xe3,0xc7,0xe3,0xde,0x48,0x97,0x88,
0x54,0x04,0x3d,0xfc,0x38,0x1a,0xd0,0x41,0x0c,0xa0,0x86,0x7f,0xa6,0x6b,0xdb,0xff,
0xf0,0x99,0x51,0x4c,0xf8,0xf2,0x6f,0x5b,0xff,0x6c,0x80,0x96,0x8b,0x9a,0x84,0x22,
0x95,0xad,0x95,0x26,0xd2,0x4e,0x6c,0x52,0x31,0x2b,0x5f,0x06,0x05,0xa6,0x6c,0xf7,
0xb7,0x43,0xd9,0x6d,0x8b,0x7d,0x0b,0x8a,0x19,0x31,0x4c,0xd2,0x5d,0x03,0x2e,0xce,
0xe3,0x57,0x8d,0x77,0x53,0x20,0x6b,0x87,0xbb,0x29,0x90,0x8a,0xd1,0xda,0xee,0x3d,
0x64,0x6e,0x32,0x7a,0x41,0x46,0x5b,0x50,0x8a,0x3a,0xbe,0xc5,0x34,0xc6,0xeb,0x47,
0x55,0xea,0x13,0x99,0x66,0xbd,0xad,0xee,0x97,0x1e,0x62,0x2a,0x06,0x74,0x9c,0x22,
0x18,0x30,0x53,0x82,0x08,0x6f,0x58,0x65,0x27,0x8f,0xaf,0x6f,0xd1,0xa1,0x24,0xf0,
0x9e,0x6b,0x67,0x7f,0xa4,0xf6,0x9a,0x75,0x1b,0x58,0xfa,0x58,0x02,0x6f,0xe4,0xe9,
0xdd,0x20,0xe7,0xa4,0x84,0xeb,0x73,0x0b,0xc8,0x98,0xe2,0x13,0xe1,0x94,0x5f,0x00,
0x24,0x93,0x7e,0x90,0x60,0x88,0xc5,0x35,0x95,0xe9,0x05,0x05,0xe4,0x4f,0xf5,0xd9,
0x04,0x7e,0x42,0x9d,0x56,0x21,0x0f,0x81,0x54,0x24,0xe0,0x8b,0x95,0x8c,0xc0,0x7a,
0xc9,0x19,0x09,0xee,0x39,0x49,0x72,0xb0,0x62,0xd7,0xeb,0x71,0x61,0x90,0x78,0x5c,
0xc0,0x32,0xb2,0xb9,0x88,0xd9,0x0d,0xe2,0x92,0xd6,0xb6,0x51,0x61,0x13,0x10,0x95,
0x47,0x3f,0x97,0xca,0x98,0xe5,0x98,0x40,0xe9,0xcc,0xc7,0xe3,0x81,0x43,0xc2,0x47,
0xce,0xef,0xd3,0x35,0x06,0x3e,0x17,0x78,0xfc,0x78,0x4f,0x25,0x83,0xeb,0x19,0x72,
0xd9,0xfe,0x1f,0x5e,0xf7,0x0f,0xdb,0x44,0x31,0xa8,0xb4,0x5e,0x62,0xae,0x0a,0x79,
0xe0,0xcc,0x52,0x92,0xa1,0xc5,0x7a,0x8b,0x0c,0x55,0x23,0xdc,0xa6,0xf9,0x9b,0x8f,
0xf4,0x78,0xfb,0xfe,0xdd,0x7b,0xa0,0x93,0x06,0xdd,0x79,0xba,0x0c,0xe9,0xa6,0x69,
0x4a,0xf5,0xdc,0x16,0x67,0x2f,0xdf,0xc2,0x43,0xe7,0x43,0x30,0x5d,0x46,0x78,0x71,
0xeb,0xdb,0x20,0x8e,0x92,0xb6,0x4c,0x3b,0xe9,0x03,0xd5,0xeb,0xb2,0x0d,0x67,0x93,
0x1a,0x86,0x5e,0x32,0x8b,0xce,0x39,0xb6,0x08,0xe5,0xb7,0x11,0x63,0xa8,0xda,0x6b,
0x1d,0xfb,0x01,0x2a,0xf6,0x6d,0xf1,0x8a,0xde,0xa1,0x4e,0x7b,0xfa,0x8a,0xde,0x0d,
0xb5,0xc1,0x40,0x66,0xfa,0x07,0xd0,0x40,0x9a,0x6c,0x28,0x7c,0x84,0xd2,0x2d,0xfd,
0x15,0x14,0xb4,0x88,0x14,0x00,0x00,0x70,0xee,0x91,0x88,0x72,0xbe,0x95,0x2b,0xf2,
0xae,0x1b,0x6a,0xba,0xba,0x5c,0x42,0x11,0x90,0x88,0x13,0x63,0xa6,0xe4,0x29,0x28,
0x22,0x06,0x32,0xc9,0x80,0x26,0x06,0x50,0xd4,0xb6,0x8d,0x22,0x49,0x7f,0x43,0x2d,
0xfa,0xa3,0xb4,0x97,0x7a,0xda,0x89,0x25,0xb7,0xec,0xaf,0xda,0x1c,0xcf,0x70,0x81,
0x89,0x92,0x94,0x62,0xe8,0xae,0xe3,0x95,0x6b,0x9a,0x81,0xf2,0x4f,0x0a,0xfe,0x03,
0xba,0x95,0x5a,0xaf,0x4f,0x4c,0x65,0xd8,0xc5,0x15,0x8c,0xf9,0x0d,0x7b,0xc6,0x51,
0x49,0x5d,0x18,0x06,0xd3,0x30,0x3e,0x05,0x18,0x18,0xb3,0x4b,0x6f,0xf0,0x52,0xa4,
0xf3,0xa4,0x09,0xc8,0x6f,0x8b,0x95,0x7a,0x89,0x3d,0xe5,0x97,0x34,0x23,0xd6,0x17,
0xc6,0x41,0xd3,0x89,0xc8,0xa5,0x0f,0x68,0x6c,0x1f,0xe1,0x0d,0x6c,0x48,0x42,0xc4,
0x20,0x65,0xb0,0xba,0x46,0x0b,0xe6,0x3c,0x6d,0xd2,0x18,0xdb,0xd2,0x7e,0x03,0x23,
0x9c,0xfc,0xb5,0xda,0xbf,0x56,0x86,0xc4,0x17,0xb9,0x35,0x8a,0xd8,0x9a,0xfd,0x6a,
0xa3,0x8b,0xec,0x01,0x17,0x57,0x37,0x2e,0xae,0xc0,0x9a,0xa3,0x55,0x6a,0x23,0x6b,
0x3d,0x42,0x6e,0xda,0x64,0x0f,0xb9,0x08,0xe1,0x97,0x44,0x91,0xd5,0x08,0xa9,0x1c,
0xac,0x55,0x0b,0x77,0xda,0xf7,0xd7,0x0c,0x17,0x6f,0x38,0x6e,0x38,0xc4,0x44,0x80,
0x34,0x6f,0xb3,0x4c,0x4c,0x42,0x62,0x15,0xe4,0x75,0xd3,0x71,0x07,0x58,0x3c,0xb6,
0x28,0xcc,0xac,0xd7,0xc0,0xae,0x5a,0x07,0xfa,0xe3,0x7a,0x0a,0xb3,0x20,0xc2,0x3c,
0xd4,0x92,0x5b,0x75,0x31,0x83,0x6a,0x99,0xdf,0x41,0x25,0xb2,0xc9,0x72,0x3f,0x4c,
0x47,0x7e,0x16,0x18,0x73,0x00,0x3e,0xe1,0x59,0x20,0x92,0x72,0x6e,0xc2,0x1b,0x25,
0x30,0xf1,0xad,0xda,0x27,0x7e,0x6a,0x16,0x4a,0xc5,0x2a,0x46,0xcd,0x07,0x96,0x79,
0x6f,0xb7,0x55,0x43,0x38,0xe6,0xad,0xb3,0x9a,0x80,0xe6,0xb0,0x91,0x4f,0xdd,0x0b,
0x77,0x07,0x6b,0x78,0x8d,0x49,0xf3,0x3e,0x0a,0x1e,0x81,0xec,0x43,0xfd,0x96,0x83,
0x5d,0xa8,0x6a,0xef,0x01,0xd9,0x82,0x6e,0x2b,0xbc,0x30,0xe1,0xea,0x25,0xd4,0x86,
0x60,0x80,0x0e,0xaf,0x69,0x35,0xd7,0x96,0x69,0xe2,0xc1,0xb0,0x5e,0xab,0x50,0xd2,
0x5a,0xe8,0xb5,0x93,0x65,0xe3,0xc1,0x14,0xaa,0xfe,0x3e,0xc2,0x2c,0xf1,0x25,0xec,
0x21,0xda,0x9b,0x26,0x13,0x01,0x4c,0x31,0x67,0xdb,0xad,0x3a,0x8c,0x29,0x5d,0xa8,
0x21,0xa9,0xa3,0xf6,0xca,0xbf,0xa6,0x98,0x05,0x5b,0x93,0x72,0x90,0x7f,0x83,0x9b,
0x60,0xc8,0x0e,0xac,0x38,0x1e,0x58,0xa2,0xbd,0xc2,0x5b,0x19,0x2c,0xa2,0x71,0x7c,
0x9e,0x2c,0x24,0x9a,0x01,0x3e,0x2a,0x34,0x80,0x9b,0xe7,0x49,0x6e,0xbd,0x03,0xcd,
0xc7,0xae,0x11,0x66,0x67,0xe4,0x29,0x0f,0x69,0x83,0x30,0x0b,0x22,0xfb,0x23,0x53,
0x32,0x7e,0xa5,0x52,0xcf,0x80,0xc8,0xd0,0x88,0x1c,0xc8,0x50,0x07,0x75,0x9a,0x50,
0x0a,0x10,0x78,0x4f,0x44,0xe8,0xc0,0xf7,0xa3,0xc5,0xcc,0x77,0xe3,0x37,0x9e,0x61,
0x34,0xca,0x2e,0x42,0x51,0x60,0x81,0x68,0xfb,0x82,0x02,0xfb,0x1e,0xf2,0xaa,0xa9,
0xa4,0x6f,0xb4,0x7a,0x9a,0x04,0xaf,0x38,0x19,0x24,0x29,0x6f,0x70,0xcb,0x10,0xc6,
0x4f,0x58,0xea,0x08,0x7a,0xc4,0xa1,0x77,0xe8,0xad,0x03,0xd7,0xe5,0x0c,0xfc,0x54,
0xa0,0x0a,0x25,0x00,0x55,0x17,0x7b,0xde,0x1e,0xaa,0x5c,0x1b,0xb1,0x64,0xd9,0x91,
0x22,0x53,0x96,0x1d,0x5a,0xc3,0x91,0xeb,0x41,0xf6,0xaa,0x41,0xf6,0xd6,0x81,0xac,
0x50,0xb7,0x95,0x1b,0xf3,0x0d,0xd4,0x7f,0xe1,0x67,0xb3,0xe6,0x27,0x34,0x9e,0x2f,
0x5a,0xbf,0x65,0x58,0x85,0xae,0x7d,0xd1,0xb0,0x0a,0x28,0xd9,0x68,0x58,0xe5,0x31,
0x5c,0xa8,0xc9,0xc5,0xa0,0x6a,0x0c,0x28,0xe7,0x78,0x70,0xba,0x26,0x6a,0x96,0xa4,
0xe1,0xaf,0xa0,0x24,0xf9,0x11,0xc7,0x36,0xf9,0xa3,0x34,0xc9,0x32,0x99,0xd8,0xfa,
0x46,0xbb,0x09,0xe5,0x7d,0x1a,0xfe,0x55,0x90,0x62,0xce,0x2d,0x05,0x8d,0xf2,0x48,
0x62,0xb5,0xe7,0x27,0x6f,0xde,0xbf,0xfb,0xfe,0x4c,0xe5,0xd7,0x81,0xaa,0xa0,0xe3,
0x07,0x18,0xe5,0x9f,0x1b,0xdb,0x2b,0xc4,0x4b,0x3b,0xc0,0xd0,0x5a,0x84,0x71,0xac,
0x52,0x7a,0x07,0x0a,0xd4,0x30,0xc9,0xf1,0x4a,0xab,0x60,0x0c,0xe6,0x54,0x13,0xef,
0x16,0xa1,0x14,0x7b,0x20,0xf4,0x55,0x0c,0x38,0x86,0x05,0x6c,0xc1,0x7a,0xf5,0x87,
0x09,0x1f,0x76,0x92,0x21,0xf2,0x79,0xb2,0xf0,0xc4,0x0b,0x72,0x5c,0xfa,0xb9,0x82,
0x46,0xa9,0x44,0xfc,0x6b,0x1d,0xa7,0x8e,0xe5,0xaf,0x7d,0x04,0x86,0x0d,0x2f,0x73,
0x54,0x37,0x94,0xcd,0x07,0x9d,0x6d,0xa3,0x49,0x37,0x9a,0xb1,0x13,0x0d,0xf0,0x32,
0x44,0x84,0xc6,0xf6,0xb6,0x3b,0xa3,0x4c,0x9b,0x5f,0x32,0x29,0x88,0xb6,0xc0,0xf8,
0x19,0xd9,0x36,0x27,0xa7,0xb6,0x6b,0xae,0xec,0x58,0x09,0xe2,0x40,0x0f,0x70,0xb9,
0x58,0x41,0x13,0x72,0x1d,0xd2,0x4b,0xe4,0x43,0x04,0x4d,0x9f,0x17,0xae,0x14,0xd6,
0xb0,0xd8,0x6b,0x56,0x64,0x7f,0x53,0xe9,0x76,0x83,0xdb,0xf0,0x40,0x4a,0xd1,0xaa,
0x82,0xe5,0x13,0x8f,0x28,0x7d,0x74,0x44,0x37,0xaf,0x20,0x62,0x00,0x05,0xf5,0xb4,
0x46,0x73,0xaf,0x1d,0x0c,0x30,0xc5,0x92,0x24,0x73,0x34,0x6c,0x2d,0x53,0xa5,0xde,
0x38,0xc2,0x9c,0xc3,0x2b,0x52,0x1a,0x3f,0x7d,0x52,0x0b,0x0f,0xfd,0xa8,0x6a,0xb5,
0xd1,0x6f,0xb9,0x7a,0xf4,0x7b,0xfc,0x7d,0xe1,0x9c,0xf7,0x77,0x18,0xe4,0x08,0xdd,
0xf3,0x3b,0x38,0x07,0xa3,0x95,0xfa,0xf5,0x10,0xfe,0xb1,0x8f,0x81,0x9b,0xde,0x6f,
0x56,0xe5,0xd6,0x1c,0xf4,0x64,0xa4,0x91,0x3d,0x7a,0xee,0x4f,0x29,0x0e,0xd8,0xb6,
0x7b,0xad,0x0f,0x6b,0xac,0xac,0xcd,0xe5,0x67,0xee,0x4f,0x79,0xd7,0x0a,0x7e,0xd0,
0x41,0x71,0x47,0xec,0xd4,0x4a,0x57,0x28,0x2d,0xb7,0x7a,0x50,0x87,0x2d,0x6b,0xdf,
0x96,0xb8,0x6d,0x59,0xfb,0x3f,0x76,0xc5,0x9c,0x64,0x6c,0xc1,0xc2,0x91,0xe2,0x16,
0x89,0xaa,0x57,0xae,0x58,0x3e,0x0c,0x0c,0x92,0x16,0x83,0xe1,0x95,0xd4,0x6d,0xad,
0x2b,0x4b,0x62,0x13,0x50,0xd7,0x68,0x5b,0x62,0xd4,0xaa,0xf1,0xcb,0x32,0x48,0x57,
0x67,0x74,0xcf,0x2c,0x1e,0xa3,0xf2,0xe4,0xbd,0xa4,0xa5,0x73,0x72,0x8d,0xe7,0x0d,
0x4b,0x73,0x7a,0x50,0x90,0xe2,0x8d,0xff,0xf8,0xf7,0xb7,0x94,0xe3,0x52,0x9d,0x6e,
0x44,0xb3,0xf8,0xfb,0x68,0xb5,0x98,0x35,0x2b,0x1a,0xe1,0xab,0x1f,0x1a,0xad,0xb6,
0x3c,0x65,0xd6,0x03,0x23,0xa9,0xd7,0x6f,0x5b,0x1a,0xc0,0xad,0xf6,0x35,0x00,0xa7,
0x53,0x17,0xf8,0x4d,0x11,0x5e,0x5b,0x2c,0x33,0xbc,0x10,0x17,0x13,0xec,0x4f,0x39,
0x53,0xd1,0x24,0x49,0xf0,0x30,0x0c,0x5d,0xab,0xe2,0x1a,0xe6,0xdc,0x03,0x6e,0x4e,
0x35,0x06,0x1a,0xdf,0xac,0xcd,0x9b,0x07,0x36,0x31,0x6d,0xb6,0xed,0x48,0x62,0xd1,
0xde,0x76,0xc4,0xe8,0xce,0x6b,0xb9,0x79,0xa8,0x73,0x48,0x39,0xdb,0x92,0xf2,0xeb,
0x81,0x7a,0xaf,0x77,0x09,0x67,0xf2,0x83,0x5d,0xc9,0xdd,0x70,0xbc,0x56,0xb4,0xe0,
0x7e,0xb6,0x20,0x18,0x5a,0xb9,0xd5,0x23,0x41,0xd2,0x1e,0xd5,0xed,0x11,0x0b,0x31,
0xdd,0x70,0x2b,0x72,0x5a,0xf2,0x40,0x20,0xe6,0x14,0x08,0x87,0x49,0x11,0x32,0x11,
0x47,0x72,0x35,0x2a,0x9e,0x35,0x75,0x99,0x95,0xb7,0x6b,0x5e,0x1e,0xd3,0xbe,0x71,
0x83,0xd6,0x40,0x83,0x5f,0x17,0xf8,0x71,0x85,0x99,0x00,0x30,0xf6,0x1d,0xf3,0x80,
0x07,0xbc,0x24,0x15,0x74,0x1b,0x3f,0x5a,0x6f,0xaf,0xe4,0x1a,0xae,0x88,0xe9,0x39,
0x28,0x18,0xd1,0x7d,0xc0,0x23,0xc6,0xd4,0x35,0xaf,0x61,0x09,0xee,0xba,0x4a,0x31,
0xa1,0xb9,0x03,0x45,0x3a,0x00,0x11,0x8a,0xcc,0xac,0x22,0xc4,0xe2,0x69,0x15,0x76,
0x5b,0x30,0x00,0x63,0x55,0xa3,0x2b,0x81,0x02,0x9f,0xa6,0x96,0x55,0xbd,0xd2,0x36,
0xf1,0xd4,0x92,0x15,0x35,0x1e,0x35,0x3a,0xc3,0xe5,0x33,0x25,0xff,0x4d,0x7a,0xd2,
0x4e,0x5e,0x7c,0x7f,0x02,0xb8,0x79,0xc8,0xd1,0x04,0x74,0x49,0x48,0x39,0xf0,0x64,
0x16,0xe6,0xe7,0xa0,0xac,0xf0,0xe8,0x69,0xce,0x60,0xac,0x67,0xf6,0xa5,0xd6,0xa0,
0x37,0xa1,0x56,0x43,0xb7,0x91,0xe1,0x51,0x36,0x80,0x8c,0x6a,0x15,0x65,0x0e,0x45,
0x1d,0x87,0xd3,0xa6,0xb2,0xe7,0x59,0xdd,0x05,0x12,0x27,0xb9,0xca,0x3c,0xcd,0x17,
0x64,0xcb,0x44,0x63,0xb0,0x2a,0x86,0x18,0x92,0x4e,0x7a,0x51,0x8c,0xbe,0x69,0x3c,
0x9e,0xa9,0xd7,0x45,0x92,0x8e,0x29,0xb0,0xe5,0x53,0x86,0x0e,0x0b,0xcf,0xf3,0x8c,
0xc0,0xc0,0xc4,0x20,0xcd,0x9f,0x94,0xa4,0x08,0x5b,0x7a,0xff,0x53,0xbe,0xa0,0x65,
0x8e,0x9c,0xf6,0xa2,0xe0,0xa4,0x09,0x51,0xca,0x12,0x60,0x97,0x24,0xcb,0x8e,0xec,
0x8b,0x83,0xbf,0x41,0xfb,0x2d,0xc6,0x63,0x85,0xff,0x88,0x60,0xc5,0x53,0x6c,0xb5,
0xc3,0xd3,0x0a,0x9a,0xdb,0x0d,0x18,0xe5,0xd0,0xe0,0x03,0x7a,0x51,0xae,0xf3,0x4f,
0x08,0x14,0xea,0x50,0x9b,0xa6,0xd6,0x0a,0x6a,0x51,0x93,0x76,0x3d,0x0a,0xa7,0x55,
0x4d,0x61,0x0e,0x6d,0x09,0xa2,0x45,0x41,0xa0,0x61,0xbc,0x74,0x02,0x31,0x31,0xe7,
0xf3,0x1b,0x25,0x22,0xfd,0x61,0x46,0x71,0x01,0x37,0xb0,0xbe,0x60,0xf5,0x23,0xcc,
0x36,0x95,0xf8,0x50,0x2a,0xd1,0xd3,0x25,0x8a,0xd0,0xce,0xed,0xb2,0x2b,0x65,0xd2,
0xb9,0xf0,0x9e,0x97,0xca,0xa0,0x09,0xe1,0x42,0xa4,0x3b,0x88,0x80,0xae,0xd2,0xcc,
0x22,0x54,0x5f,0x4c,0x53,0x7f,0x88,0x04,0x98,0xe2,0xde,0x31,0x06,0xc9,0xc8,0x6b,
0x70,0xfc,0x9b,0x80,0xae,0xc1,0xc1,0xac,0xb7,0x9e,0x49,0xbe,0x41,0xc3,0x03,0x54,
0x51,0xcf,0xac,0x4d,0x06,0x9c,0xd4,0x81,0x08,0xdb,0x74,0x14,0x16,0xf3,0x90,0x45,
0xce,0xe5,0x0a,0x3c,0xe8,0x4d,0xea,0xa5,0xa5,0x7a,0xba,0xbd,0xe7,0x6b,0xea,0x0d,
0xd7,0xb4,0xb7,0xb6,0x5e,0x45,0x7b,0x6b,0x8a,0x57,0xb4,0xb2,0xa6,0x74,0x19,0xf6,
0xda,0xa1,0x97,0x4a,0xaf,0xed,0xb8,0x53,0x5a,0x2e,0x00,0x43,0xf9,0x44,0xcd,0x92,
0xc0,0x2d,0xca,0x5e,0x03,0x10,0xd9,0x7f,0xa3,0xb4,0xc5,0xc3,0x2c,0x91,0xb9,0xfc,
0xf7,0x40,0x2a,0x43,0xca,0xea,0x6c,0xf6,0xce,0xd8,0xa8,0x93,0xe1,0x04,0xc0,0x08,
0x31,0x23,0x24,0x1f,0x32,0xce,0xf0,0x1e,0xa5,0xad,0xd7,0x8d,0x28,0xd2,0xf9,0x9e,
0x31,0xcc,0x01,0x01,0x21,0xb5,0x6d,0x0d,0xec,0x4d,0x36,0x4e,0x3f,0x11,0x50,0x82,
0x15,0x3e,0xf3,0x6b,0x8e,0xf1,0xeb,0xbb,0x1e,0x29,0xe7,0x6b,0x10,0x8c,0x83,0xb1,
0x0e,0x98,0x70,0xb6,0xee,0xc8,0x0e,0xcc,0x28,0x3f,0xb5,0xd5,0x41,0x3f,0xa7,0x50,
0x17,0x75,0x14,0xe7,0xe7,0xe5,0x7c,0x61,0xef,0xe7,0xe1,0x29,0x9e,0x5f,0x83,0x23,
0xe8,0x0a,0xf3,0x32,0x57,0x47,0x5f,0xbb,0x2f,0xa7,0x5c,0x93,0xcf,0xcc,0x2b,0x8c,
0x9e,0xe5,0x5d,0xb9,0x96,0x71,0x65,0x7e,0x81,0x66,0x4f,0x09,0xd8,0x71,0x4b,0xef,
0xc2,0x62,0x3e,0x41,0x21,0x17,0x7f,0xd5,0x01,0xb0,0xc0,0x30,0xc7,0x8a,0x63,0x5b,
0x60,0x9c,0x96,0xce,0x6c,0xb5,0xad,0xba,0x33,0x79,0x46,0xe5,0x56,0x5b,0x22,0x26,
0xa3,0x9b,0x95,0x84,0x14,0xf3,0x01,0x20,0xa6,0x38,0x87,0x47,0xd9,0xca,0x49,0xf2,
0xd3,0x84,0x24,0x3f,0xde,0x02,0x46,0xe9,0x48,0x34,0x22,0x31,0x16,0xa5,0x14,0x00,
0xf8,0x1c,0xd5,0x27,0x98,0x94,0x63,0x0a,0xae,0x23,0x55,0xcd,0x39,0x2a,0x23,0x6e,
0xe8,0xfc,0x7f,0x9c,0xcb,0xf0,0xbb,0x7f,0x04,0xce,0x86,0x80,0xc8,0x7e,0x01,0xe9,
0xe0,0x7e,0xfd,0x27,0xf5,0x15,0x8d,0x14,0xde,0x79,0xb4,0x9a,0xab,0xc8,0x86,0xcc,
0x7d,0x85,0x39,0xc7,0xe4,0x44,0xaa,0xcb,0x72,0x42,0x54,0x40,0x3e,0x8a,0x7e,0x0a,
0xb9,0x2f,0x8f,0xce,0x6c,0x8d,0xcd,0x28,0xbd,0xb7,0xa3,0x2d,0xe8,0x83,0x18,0xf0,
0xd6,0x9e,0x3e,0x7c,0x07,0xaf,0x88,0x1e,0xb4,0x58,0x16,0xac,0x07,0xd0,0xc1,0x21,
0xf5,0xb1,0x55,0xb9,0x6b,0x4c,0x11,0x4b,0x50,0x02,0xd7,0x2c,0x1f,0xcd,0xe2,0x65,
0x5b,0x7a,0x1d,0x55,0xbc,0x33,0x87,0x1f,0x2a,0x88,0xfe,0x80,0x24,0x04,0x1e,0x49,
0x90,0x12,0x01,0xf3,0x04,0x60,0x34,0x2c,0xdd,0xfd,0x51,0x58,0xef,0xb8,0xa0,0x33,
0xba,0x7f,0xce,0x51,0xdd,0x4b,0x6a,0x83,0x1a,0x8c,0x75,0xb6,0xaa,0xa4,0x3b,0x38,
0x03,0x96,0x8a,0xd8,0x67,0x75,0x10,0x68,0xc6,0x99,0xa2,0x05,0x67,0x31,0xfc,0xc7,
0x01,0xce,0x07,0xfd,0xfc,0xa7,0x81,0x58,0xb5,0xef,0xd9,0xa9,0x21,0xad,0x43,0x9a,
0x2a,0x3b,0xa4,0x39,0x9c,0x29,0x73,0xce,0x0e,0x04,0xab,0x11,0xbc,0x51,0xcd,0x6a,
0xc6,0x3d,0x99,0x42,0xd1,0x8e,0x87,0x0c,0xd4,0x54,0x1f,0x73,0x8e,0x5b,0x9e,0x71,
0x4f,0x52,0xcc,0x6b,0xee,0xab,0x7c,0x97,0xd2,0xdf,0x17,0x7c,0x5e,0x95,0xd6,0x04,
0x7a,0x03,0x36,0xa1,0x3c,0x9a,0xba,0xaf,0xa5,0x3c,0x22,0x2e,0x44,0x97,0xab,0xb9,
0xd5,0x90,0x62,0x45,0xb8,0x27,0x18,0xa5,0x59,0x82,0x0a,0x25,0x92,0x28,0xda,0xc0,
0xf2,0xc8,0xad,0xca,0x7e,0x35,0x30,0xd4,0x73,0x68,0x08,0xed,0x99,0xfc,0xa1,0x0b,
0x35,0xdd,0x52,0x28,0xf7,0x81,0xf1,0xb9,0x2f,0x87,0x48,0x79,0x50,0x33,0xbe,0xce,
0x30,0xf7,0x11,0x6a,0x19,0xf5,0x00,0xd2,0x2a,0x00,0x91,0x04,0x10,0x64,0xd7,0x77,
0x01,0xa8,0xea,0x80,0x6c,0x3f,0xd0,0x95,0xd1,0xd6,0x8f,0x33,0xf5,0x64,0xc7,0x3d,
0x1c,0xac,0xa7,0x68,0xc4,0x78,0x91,0xa4,0xdf,0xbe,0x7e,0xf7,0x81,0x0c,0xc4,0x5e,
0x5f,0x06,0x22,0xc7,0x7e,0x9a,0x26,0xd7,0x98,0xc4,0x89,0x1c,0x90,0xe4,0x8d,0x55,
0x09,0x3d,0x56,0x82,0xae,0x09,0xbc,0x27,0xe7,0x90,0x00,0x16,0xb0,0x6c,0x9d,0x51,
0x22,0x4b,0x17,0x53,0x61,0x60,0xb4,0x5d,0x94,0x4c,0x3b,0x1a,0xcc,0x40,0x3b,0x72,
0xcd,0x0d,0x3f,0x1f,0x8e,0xce,0x5f,0xbf,0x17,0x64,0x7f,0x2b,0xb7,0x67,0xa8,0x4f,
0x28,0xc9,0xc4,0x19,0x00,0x84,0xaf,0x4e,0x9c,0x07,0x00,0x1a,0x3d,0x11,0x5b,0x7c,
0x0d,0x25,0x60,0x02,0x04,0xe5,0x3c,0xb8,0x26,0x65,0x10,0xed,0xbf,0x2d,0xdb,0x4b,
0x9a,0xcd,0x42,0x72,0x1a,0x91,0xbe,0x4a,0xbd,0xe6,0x35,0xc9,0x11,0xaf,0x78,0xd7,
0x1d,0x47,0xc3,0x9a,0x03,0x3b,0x34,0x4e,0x25,0x83,0x54,0xcc,0x2c,0x81,0x51,0x67,
0xbf,0xec,0x02,0xee,0x81,0x7c,0x00,0x4a,0x6d,0xd4,0x9f,0xce,0xb7,0x4a,0xe0,0x51,
0x69,0x82,0xd5,0xb2,0x45,0xa0,0x3a,0x15,0x6e,0xe0,0x40,0x27,0xa9,0x98,0x5b,0x88,
0xe4,0xa4,0x01,0xe5,0x16,0xe2,0xc3,0x74,0x55,0x81,0x3b,0xda,0xf3,0x82,0x1a,0xc2,
0x15,0x58,0x28,0x2b,0xf4,0x80,0xe1,0x0f,0x83,0x9c,0x7f,0xd2,0xce,0x42,0xb5,0xe7,
0xe9,0x9b,0x1e,0x85,0x0a,0x8f,0x51,0xe2,0x96,0x8a,0x1c,0x9c,0x38,0x59,0x0e,0xf0,
0xd2,0x4e,0x80,0xd1,0x56,0x15,0x41,0x96,0x8f,0xaf,0x4c,0xfa,0x46,0x47,0x35,0x30,
0x60,0x1d,0x8d,0x80,0x2a,0x21,0x10,0x2b,0x51,0x1d,0x5b,0xfb,0x9a,0xe8,0x4e,0xc8,
0xa4,0x45,0xd2,0x1f,0x49,0x8b,0x01,0xd3,0x66,0x04,0x26,0x00,0x94,0x8e,0x4e,0x23,
0xa9,0x66,0x07,0x74,0xae,0x19,0x0b,0xb1,0xde,0x35,0x4e,0x30,0x72,0xf8,0x3a,0x31,
0x26,0x83,0x26,0x70,0xe8,0xc1,0x28,0x5a,0x8e,0x83,0xac,0x09,0x6b,0xb4,0xd5,0x72,
0x27,0x49,0x0f,0x11,0x63,0xb0,0x9b,0x37,0x2d,0xfb,0xa4,0x3d,0xcc,0x34,0x2e,0x31,
0xcb,0x6b,0x51,0x05,0x33,0xb5,0x61,0xba,0xba,0x4f,0x09,0x26,0x87,0x72,0xdf,0x0d,
0x33,0xd7,0x30,0x4b,0xfa,0x14,0xcf,0x78,0xdd,0x59,0xf8,0x7a,0x90,0x43,0x1b,0xa4,
0x3b,0xf4,0x22,0x48,0x3a,0xf9,0xae,0x41,0xde,0xb2,0x78,0x94,0xd1,0x3a,0xac,0x26,
0xa1,0xa7,0x80,0x6e,0xe7,0xb6,0x5f,0x9c,0x05,0x39,0xee,0xaf,0x64,0x5a,0x16,0x29,
0x0d,0x2c,0x0a,0xfc,0x8c,0xce,0x40,0xe0,0x2a,0xd6,0xf2,0xc6,0x12,0x24,0x86,0x03,
0x3a,0x0e,0x11,0x61,0x4e,0xe0,0x1c,0x60,0x62,0x8e,0x4d,0x64,0xdb,0x12,0x93,0xac,
0x58,0x4d,0xb6,0x36,0xab,0xc6,0x37,0xb9,0x94,0xaa,0x96,0xce,0xf1,0x72,0x2a,0xab,
0xbf,0xc3,0x5c,0x3d,0xd4,0x7d,0xfb,0x9c,0x0c,0xbd,0x30,0xc7,0x5f,0x46,0x7c,0x50,
0xc6,0x2a,0x56,0x7b,0x52,0xe6,0x58,0x1f,0x95,0xc1,0xd4,0x1c,0xe9,0x40,0x20,0x7b,
0xcd,0x07,0xe4,0x8a,0x1e,0x0e,0x44,0x7f,0x5f,0x9d,0x95,0x39,0x96,0x67,0x65,0x8e,
0x5f,0x99,0x63,0x61,0xd4,0xc0,0x8b,0x6a,0xb7,0x17,0x4a,0x02,0x3e,0x03,0xf5,0xe5,
0x1e,0x66,0xe7,0xe4,0xcc,0xce,0xde,0x7e,0x5b,0x1d,0x92,0xe9,0xf7,0x1e,0xd1,0x77,
0x6b,0x60,0xce,0xc1,0x14,0xe5,0x65,0xb6,0xbe,0xbb,0x07,0x52,0xb4,0xb7,0xd9,0x2e,
0x52,0x7f,0xc2,0xa5,0xa2,0x58,0xdd,0x01,0x97,0xd1,0xe6,0x07,0x5c,0x8e,0xad,0x03,
0x2e,0xc7,0x1c,0x21,0x75,0x8c,0x47,0x5c,0x18,0xb7,0xf2,0x80,0xcb,0x31,0x9f,0x70,
0x39,0x76,0x8f,0xb8,0x8c,0xe4,0x71,0x95,0x25,0xad,0xbc,0x63,0x0e,0xce,0x30,0xa7,
0x3b,0x61,0x7c,0xc7,0x1f,0x35,0x15,0x38,0xa7,0x46,0x8e,0x6b,0x8f,0x8d,0x1c,0xbf,
0x2a,0xc6,0xf2,0x95,0xe7,0xad,0x32,0x98,0xaf,0xa4,0xd7,0x80,0x05,0x72,0xe1,0xc6,
0xfa,0xc9,0x1e,0x1e,0x23,0x46,0x8f,0x75,0xb4,0x9f,0xec,0xcb,0xf1,0x2b,0x7e,0x3b,
0xd4,0xf8,0xab,0x89,0xf7,0x53,0x9f,0xdd,0x6d,0x43,0x8a,0x37,0x3f,0xb0,0xbf,0x51,
0xcd,0x63,0x0a,0x46,0xc1,0x26,0xe0,0xbf,0x1f,0x91,0x60,0x5b,0x66,0x7e,0x6a,0x22,
0x9a,0x46,0x95,0x9b,0x8a,0xa3,0xc2,0x66,0x9e,0x1c,0x0c,0x9d,0xd3,0x90,0x43,0xe0,
0xdf,0x1f,0x79,0x2b,0xf4,0xf8,0x95,0x3e,0x7a,0x3e,0x5a,0x1b,0x47,0x68,0x8a,0x38,
0x3b,0xfb,0x23,0x6b,0xef,0x15,0x27,0x9a,0x8a,0x72,0x53,0xea,0xab,0xf4,0xa4,0x17,
0xbe,0x12,0x2e,0x55,0x11,0x7b,0xb3,0x7f,0x7d,0x1b,0x8c,0x29,0x24,0x13,0x82,0x55,
0x68,0x43,0x4f,0x5d,0x45,0x91,0x62,0x84,0x16,0x2d,0x93,0xba,0x61,0xcb,0x8d,0x90,
0x51,0xe5,0x3e,0xb4,0x7e,0x5b,0xda,0x0c,0x19,0x55,0xec,0x4f,0xab,0xa8,0x1a,0x54,
0x55,0x0f,0x85,0x9b,0x75,0xc4,0x3c,0x95,0x52,0x13,0x98,0xaa,0xef,0x28,0x5c,0x05,
0xab,0x3f,0xc3,0x8c,0x66,0xa0,0xc1,0xef,0xef,0xd6,0x6e,0xb4,0xbc,0x5b,0xb3,0xcf,
0xf2,0xee,0x2b,0xb7,0x59,0x68,0xe6,0xf0,0x18,0x36,0x6e,0xaa,0x8c,0x38,0xb4,0xb3,
0x62,0x23,0x65,0xe4,0x46,0x28,0xea,0xbd,0x94,0x91,0x1b,0xa4,0x68,0xb6,0x53,0x2a,
0xa7,0x45,0xa6,0xb7,0x93,0x31,0xeb,0x95,0xb9,0x5a,0x2a,0xb1,0x56,0xc8,0x72,0x20,
0xd9,0x89,0x83,0x71,0x39,0xae,0xaa,0xf9,0xd6,0xc1,0xb0,0x86,0x29,0x9a,0x50,0x13,
0x10,0x2b,0x3b,0x2a,0x5c,0x66,0x93,0x15,0xd0,0x92,0xd4,0x37,0xf2,0x56,0xdd,0x56,
0xd5,0x2a,0x18,0xe1,0xb5,0xc3,0xa6,0xd4,0xa2,0xb7,0x6a,0x55,0xad,0x84,0x8d,0x5a,
0xeb,0x59,0xad,0xf5,0xea,0x5a,0xeb,0xdb,0xad,0xf5,0xd7,0xb6,0x56,0x0a,0xb2,0xd1,
0x5f,0x4a,0x81,0x59,0x6b,0xf0,0xa9,0x83,0x1f,0x46,0x35,0xa1,0x0f,0x4e,0xc0,0x2c,
0x50,0xc5,0x4c,0x05,0x3e,0x8c,0xe4,0x95,0xcc,0x88,0x15,0x0c,0x72,0x18,0xc9,0xcb,
0x98,0xe9,0x22,0x66,0x2b,0xd0,0x61,0x54,0x08,0x73,0xc0,0x20,0xda,0x9b,0x96,0x89,
0x5c,0xc0,0xe7,0x55,0xab,0x32,0x7e,0x61,0x54,0x0a,0x78,0xd8,0xb8,0xf2,0xad,0x15,
0xff,0x47,0x51,0x47,0xec,0x4c,0x18,0x08,0xb6,0x1d,0xe9,0x70,0xe0,0x32,0x0b,0x47,
0x94,0x32,0x9b,0xaf,0x98,0x97,0x8a,0x9b,0x3e,0x97,0x51,0xef,0x10,0x52,0x21,0x01,
0x5f,0x12,0x9c,0x83,0xe2,0xcb,0x84,0xe7,0x98,0xf5,0xae,0x2f,0x82,0x67,0x30,0x1d,
0xe9,0xff,0x41,0x9b,0xd5,0xce,0x5b,0xd3,0x05,0x11,0xc0,0xde,0x20,0x53,0xa4,0x70,
0x18,0x6d,0x0d,0x93,0x18,0xad,0x09,0xe2,0x29,0x13,0xd3,0x8e,0x5e,0x46,0x6b,0x44,
0xd7,0x7a,0x62,0x5f,0x56,0x09,0x0f,0x9b,0xd6,0x97,0x8a,0xce,0xaf,0x5a,0xb5,0xb2,
0xa5,0x82,0xc2,0xeb,0xe9,0xbb,0xa6,0x53,0x7e,0x3a,0x2a,0x35,0xd8,0x16,0xbb,0x48,
0x2d,0xca,0x6c,0xa5,0xac,0x2c,0x7d,0x55,0x41,0x85,0x8f,0x4a,0xd2,0xa1,0xdb,0xa6,
0x74,0xc3,0x6e,0x3c,0xff,0x68,0x4d,0xac,0xfe,0xa8,0x3e,0x2a,0x7b,0xe4,0x84,0x4f,
0x17,0x2f,0x27,0x69,0x00,0xb1,0xe1,0x33,0x39,0x80,0xe0,0x37,0x06,0x85,0xf0,0x7c,
0xeb,0xb3,0x26,0x7d,0x46,0x6e,0xd4,0x76,0x74,0x1d,0x19,0x5c,0x3d,0x5a,0x13,0xb8,
0x7d,0x47,0xcb,0xd8,0x24,0xd3,0x58,0xa9,0x29,0x29,0xab,0xeb,0xda,0x73,0x60,0x1a,
0x75,0xad,0x78,0x7d,0x86,0x86,0xd6,0xc1,0x43,0xf3,0x12,0xd8,0xa3,0xcd,0xc0,0x58,
0x77,0x78,0x54,0x82,0xb1,0x35,0xb1,0x4d,0xf0,0xbe,0xb4,0xc0,0xa1,0xa6,0x2d,0xfe,
0xfa,0x2f,0xff,0x2a,0xf4,0x75,0x31,0xa5,0xc6,0x31,0x6b,0x34,0x46,0x27,0x54,0x0e,
0x10,0xb5,0xde,0xaa,0x4a,0x56,0x02,0x10,0x0b,0x91,0xa6,0xcf,0xbd,0x3e,0x6f,0x50,
0xd8,0x86,0xc0,0x57,0xed,0x02,0xd4,0x2a,0xcb,0x64,0x3a,0x5b,0x42,0x59,0xa5,0x37,
0xb3,0x84,0xf2,0x7d,0x47,0x28,0x1b,0x03,0xdb,0xd9,0x15,0x29,0x58,0x7b,0x75,0xdb,
0x22,0x46,0x15,0x59,0xb7,0x29,0x52,0xf8,0x6c,0xef,0x8a,0x58,0x06,0x5a,0x49,0x23,
0x30,0x1b,0xce,0x74,0xa6,0x9e,0x64,0x91,0xc9,0x96,0x39,0x5b,0x2d,0x92,0x9c,0x3c,
0x7f,0x4a,0x4a,0x60,0x4b,0x1d,0x2d,0x23,0x30,0x6f,0x4e,0xaf,0xaf,0x70,0x82,0x50,
0x9a,0xb6,0x04,0x83,0xef,0xb6,0xc1,0xd9,0x58,0xf4,0x88,0x66,0x48,0x2f,0xb2,0x2b,
0x68,0x11,0x57,0xaa,0xd0,0x37,0x15,0x2c,0x24,0xda,0x26,0xde,0x6f,0xf7,0xd9,0x6f,
0x44,0x28,0xd5,0x4e,0x7b,0x93,0x73,0xeb,0x45,0xc1,0x93,0xf2,0xf5,0x13,0xed,0xc8,
0xaf,0xda,0x19,0x97,0x86,0x28,0x25,0x37,0xf8,0x58,0x90,0x59,0x4e,0xfa,0x80,0xda,
0xad,0x32,0x36,0x58,0x09,0xc0,0xab,0xcd,0x4d,0xc4,0x32,0x05,0xe9,0xa4,0x5b,0x3c,
0x69,0x87,0x3c,0xcf,0x98,0x8f,0x9c,0x48,0x01,0xca,0x2f,0x0f,0x98,0x1c,0xd0,0x61,
0xca,0xf7,0x11,0xb0,0xdf,0x91,0xe6,0xdc,0x14,0xe8,0x5b,0x05,0x46,0x1e,0xa5,0x6d,
0x6a,0x8c,0x96,0x59,0x9e,0xcc,0x1b,0x75,0x19,0x57,0xd4,0xe6,0x91,0xb2,0x7f,0x8d,
0x37,0xec,0x94,0x32,0xb5,0x5b,0x4e,0x32,0x37,0x4a,0xb3,0xe4,0x1f,0x3b,0x96,0x09,
0x5e,0x9a,0x9b,0xcc,0x6d,0xc9,0x89,0xe2,0xb8,0xca,0x4a,0x1e,0xba,0xdb,0x83,0xcd,
0x68,0xcc,0x76,0x9e,0x1d,0xcb,0x64,0x32,0x1b,0x55,0x2c,0xba,0xcf,0x54,0x65,0xcb,
0x7f,0xb6,0x20,0x7c,0x64,0x6d,0xb6,0xa5,0xda,0x98,0x27,0x87,0xbc,0x85,0x18,0x05,
0xb7,0x9c,0xff,0x97,0x47,0x6b,0x59,0xee,0x8b,0x8a,0xf9,0xda,0x84,0x09,0xcb,0xb8,
0x9e,0xb1,0x6b,0x55,0x3e,0xb3,0xad,0x25,0xa4,0x21,0xcc,0xac,0x28,0x89,0x08,0x73,
0x5c,0xa9,0xe9,0xd2,0xf9,0x07,0x9c,0x18,0xcf,0x23,0xd0,0x52,0x1a,0x1e,0xa3,0xaa,
0xd1,0x32,0xdb,0xf6,0xb8,0x57,0xab,0x77,0xec,0x83,0xa8,0xee,0xa2,0x1b,0xf8,0x32,
0xf6,0x73,0xc0,0x3f,0xb0,0x1a,0x5a,0x08,0xe1,0xd8,0xda,0x5e,0xff,0x43,0xb3,0xc1,
0x19,0xb6,0xf0,0xe6,0x4c,0x80,0x3e,0x0b,0xc7,0xe3,0x80,0x6f,0x11,0x74,0x17,0x14,
0x14,0xa4,0x49,0xfa,0x90,0x5c,0x3b,0xc5,0x9a,0x1b,0x5b,0xcf,0x35,0x59,0x3e,0xd7,
0xd5,0xd0,0xad,0xbe,0x2b,0xc5,0xd0,0xca,0x53,0xb5,0x56,0x6d,0xbe,0xcd,0xe7,0x6e,
0x1c,0x0a,0x15,0x32,0x6b,0x50,0xc9,0x6f,0x4a,0x01,0x10,0xb2,0xfc,0xa1,0xca,0x38,
0xfe,0x49,0x86,0x82,0x2e,0x7c,0x20,0x0f,0x95,0x7b,0xc8,0x60,0xf7,0xa2,0x18,0xae,
0xab,0x82,0x65,0x3f,0xab,0xcc,0xc4,0x0c,0x50,0xe5,0x37,0x93,0xb9,0x8d,0xf1,0x7e,
0x8a,0x5d,0x3c,0xe2,0xbe,0xdb,0xb6,0x83,0x3e,0xed,0xd8,0xdd,0xaf,0x26,0x0c,0x98,
0xfc,0xfa,0x4b,0x2c,0x9a,0x77,0x0f,0xd8,0x26,0x1e,0x3b,0x0a,0x84,0x0b,0xba,0xa1,
0x20,0x56,0xba,0x2a,0x77,0x61,0xe0,0xf2,0x4e,0x97,0x23,0x94,0x83,0xe3,0xe3,0x28,
0x89,0x83,0xa6,0x8d,0x87,0x96,0x15,0xe5,0x6c,0x31,0xcc,0x5a,0x96,0x59,0x60,0x9a,
0xa6,0xa4,0x5b,0xc6,0xe6,0x7c,0xb7,0x8a,0xb9,0x2a,0x72,0x02,0x85,0x6d,0x99,0xad,
0xbd,0xe0,0x83,0x71,0x43,0x85,0x8f,0xc6,0xb8,0x99,0xd4,0xec,0x50,0x9e,0x5a,0x05,
0xe1,0x34,0xfa,0x62,0x00,0x54,0xdf,0xba,0x06,0xdc,0x7c,0x19,0x07,0x51,0xee,0xb7,
0x7e,0x4f,0x25,0x4f,0xad,0x1f,0x33,0x3f,0xf6,0x42,0x59,0x93,0x53,0xd3,0x29,0xf6,
0x40,0x70,0xcf,0x5a,0x05,0x00,0x05,0xfe,0xe6,0xf1,0xa5,0x3f,0x7d,0x34,0x2c,0x28,
0x9d,0xbb,0x18,0xd8,0x1e,0xb3,0x0a,0x11,0x69,0xea,0x7e,0xad,0xac,0xac,0x98,0x74,
0x7b,0x5f,0xa8,0xc4,0xc9,0xcd,0x3e,0xd4,0x26,0x68,0xfe,0x03,0x5e,0xe7,0x1c,0x8f,
0xdf,0x81,0x51,0x5f,0x11,0xbc,0x8f,0xb5,0xc8,0x7c,0xc0,0xdc,0x76,0x0f,0xa4,0xa7,
0x56,0x56,0xc1,0x8b,0xf8,0x4a,0x55,0xf4,0xb9,0x59,0x2b,0x06,0x95,0x0d,0x91,0xbf,
0xfc,0x6f,0x82,0x54,0x2a,0x80,0xa9,0xbe,0xb1,0xc0,0xab,0x5f,0x39,0xb4,0xa0,0xe2,
0x6a,0xcb,0x06,0xde,0x84,0x6c,0x5b,0x90,0xf2,0x99,0xae,0xe8,0xd3,0x5b,0x7a,0x05,
0xd3,0x07,0x1a,0xb4,0xbf,0x3b,0x06,0x9b,0x1a,0x06,0x18,0x34,0x6f,0xd0,0x16,0x2e,
0x0d,0xc3,0xca,0x64,0x5d,0xb2,0xa8,0xe4,0x40,0xac,0x34,0xd8,0x56,0x11,0x23,0x19,
0xf3,0x14,0x2f,0x71,0x3d,0x94,0xcd,0x9c,0xe3,0x93,0x9d,0xf4,0xe6,0x9a,0x6e,0x09,
0xc2,0x0b,0x36,0xad,0x14,0x67,0xe8,0x0c,0xef,0x5a,0x7d,0xc3,0x1b,0x73,0x9d,0x93,
0x23,0xcd,0x3d,0xbb,0x65,0xda,0x4e,0xc5,0xe0,0xf3,0x3d,0xfb,0xf8,0x07,0xd7,0x7d,
0x15,0xae,0xaf,0x4b,0x1b,0xee,0x35,0x75,0x5f,0x86,0x74,0x27,0xd0,0x9d,0x2d,0xdf,
0x51,0xd3,0xc9,0xb0,0x26,0xb7,0xd4,0xeb,0xf3,0x8b,0xb7,0x2a,0x20,0xe2,0x39,0x11,
0x7d,0x71,0x55,0x8d,0xd0,0x77,0x8e,0xa7,0xdc,0x21,0x40,0xa0,0xa5,0xd3,0xdf,0x51,
0x86,0xd4,0x2e,0xaa,0x62,0x52,0x76,0x95,0x5e,0xd3,0x88,0x18,0x37,0x6a,0x50,0x67,
0x53,0x2f,0x17,0x9c,0x85,0x0e,0xe7,0xb7,0x36,0x99,0x1d,0x5e,0x52,0xe0,0x11,0x35,
0x42,0x01,0xdd,0xf5,0xd0,0x96,0xa3,0x3a,0x3b,0xf4,0xf9,0x3b,0x1b,0xea,0x8e,0x11,
0xe6,0x36,0x74,0xa7,0x19,0x76,0xb5,0xa9,0x19,0xb6,0x87,0x26,0x54,0x93,0xde,0x5c,
0xeb,0x45,0xc4,0x4b,0xdc,0x8c,0x55,0x47,0x69,0x5f,0x15,0xa9,0xee,0x49,0xcd,0x37,
0xe4,0x4b,0xc0,0x7a,0x22,0xe6,0x38,0xb3,0xd0,0xa2,0x72,0x35,0x86,0xdf,0x6e,0xfb,
0x6e,0x88,0xfc,0x35,0xc6,0xaf,0x1c,0x62,0xd9,0xf4,0xfd,0x9b,0x9d,0x14,0xec,0xb6,
0x9e,0x18,0x8a,0x1c,0x4b,0x1a,0xad,0xc2,0x82,0x31,0xb1,0x19,0x6d,0xe1,0x72,0x0c,
0x7d,0xab,0x00,0x99,0xb0,0x55,0x77,0x11,0x60,0x90,0x48,0xed,0x5d,0x04,0xeb,0x57,
0x11,0xcd,0x89,0x63,0x96,0xbe,0x5f,0x5a,0x51,0x1b,0x76,0xd7,0xd1,0xbe,0x2e,0x2c,
0x25,0x6b,0xd1,0xe1,0x5d,0x2a,0x1b,0xcf,0xae,0x6d,0x76,0x42,0x7b,0x9b,0x93,0x45,
0xd1,0xec,0xe4,0xca,0xf7,0x8a,0x8c,0x73,0x13,0x96,0x76,0x07,0xcd,0x38,0xf7,0x22,
0xdc,0x37,0x4f,0xd5,0x28,0x2d,0xf0,0x22,0x2b,0x7a,0xc6,0xd1,0x5c,0x64,0x5f,0x89,
0x21,0xa3,0xa6,0xb1,0x69,0x57,0x9d,0xde,0x61,0x58,0x97,0x75,0x67,0x89,0xda,0xc4,
0xf8,0x02,0x0d,0x5d,0x1a,0x00,0x32,0xa1,0xbf,0xad,0xa9,0x5b,0xe1,0xc1,0x0a,0x6e,
0xb1,0xff,0xc6,0xc0,0xb7,0x8f,0x13,0xfe,0x3d,0x26,0xba,0x77,0x26,0xcd,0x45,0xf4,
0xdd,0xf1,0xf3,0x38,0x6a,0x19,0x57,0x03,0xbf,0x9c,0xb3,0xb1,0xf0,0xbc,0xf1,0x59,
0xd4,0x9a,0xc2,0x44,0x6a,0xd8,0xb3,0xaa,0xd3,0xa8,0x54,0xa7,0x78,0x1c,0x15,0x5f,
0xd6,0xa8,0xb4,0xd6,0x79,0xd4,0x3b,0x00,0x80,0x46,0xba,0xa9,0x7a,0x2b,0x95,0xcd,
0x2a,0xe5,0xb6,0x64,0x29,0x57,0x34,0x57,0x77,0xb2,0x55,0xd9,0xc8,0x66,0xbc,0xd2,
0x4a,0x5e,0x77,0x37,0xc6,0x67,0x96,0x53,0x66,0x22,0xee,0x36,0xdd,0x0c,0x9d,0x87,
0xad,0x82,0x4d,0x61,0x7f,0x33,0x79,0xd7,0x38,0xd5,0x75,0x65,0xac,0xe4,0x8e,0xba,
0x61,0x48,0xdb,0x3b,0x26,0x72,0x6e,0x33,0xeb,0xa7,0x1c,0x4e,0x57,0xf6,0xe8,0x15,
0x5c,0x6b,0x57,0x61,0x70,0xfd,0xf7,0x9a,0x63,0x5c,0xde,0x67,0x78,0x34,0x84,0xf9,
0x4c,0xe2,0x0e,0xe9,0xce,0x03,0x3c,0xf3,0x01,0xb3,0x9f,0x87,0x23,0x91,0x63,0x3c,
0x33,0xde,0x76,0xe3,0x47,0x99,0xbe,0x6e,0x11,0xb7,0x7a,0xcf,0x4e,0xde,0x9c,0x1c,
0x9f,0x9f,0xbc,0xd0,0xa7,0x75,0x66,0x49,0x44,0x27,0x73,0x46,0x33,0x3c,0x10,0xda,
0x91,0x41,0x63,0x6d,0x31,0x8d,0xf0,0x1a,0xc0,0xa1,0x1f,0xe1,0x6d,0x86,0xe1,0x28,
0x93,0xe9,0xb5,0xe9,0x5e,0x29,0xbc,0x9a,0x93,0xcf,0x02,0x75,0x64,0xaa,0x5a,0x8c,
0x9a,0x46,0x28,0xd9,0x28,0x4d,0xa0,0x46,0x3c,0x85,0x5f,0xc9,0x22,0xf0,0xc4,0x47,
0x3a,0x9b,0x00,0x0d,0xd3,0xad,0x39,0xd7,0xa0,0xea,0x8b,0x71,0x42,0x97,0x57,0x87,
0x78,0x03,0x21,0xef,0x3c,0xe3,0x15,0x97,0x18,0x2a,0x1d,0x02,0x7f,0xf5,0x94,0x8f,
0x77,0x71,0xf5,0xfe,0x2a,0x48,0x23,0x7f,0x25,0x93,0x3e,0xab,0x47,0x2b,0x51,0xf5,
0xd5,0x19,0x36,0xa2,0xbe,0xd3,0x83,0xfd,0xf5,0x98,0xf3,0x58,0xf3,0x87,0x8a,0xd0,
0x3c,0x5c,0x0b,0xf0,0x35,0xe4,0x5d,0x8b,0x25,0xe8,0x06,0x0d,0xf5,0xf2,0x83,0x3f,
0x31,0xf1,0x77,0x8b,0x2b,0x95,0xa8,0xdc,0xbc,0xb0,0x1f,0xde,0xf8,0x59,0xee,0x3c,
0xcb,0x6d,0xf0,0xae,0xea,0xca,0xe9,0x1f,0x7f,0x3a,0x3b,0x39,0x7e,0xff,0xee,0x05,
0xa6,0xa6,0xdd,0xb5,0xdf,0x9e,0x9f,0x9c,0xe2,0x5e,0x32,0xe8,0x3d,0x3b,0xba,0xfa,
0xeb,0x58,0xa6,0xe5,0xe7,0xc7,0xf7,0x3a,0x4d,0xbf,0x75,0x7c,0x07,0x7b,0x0d,0x73,
0xdb,0x94,0xe7,0x76,0x50,0xc7,0x90,0x23,0x39,0xd4,0x63,0xb1,0x22,0xd3,0x8f,0xc4,
0x25,0xac,0x5d,0x79,0x4e,0xab,0xeb,0x3d,0x12,0xd9,0x80,0x6f,0xbf,0xc4,0x1b,0xf6,
0xc4,0x70,0x99,0x66,0x39,0x31,0x8e,0x98,0x36,0x95,0x3a,0x59,0x88,0x57,0x34,0x07,
0x9c,0x8d,0x36,0xf7,0xc3,0xc8,0x4e,0x10,0x22,0xe7,0x1f,0xef,0xe5,0xe6,0x8c,0xb8,
0x99,0x49,0x89,0x4b,0x44,0x63,0xa2,0xd9,0x39,0x4d,0x2e,0x5d,0x38,0x99,0x4c,0x64,
0xae,0xda,0x79,0x62,0x07,0xaa,0x2f,0x66,0xa0,0x82,0xa0,0x55,0x2b,0xfe,0x01,0xfb,
0xe5,0x24,0xf5,0x59,0x84,0x94,0xd3,0x87,0x8b,0xd0,0x45,0x52,0xfb,0x94,0x83,0xe7,
0x11,0x66,0xb8,0xe9,0x3a,0xf9,0x0f,0xed,0x0b,0xa5,0x6c,0x06,0xc3,0x30,0x48,0x95,
0x7b,0x88,0x2c,0x9c,0x93,0x21,0x60,0x2a,0xfb,0x79,0xb3,0x45,0x8a,0xe1,0x5e,0x8b,
0xb2,0x08,0x77,0x77,0x5a,0xce,0x5d,0x26,0x16,0x32,0xe3,0x24,0xcc,0x56,0x85,0x20,
0x1d,0xd5,0xb7,0x26,0xf6,0xbb,0xe7,0x3d,0x6c,0xd9,0xfd,0xdb,0xb8,0x7b,0x32,0xb6,
0x03,0xaf,0x6b,0xa3,0x3e,0xf6,0xba,0x2a,0x69,0x35,0xde,0x93,0x92,0x53,0xe2,0xe3,
0x9d,0xd6,0xda,0x7e,0xf7,0xfb,0x14,0x20,0x0e,0xbd,0x31,0xfd,0xc7,0x65,0x78,0x1d,
0xd0,0xc5,0x6e,0x1b,0xb4,0x8f,0xd7,0x18,0x52,0xeb,0x3b,0x7b,0xc5,0xd6,0xad,0x98,
0x00,0x6a,0x6c,0x67,0x6f,0x7d,0x67,0xba,0xbb,0x45,0x41,0x00,0x6b,0x10,0xd9,0x4a,
0x13,0x38,0x91,0x3e,0x93,0xfd,0x36,0xc4,0x5b,0x74,0xcd,0xad,0xaa,0x8b,0x70,0x11,
0x60,0x3c,0xc4,0x00,0x98,0xc8,0x6a,0x8e,0xd9,0xf6,0x81,0x23,0x30,0xf7,0x91,0x99,
0x65,0xde,0x9c,0xfc,0xf1,0xe4,0x8d,0xa4,0x4f,0xc9,0x9e,0xac,0x78,0x38,0x97,0x23,
0x99,0x33,0xd8,0x3e,0xad,0x7d,0x5e,0x8b,0x4f,0x90,0x17,0xd2,0x70,0x9f,0xad,0xbf,
0x03,0x89,0xbc,0x48,0x7c,0xeb,0x11,0xdf,0x39,0x3e,0xb8,0xbb,0xbc,0xb9,0xd4,0x89,
0xb5,0x3d,0xd9,0xe6,0x03,0x20,0x0f,0x68,0x15,0x10,0x24,0xdf,0x20,0x92,0xfc,0x0d,
0x6c,0x2d,0x5c,0xf6,0xcb,0xb5,0x79,0x48,0x9d,0xdd,0x46,0xd5,0x5e,0x87,0x28,0x08,
0x4d,0x28,0x5c,0x22,0x4c,0x0d,0xf6,0x59,0x01,0x75,0xa6,0xba,0xfe,0x32,0x3a,0xb7,
0x98,0x6b,0x1d,0x59,0x51,0xf3,0xbd,0x76,0xd5,0x45,0x75,0xb2,0x7a,0x4d,0xd7,0xb8,
0x05,0x34,0xef,0x54,0xac,0x3c,0xbf,0x29,0x5e,0x05,0xe2,0x5a,0x60,0x75,0xf7,0xa4,
0x7c,0xb7,0xce,0x25,0x54,0xa4,0x40,0x4c,0x49,0x74,0x77,0x90,0x2d,0xba,0xd6,0xf6,
0x31,0x33,0x39,0x85,0x4c,0xee,0x74,0x79,0x26,0x8f,0x2b,0x82,0x65,0x75,0x6a,0x0a,
0xfe,0xbc,0x3e,0xfa,0x94,0xcb,0xac,0xcb,0x54,0x79,0x45,0x31,0x64,0x9c,0x86,0x9c,
0xc2,0x5c,0x31,0x5d,0xf9,0xc5,0xda,0x4c,0x95,0x33,0x99,0x20,0x62,0xe6,0xe6,0x5f,
0xa4,0xa6,0xdc,0x1c,0x56,0xf4,0x4a,0x46,0x23,0x75,0x65,0xda,0x49,0xdd,0x23,0x78,
0x77,0x6d,0xbf,0xb3,0xa3,0x8e,0x6e,0x1d,0x97,0x24,0xb1,0x3a,0x3f,0x4d,0x65,0x2e,
0x93,0x36,0x9f,0x5a,0xb2,0x14,0xfa,0x2a,0x54,0x50,0x51,0xbb,0x6b,0x36,0x16,0xae,
0xd5,0xe5,0x0c,0x55,0xfd,0xae,0x4d,0xdd,0x07,0x5d,0x58,0x97,0xb9,0x8f,0xee,0x55,
0xa2,0xdb,0x67,0x2c,0x81,0xbb,0xad,0xe4,0x2c,0x05,0x61,0x5f,0x1f,0x94,0x72,0xfd,
0xcd,0xac,0x48,0x6d,0x68,0x80,0x72,0x47,0x01,0x6e,0xed,0xfb,0x86,0x74,0xbc,0xa8,
0x83,0x50,0x3b,0x60,0xd4,0xc1,0xea,0x4d,0x29,0xd1,0x5f,0x19,0xbf,0x64,0x6f,0x22,
0x6a,0x9b,0x28,0xf0,0xdb,0x2a,0x60,0x0a,0x54,0x78,0x8f,0x1d,0xc2,0xea,0x23,0x88,
0xff,0x36,0xc7,0x76,0x61,0x96,0xe7,0x22,0x71,0x9f,0x83,0x58,0x6f,0xc6,0xc9,0xb5,
0xad,0x06,0x48,0x3d,0x49,0x6e,0x42,0x16,0x0f,0xb4,0xde,0x67,0x7d,0xa5,0x65,0xf4,
0x16,0xa8,0x2e,0x6f,0x5c,0xfc,0x08,0xda,0x5e,0x67,0x14,0x25,0xa0,0x2a,0x64,0xa3,
0x59,0x30,0x5e,0xa2,0x26,0xd7,0x26,0xf5,0x0c,0x6c,0xd8,0x0e,0x5f,0x4f,0x13,0xc6,
0xa3,0x94,0x76,0xf6,0xb2,0x01,0x25,0xb4,0x4f,0x93,0x3c,0xc7,0x6c,0x7b,0xb9,0x3f,
0x04,0x33,0x39,0x24,0xb9,0x83,0x22,0x28,0x9c,0x2f,0xe9,0x5a,0x68,0x62,0xe1,0x1f,
0x5e,0x7f,0xff,0xea,0x5c,0xf8,0x73,0xa0,0x5f,0xd6,0x05,0x40,0xa1,0xc2,0x00,0xc4,
0x98,0x43,0x03,0x33,0x50,0x0a,0xe5,0x05,0xe1,0x98,0xf4,0x66,0xb1,0x00,0x78,0x0b,
0x3a,0xb0,0x8a,0xf7,0x7b,0x53,0xb3,0x74,0x49,0x17,0x26,0x8c,0x9f,0xd2,0x22,0xc0,
0xa6,0x62,0xda,0xab,0xc4,0xde,0x81,0x5a,0xc1,0x17,0x1d,0x24,0xcb,0x8c,0xee,0x03,
0x84,0x26,0x38,0xfe,0x58,0x66,0x45,0x68,0x19,0xb9,0x90,0xfb,0xe9,0x94,0x36,0xf1,
0x50,0x8b,0x03,0x71,0x06,0xc3,0x67,0x1e,0x4d,0x58,0xe1,0x6c,0xc6,0x92,0x8f,0x3b,
0xf8,0x41,0x5a,0x1c,0x2e,0xc7,0x5c,0x77,0x9f,0x8a,0x70,0xfe,0xe9,0x26,0x02,0x7a,
0xa2,0xe0,0xe2,0x96,0x2d,0x95,0xea,0x74,0x30,0x73,0xac,0xce,0x83,0x89,0x8d,0x1d,
0x2a,0x5a,0x74,0xf4,0x1c,0xd2,0x3f,0xb5,0x46,0x07,0x05,0xd5,0x1e,0x1d,0x10,0x06,
0xdf,0xb4,0x84,0xe2,0x53,0xbd,0x7b,0xaf,0xae,0x5f,0xb2,0x65,0xab,0xc3,0xbb,0x47,
0x14,0xe2,0x5d,0xb5,0x04,0xcc,0x0e,0x25,0xc1,0xd6,0xd9,0x3a,0xa1,0x06,0xba,0xa6,
0xe8,0x25,0x9d,0xf9,0x63,0xe6,0x81,0x4d,0xe9,0xc7,0x5b,0x4b,0x3b,0x92,0x68,0x78,
0xc2,0x4b,0x82,0xf8,0x29,0x0d,0x9e,0xd1,0xc6,0x0c,0x97,0x7f,0x9f,0x31,0x19,0x59,
0xe9,0x67,0xd2,0xa3,0x97,0x3c,0xf1,0x74,0x40,0x6d,0x99,0x4e,0x90,0xbd,0x80,0xaa,
0x88,0xba,0x40,0x1b,0x09,0x8a,0x54,0x6d,0x9c,0xe8,0x0c,0x03,0x5e,0xa8,0x68,0x98,
0xb3,0x32,0xa9,0x48,0x2d,0x49,0x29,0x33,0x01,0x6f,0xb2,0x77,0x58,0xcb,0x94,0xf6,
0x1c,0x9f,0xaf,0x84,0x15,0x4a,0xe7,0x9f,0x43,0x4c,0x96,0x21,0xae,0x61,0x31,0x38,
0xba,0xb3,0xee,0x14,0x4d,0x8e,0xd2,0xf6,0xe9,0xb0,0x66,0x96,0x1f,0xc5,0xe1,0x1c,
0x8f,0xc9,0xc4,0x2f,0x91,0xee,0x9a,0xbc,0xc6,0x58,0x52,0xd8,0xb7,0x19,0x49,0xa3,
0x40,0x8e,0xb3,0xf6,0x26,0x23,0x9d,0xa7,0x69,0x14,0x44,0x25,0xc8,0xd0,0xae,0x9e,
0x57,0x5a,0xc9,0x40,0xf3,0xe4,0x0e,0x40,0xe5,0x1b,0xc8,0xae,0x29,0xe5,0x63,0x1b,
0xac,0x83,0x6e,0x69,0xed,0xbf,0x5f,0x04,0xf1,0x57,0x9c,0xfa,0x51,0xf6,0x90,0xda,
0x69,0x01,0xa9,0xa7,0x0e,0xf4,0xa8,0x4f,0xfa,0xf0,0x0d,0x08,0x42,0x73,0x96,0x47,
0x7d,0x75,0x37,0x6a,0x1a,0x50,0x9f,0xce,0xf0,0xb8,0x9f,0x35,0x88,0x06,0xc0,0x50,
0x97,0xd3,0x30,0x1b,0xdc,0xe8,0xf0,0x0e,0x59,0x74,0xe7,0x61,0x1e,0x55,0xb8,0x63,
0x4e,0x95,0xed,0xfe,0x97,0x7f,0x13,0xd5,0xbb,0x8d,0xc6,0x88,0xb2,0x0d,0x28,0x6d,
0xb7,0xd9,0x36,0x9b,0x6b,0xaf,0x09,0x51,0xe4,0x9f,0x76,0x4e,0x85,0x12,0x3d,0xdb,
0x8a,0x2e,0xa6,0x60,0xd5,0x14,0x55,0x82,0xa1,0x2e,0x82,0xbd,0x83,0x12,0x6a,0x48,
0xec,0x96,0x9c,0x9e,0x80,0xdd,0x58,0x8e,0x7d,0xad,0xdb,0x93,0x49,0x83,0x5d,0xc2,
0xb2,0x63,0x77,0x94,0xa7,0x32,0x78,0xec,0x4f,0x77,0x7c,0x8d,0xfb,0x27,0xb0,0x1c,
0xdb,0x81,0xa7,0xd8,0xe9,0xe1,0xa1,0x19,0x76,0xcb,0xe0,0xe3,0x80,0xbc,0x4f,0x6b,
0x03,0x34,0x90,0xf3,0xfd,0xd6,0xbd,0x35,0x65,0xc6,0x5b,0x9b,0x60,0x99,0x74,0xa2,
0x7d,0x49,0xd3,0x7c,0x99,0xd0,0x4d,0xdd,0xb6,0xe1,0x0d,0x0d,0x13,0x53,0x42,0x3a,
0x3b,0x64,0xc6,0xab,0x44,0x59,0x52,0xb8,0x0a,0xe5,0x3e,0xc8,0x97,0x19,0x2a,0x4b,
0xe9,0xff,0xe7,0x84,0xf5,0xb6,0x6b,0xae,0x90,0x16,0x44,0x79,0xfe,0x7c,0xfd,0xae,
0x7e,0xd7,0xd4,0xb5,0x45,0x0e,0x4c,0x45,0x19,0x1c,0xe5,0x2e,0x53,0xa7,0xb4,0xb4,
0xbd,0x1a,0x94,0x80,0x58,0x66,0xa8,0xc0,0x7c,0xa4,0x39,0x7b,0xa5,0xd2,0x24,0x99,
0xd3,0x72,0xa6,0xb3,0xac,0x3e,0xe6,0x12,0xc5,0x9b,0x1f,0xec,0x5c,0xa4,0x88,0x58,
0x4c,0x4d,0x23,0xef,0xa3,0x93,0x97,0x7a,0x36,0xa4,0x91,0xd6,0x90,0xaf,0x99,0xf9,
0x65,0x26,0x5f,0x6a,0x72,0x23,0x93,0x7e,0xe1,0x99,0xe8,0xe0,0xc6,0xc7,0x5b,0x76,
0xf8,0x74,0x3d,0x5e,0x3d,0xd1,0x50,0x4b,0xcb,0x19,0xfe,0x26,0x24,0x57,0x61,0x9b,
0x55,0x25,0xea,0x50,0x7b,0x4e,0xc5,0x34,0x2d,0x8a,0x1d,0x94,0xb3,0xb4,0x38,0xee,
0xcf,0xaa,0xed,0x5a,0xd7,0xc7,0x59,0xb1,0x37,0x82,0x72,0xf3,0x79,0x1e,0x6f,0x30,
0x90,0x23,0x0f,0xcb,0x92,0x94,0x41,0x22,0x7e,0x01,0x4a,0x30,0x52,0xea,0x21,0x1b,
0xe7,0xc4,0x15,0xb5,0x71,0xcb,0x77,0x02,0x82,0x86,0xb2,0x82,0xf6,0x84,0x1f,0x61,
0x8a,0xd6,0x15,0x5d,0xb8,0x01,0xa6,0x41,0x2c,0x4e,0xde,0x1e,0xa1,0xb9,0x8e,0xb9,
0xd4,0x10,0x14,0x9b,0x6a,0xc3,0x00,0x56,0x56,0x60,0xa7,0x9e,0xa5,0x73,0xea,0xb4,
0x59,0xe2,0x89,0x0f,0x24,0x21,0x38,0xb3,0xc1,0xc8,0x8f,0x80,0xd3,0x71,0x9a,0x84,
0x0c,0x6d,0xff,0xb4,0x91,0x81,0x69,0xe3,0xf5,0x10,0x18,0x5d,0x12,0x02,0xf3,0xcf,
0x39,0x9a,0xc1,0xee,0xf6,0x3c,0xb6,0xc5,0x49,0x27,0x9c,0xc2,0x00,0xf1,0xda,0xa3,
0x24,0x05,0xa5,0x10,0xe0,0xd0,0xbd,0x4a,0x18,0x0b,0x83,0x89,0x1c,0x62,0xda,0x1b,
0x07,0x15,0x0e,0xaf,0x2c,0x42,0x58,0xd7,0x94,0xd6,0xed,0x32,0x96,0x19,0x71,0xc7,
0x61,0x2a,0xef,0x7b,0x4d,0x26,0x9e,0x78,0x9d,0xcb,0xf1,0xb2,0xd2,0xfa,0xfa,0xdd,
0xe9,0x8f,0xe7,0x8c,0x07,0x56,0x82,0xf1,0xa5,0x74,0x36,0x00,0x81,0x21,0x38,0x8c,
0xe7,0xa1,0x41,0xb1,0xb6,0x49,0x43,0xcb,0xf8,0x7e,0xd9,0x51,0x1a,0x66,0x0b,0xf2,
0x5a,0x84,0x29,0xcc,0x77,0x38,0x9d,0xaa,0x73,0xf7,0x88,0xf4,0x4c,0x4c,0x70,0x2a,
0x02,0x64,0x0d,0xea,0x1e,0xae,0x17,0x47,0x6f,0x4f,0x7f,0xfa,0xf8,0xfe,0xc3,0x0b,
0xbe,0xc1,0x4a,0x5e,0x4d,0x95,0xd3,0xa1,0x05,0x73,0x73,0xd5,0xd0,0x8f,0x50,0x86,
0x8c,0xed,0xbb,0xad,0xb8,0xd7,0x7c,0xc1,0x16,0x19,0xe8,0x8d,0x29,0x2e,0xe1,0x15,
0xdd,0x63,0xc5,0xc0,0x8f,0xce,0x7f,0x28,0xc3,0xce,0x62,0x7f,0x61,0x81,0xfe,0x65,
0x89,0xd4,0x61,0xc3,0x4d,0x26,0xb9,0x0d,0x35,0xf2,0x7f,0x65,0x98,0xd6,0x41,0x56,
0x20,0x9a,0x8f,0x80,0x7b,0x3c,0xff,0xfa,0xb9,0x70,0xad,0x40,0x8e,0x59,0xae,0x71,
0x62,0xf8,0x16,0x06,0x3d,0xbc,0x96,0xbc,0x59,0xe1,0x09,0x2e,0x74,0x9d,0xe6,0x0a,
0x0b,0x5a,0x19,0x85,0xd4,0x10,0x0a,0x5b,0x0b,0xb0,0x60,0x24,0x9d,0x3a,0xba,0x8f,
0xb3,0xc9,0x0c,0x24,0x22,0x0f,0x22,0x58,0x17,0x6e,0x5b,0x7e,0x11,0x58,0x24,0x63,
0x86,0x01,0x8b,0xe4,0x0a,0x7d,0x0b,0x26,0x62,0xf2,0xaa,0x50,0x02,0xc7,0x56,0xe2,
0x6d,0xd6,0xa0,0x8d,0x0b,0xe1,0xb2,0xba,0x0b,0xea,0x12,0x6d,0xb7,0x7d,0x7e,0x5b,
0x6e,0xfe,0xd2,0x2d,0x50,0xd9,0xba,0x9e,0x4a,0x6f,0x02,0xab,0xaa,0xd9,0x44,0x3c,
0xf3,0xd5,0x69,0x97,0x12,0xa5,0x9f,0x7a,0x17,0x9a,0xb3,0xa9,0x86,0xca,0xcc,0x20,
0x8c,0x81,0x92,0x2b,0x76,0x74,0x6d,0x5c,0x96,0xba,0x6a,0xb2,0x4e,0xd1,0x6b,0xf7,
0x3e,0xfb,0xb2,0x83,0x8c,0xf1,0x70,0xc5,0x57,0xb5,0xed,0xb5,0x7e,0xd3,0xe8,0xae,
0xec,0xd1,0x55,0xb2,0x3e,0x33,0xab,0x5f,0x3d,0xda,0x02,0x61,0xe8,0xe1,0x1a,0x46,
0xf8,0x75,0x23,0xfe,0x02,0x72,0x2a,0x0e,0xac,0x18,0xab,0x47,0x7a,0x85,0x9b,0xfa,
0x2c,0xe2,0x4d,0x90,0x2c,0x59,0xa6,0xa3,0x80,0x76,0x3d,0x75,0xd8,0x04,0x9f,0xbd,
0x43,0xc7,0x3b,0xda,0x78,0xa0,0x20,0x15,0xb4,0x69,0xfc,0x22,0xb8,0x62,0xe3,0x40,
0x07,0x4a,0xbf,0xe3,0x9b,0x68,0x79,0x47,0xd0,0x8a,0xff,0x37,0x10,0xe5,0xfd,0xb3,
0xe6,0x78,0x9f,0xbe,0x80,0xb6,0xb2,0x9d,0xe6,0x91,0xc7,0x47,0xc8,0xb0,0x82,0xfa,
0xed,0xa1,0xd5,0x47,0x67,0x01,0x1b,0xe4,0x0b,0xfe,0x8f,0x7f,0x27,0x37,0x02,0xee,
0x0e,0x25,0x35,0x9d,0x11,0xc9,0xe5,0xf1,0x5d,0x7d,0xaa,0x1e,0xe8,0x88,0xe2,0x6d,
0xb0,0xcb,0xd0,0x8c,0xec,0x2c,0xce,0xf4,0xdd,0x83,0xae,0x82,0x16,0x8e,0xa3,0x3b,
0xf0,0x05,0xf3,0x31,0x4b,0xb2,0x9c,0x67,0xa3,0x42,0x39,0xc2,0x8f,0xb8,0x0f,0x3c,
0x78,0xd4,0x53,0x71,0x42,0xdc,0xc5,0xa0,0x52,0x9f,0x72,0xb1,0x8e,0x37,0xe8,0xe9,
0x89,0x55,0x47,0xd6,0x8e,0x3c,0x0b,0x80,0x8e,0x4a,0x57,0xda,0xc0,0x38,0xcc,0xf0,
0x8e,0x42,0x8a,0xc6,0x70,0x80,0x11,0xab,0x38,0xf2,0x94,0x35,0xd2,0xa4,0xdb,0x97,
0xf5,0x2a,0x51,0x97,0x12,0xf3,0x9d,0xcc,0xd0,0xee,0xe7,0x5b,0x97,0xb4,0x6a,0x52,
0xed,0xb5,0xac,0x9b,0x87,0xf5,0xb7,0x0d,0xb7,0x77,0x15,0x89,0xcb,0x05,0x20,0x4d,
0xda,0xf2,0x9a,0x96,0x39,0xa1,0xec,0x45,0x6d,0xee,0x8e,0x3d,0xa8,0x49,0xc2,0x52,
0xca,0xb9,0xd2,0xf4,0x51,0xaa,0x08,0xbd,0xcc,0xc2,0x38,0x74,0xef,0x58,0x02,0x1c,
0xa6,0x84,0x37,0xff,0xda,0x0f,0x73,0xa4,0xde,0xc4,0x1f,0xcb,0xdb,0x89,0x15,0x83,
0xa8,0xb8,0xe6,0x99,0xab,0xe9,0x85,0x78,0xe4,0xfd,0x04,0x76,0xc9,0x0b,0x98,0x2f,
0xfe,0xde,0x12,0xc5,0x37,0x74,0xd5,0xf1,0x41,0x69,0x10,0x56,0x8e,0x8f,0x3a,0x9d,
0xd1,0x11,0x8b,0x85,0x30,0x94,0x6e,0x25,0x62,0x05,0xb4,0x2e,0x3d,0x1e,0x36,0xb6,
0xe9,0xc0,0xe7,0x93,0xed,0x0c,0xb4,0x97,0x45,0xfe,0x14,0x7e,0xa1,0xe2,0x84,0x7f,
0x67,0xf9,0x3c,0x7a,0x7a,0xef,0xff,0x01,0x22,0xed,0x25,0xf1,0xab,0x0f,0x01,0x00,
};
constexpr size_t AUDIO_IN_INDEX_HTML_GZ_LEN = sizeof(AUDIO_IN_INDEX_HTML_GZ);
// </gz:AUDIO_IN_INDEX_HTML>