mirror of
https://github.com/pengwon/epd42.git
synced 2025-12-20 17:53:21 +08:00
269 lines
38 KiB
HTML
269 lines
38 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<title>电子墨水屏蓝牙控制器</title>
|
||
<script type="text/javascript">
|
||
let bleDevice;
|
||
let gattServer;
|
||
let Theservice;
|
||
let writeCharacteristic;
|
||
let reconnectTrys = 0;
|
||
|
||
let imgArray = "";
|
||
let imgArrayLen = 0;
|
||
let chunkSize = 38;
|
||
let uploadPart = 0;
|
||
let totalPart = 0;
|
||
|
||
function resetVariables() {
|
||
gattServer = null;
|
||
Theservice = null;
|
||
writeCharacteristic = null;
|
||
document.getElementById("log").value = '';
|
||
imgArray = "";
|
||
imgArrayLen = 0;
|
||
uploadPart = 0;
|
||
}
|
||
|
||
function handleError(error) {
|
||
console.log(error);
|
||
resetVariables();
|
||
if (bleDevice == null)
|
||
return;
|
||
if (reconnectTrys <= 5) {
|
||
reconnectTrys++;
|
||
connect();
|
||
}
|
||
else {
|
||
addLog("Was not able to connect, aborting");
|
||
reconnectTrys = 0;
|
||
}
|
||
}
|
||
|
||
async function sendCommand(cmd) {
|
||
if (writeCharacteristic) {
|
||
await writeCharacteristic.writeValue(cmd);
|
||
}
|
||
}
|
||
|
||
async function sendcmd(cmdTXT) {
|
||
let cmd = hexToBytes(cmdTXT);
|
||
addLog('Send CMD: ' + cmdTXT);
|
||
await sendCommand(cmd);
|
||
}
|
||
|
||
function setDriver() {
|
||
let driver = document.getElementById("epddriver").value;
|
||
let pins = document.getElementById("epdpins").value;
|
||
sendcmd("00" + pins).then(() => {
|
||
sendcmd("01" + driver);
|
||
});
|
||
}
|
||
|
||
function clearscreen() {
|
||
sendcmd("01").then(() => {
|
||
sendcmd("02");
|
||
}).catch(handleError);;
|
||
}
|
||
|
||
function sendimg(cmdIMG) {
|
||
startTime = new Date().getTime();
|
||
imgArray = cmdIMG.replace(/(?:\r\n|\r|\n|,|0x| )/g, '');
|
||
imgArrayLen = imgArray.length;
|
||
uploadPart = 0;
|
||
totalPart = Math.round(imgArrayLen / chunkSize);
|
||
console.log('Sending image ' + imgArrayLen);
|
||
sendCommand(hexToBytes("01")).then(() => {
|
||
sendCommand(hexToBytes("0313")).then(() => {
|
||
sendIMGpart();
|
||
});
|
||
}).catch(handleError);
|
||
}
|
||
|
||
function sendIMGpart() {
|
||
if (imgArray.length > 0) {
|
||
let currentPart = "04" + imgArray.substring(0, chunkSize);
|
||
let currentTime = (new Date().getTime() - startTime) / 1000.0;
|
||
imgArray = imgArray.substring(chunkSize);
|
||
setStatus('正在发送块: ' + (uploadPart++) + "/" + totalPart + ", 用时: " + currentTime + "s");
|
||
console.log('Curr Part: ' + currentPart);
|
||
sendCommand(hexToBytes(currentPart)).then(() => {
|
||
sendIMGpart();
|
||
})
|
||
} else {
|
||
console.log('Last Part: ' + imgArray);
|
||
sendCommand(hexToBytes("05")).then(() => {
|
||
console.log("Update was send Time: " + (new Date().getTime() - startTime) / 1000.0 + "s");
|
||
setStatus("发送完成!耗时: " + (new Date().getTime() - startTime) / 1000.0 + "s");
|
||
})
|
||
}
|
||
}
|
||
|
||
function disconnect() {
|
||
resetVariables();
|
||
addLog('Disconnected.');
|
||
document.getElementById("connectbutton").innerHTML = '连接';
|
||
}
|
||
|
||
function preConnect() {
|
||
if (gattServer != null && gattServer.connected) {
|
||
if (bleDevice != null && bleDevice.gatt.connected)
|
||
bleDevice.gatt.disconnect();
|
||
}
|
||
else {
|
||
connectTrys = 0;
|
||
navigator.bluetooth.requestDevice({ optionalServices: ['62750001-d828-918d-fb46-b6c11c675aec'], acceptAllDevices: true }).then(device => {
|
||
device.addEventListener('gattserverdisconnected', disconnect);
|
||
bleDevice = device;
|
||
connect();
|
||
}).catch(handleError);
|
||
}
|
||
}
|
||
|
||
function reConnect() {
|
||
connectTrys = 0;
|
||
if (bleDevice != null && bleDevice.gatt.connected)
|
||
bleDevice.gatt.disconnect();
|
||
resetVariables();
|
||
addLog("Reconnect");
|
||
setTimeout(function () { connect(); }, 300);
|
||
}
|
||
|
||
function connect() {
|
||
if (writeCharacteristic == null) {
|
||
addLog("Connecting to: " + bleDevice.name);
|
||
bleDevice.gatt.connect().then(server => {
|
||
console.log('> Found GATT Server');
|
||
gattServer = server;
|
||
return gattServer.getPrimaryService('62750001-d828-918d-fb46-b6c11c675aec');
|
||
}).then(service => {
|
||
console.log('> Found Service');
|
||
Theservice = service;
|
||
return Theservice.getCharacteristic('62750002-d828-918d-fb46-b6c11c675aec');
|
||
}).then(characteristic => {
|
||
addLog('> Found Characteristic');
|
||
document.getElementById("connectbutton").innerHTML = '断开';
|
||
writeCharacteristic = characteristic;
|
||
return;
|
||
}).catch(handleError);
|
||
}
|
||
}
|
||
|
||
function setStatus(statusText) {
|
||
document.getElementById("status").innerHTML = statusText;
|
||
}
|
||
|
||
function addLog(logTXT) {
|
||
var today = new Date();
|
||
var time = ("0" + today.getHours()).slice(-2) + ":" + ("0" + today.getMinutes()).slice(-2) + ":" + ("0" + today.getSeconds()).slice(-2) + " : ";
|
||
document.getElementById("log").innerHTML += time + logTXT + '<br>';
|
||
console.log(time + logTXT);
|
||
while ((document.getElementById("log").innerHTML.match(/<br>/g) || []).length > 10) {
|
||
var logs_br_position = document.getElementById("log").innerHTML.search("<br>");
|
||
document.getElementById("log").innerHTML = document.getElementById("log").innerHTML.substring(logs_br_position + 4);
|
||
}
|
||
}
|
||
|
||
function hexToBytes(hex) {
|
||
for (var bytes = [], c = 0; c < hex.length; c += 2)
|
||
bytes.push(parseInt(hex.substr(c, 2), 16));
|
||
return new Uint8Array(bytes);
|
||
}
|
||
|
||
function bytesToHex(data) {
|
||
return new Uint8Array(data).reduce(
|
||
function (memo, i) {
|
||
return memo + ("0" + i.toString(16)).slice(-2);
|
||
}, "");
|
||
}
|
||
|
||
function intToHex(intIn) {
|
||
var stringOut = "";
|
||
stringOut = ("0000" + intIn.toString(16)).substr(-4)
|
||
return stringOut.substring(2, 4) + stringOut.substring(0, 2);
|
||
}
|
||
|
||
</script>
|
||
<style type="text/css">
|
||
h3 { padding-bottom: .3em; border-bottom: 1px solid #CCC; }
|
||
fieldset { width: 50%; border: 2px dotted #AAA; padding: 10px; margin-bottom: 10px; }
|
||
fieldset legend { font-weight: bold; }
|
||
code { padding: .2em .4em; margin: 0; font-size: 85%; background: #CCC; border-radius: 3px; }
|
||
|
||
#hint { float: right; width: 40%; }
|
||
#status { width: 50%; margin: 10px 0; }
|
||
#cmdIMAGE { width: 100%; height: 200px; }
|
||
#log { width: 100%; min-height: 200px; margin-top: 10px; background: #DDD; }
|
||
</style>
|
||
</head>
|
||
|
||
<body>
|
||
<h3>4.2 寸电子墨水屏蓝牙控制器(nRF51)</h3>
|
||
|
||
<fieldset id="hint">
|
||
<legend>一些小提示</legend>
|
||
<ul>
|
||
<li><b>驱动选择:</b>黑白屏可尝试 EPD_4in2 / EPD_4in2_V2, 三色屏选择 EPD_4in2b_V2 (选错驱动可能会导致任何未知的异常,重启即可恢复)</li>
|
||
<li><b>引脚配置:</b>格式为十六进制,顺序:MOSI/SCLK/CS/DC/ST/BUSY/BS,必须按此顺序包含完整的 7 个引脚配置(没有用到的引脚可配置为 <code>FF</code>)</li>
|
||
<li>
|
||
<b>指令列表(指令和参数全部要使用十六进制):</b>
|
||
<ul>
|
||
<li><code>00</code>+<code>引脚配置</code>: 设置引脚映射(见上面引脚配置)</li>
|
||
<li><code>01</code>+<code>驱动 ID</code>: 驱动初始化(支持的驱动 ID: <code>01</code>/<code>02</code>/<code>03</code>)</li>
|
||
<li><code>02</code>: 清空屏幕(把屏幕刷为白色)</li>
|
||
<li><code>03</code>+<code>命令</code>: 发送命令到屏幕(请参考屏幕主控手册)</li>
|
||
<li><code>04</code>+<code>数据</code>: 写入数据到屏幕内存(同上)</li>
|
||
<li><code>05</code>: 刷新屏幕(显示已写入屏幕内存的数据)</li>
|
||
<li><code>06</code>: 让屏幕进入睡眠状态</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p style="color: #666;">
|
||
<strong>致谢:</strong>屏幕驱动代码来自微雪 <a href="https://www.waveshare.net/wiki/E-Paper_Shield" target="_blank">E-Paper Shield</a>,本网页代码最初基于 <a href="https://github.com/atc1441/ATC_TLSR_Paper" target="_blank">atc1441/ATC_TLSR_Paper</a> 项目的网页控制端代码修改而来。
|
||
</p>
|
||
</fieldset>
|
||
|
||
<fieldset>
|
||
<legend>蓝牙连接</legend>
|
||
<button id="connectbutton" type="button" onclick="preConnect();">连接</button>
|
||
<button type="button" onclick="reConnect();">重连</button>
|
||
</fieldset>
|
||
|
||
<fieldset>
|
||
<legend>驱动配置</legend>
|
||
屏幕驱动:
|
||
<select id="epddriver">
|
||
<option value="01" selected="selected">EPD_4in2</option>
|
||
<option value="02">EPD_4in2_V2</option>
|
||
<option value="03">EPD_4in2b_V2</option>
|
||
</select>
|
||
引脚配置:
|
||
<input id="epdpins" type="text" value="0508090A0B0C0D">
|
||
<button type="button" onclick="setDriver();">确认</button>
|
||
</fieldset>
|
||
|
||
<fieldset>
|
||
<legend>调试助手</legend>
|
||
<input type="text" id="cmdTXT" value="">
|
||
<button type="button" onclick="sendcmd(document.getElementById("cmdTXT").value);">发送命令</button>
|
||
<button type="button" onclick="clearscreen();">清屏</button>
|
||
</fieldset>
|
||
|
||
<fieldset>
|
||
<legend>蓝牙传图</legend>
|
||
<div style="margin-bottom: 10px;">
|
||
<button type="button" onclick="sendimg(document.getElementById("cmdIMAGE").value);">发送图片</button>
|
||
<span id="status"></span>
|
||
</div>
|
||
<textarea id="cmdIMAGE">FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3D003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFEB03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E383FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE43F3C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C3F3E3FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E3F9E3F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5FFFBF3E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8FFFBF3C07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92FFFBF7007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30FFF3F4007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5BFFF3F0707FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0BFFF3E1F87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC09FFF385FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94CFFE73DFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27E7FE6FDFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03FBFE19DFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE43FDFE39DFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4DFFFC67DFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFDEFFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFF93FFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDFFFF33FFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0FFFE1FFDFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FFFC8FFFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FFF9FFFDFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFF0FFF5FF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFF67FF7FF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFE33FFDFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFEF9F0BFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFCE4FA1FF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFD727F3FF97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFBD3C3FBFF97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7CD3E1FBFF97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F3E1FF1FFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0008F93F8DFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFC0393FE5FFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3FFE0CFFF7FFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79FFFC0FFF3F7FE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE7FF8F7FF9F7FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFF3D3F7DFBFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBFFFC1EBFBCF9FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0FFFDC71FBEFCFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BFFFAFFCF9FFEFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFF47FE79F7F7A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFE47FF39F7FBA7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3FFCEFFF99FBFD87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3FFCFFFFC9FDFC87F87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA07FDFFFFE0FCFE07C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87FF9FFFFF87E7E0F9FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFBFFFFFE3F390F2019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFBFFFFFF0F980E0FC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23FFBFFFFFFC7C00C7FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3FFBFFFFFFF02009FFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF3FFFFFFFC0001FFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFEBFF803FFE0007FFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93FDBD81FC7FF800FFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93E5BEC7FFC3F800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFF1BFF8FFF80001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFF3BFFF9FFFF001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7EBBFFFFFFFF803FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3EBBFFFFEFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE53FFFFF3FE003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F13FFFFF8FC047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF83FFFFFE180C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C3FFFFFFC01CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E7FFFFFFFE7CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E3FFFFFFF9FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE73FFFEFFE3FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FF83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33FDFEF88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93EB7EF83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFD87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3F8FFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFBDB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1F9FFC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF3BFF80BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F3FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1F813FFFE3E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF7F87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECF1C3FFFF3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE77C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE09C3FFFFBCBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF201FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF19C1FFFF3D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7EFED99FFFF79CFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E3E59CEFFE41CFF23FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F1F19CCFFE0C6FEF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F19E5FFC7E07EF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F93E4FFCFFF7FF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F93F4FF9FFF7DF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6FC7F03F3FFF3DF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE07FCFF27E7FFF3DF9FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF803FCFF0FCFFFF39F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE078FCFF1F9FFFF33FC78FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E3E7E7F1F3FFFF27FF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F3E7F3F7FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7F9FDE3E3E7FFFF3FF3FFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFCFCE1E7E7FFFE7FF7FFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFCFE75CFCFFFF87FF7F3FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFEFF749FCFFE00FFFFF7FFFFFFFFFFFF87FFFFFFFFFFFFFFFE07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFE7F3A3F8FE005FFFFFFFFFFFFFFFFFE10FFFFFFFFFFFFE00003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFE7F387F8F8019FFFFFFFFFFFFFFFFF9FE3FFFFFFFFFC0000019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFF3FBC7F8F03F3FFFFFFF3FFFFFFFFE7FF8FFFFFFFFC00E0000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFF3F9C7F8E03C7FFFFFFF3FFFFFFFF1FFFE7FFFFFFF13FFFF0047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFF9FCD3F8C071FFFFFFFF7FFFFFFFC7FFFF3FFFFFFC6FFFFF8427FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFF8FC59F841C7FFF00FFFFFFFFFFF3FF00FDFFFFFF9DFFFFFE22FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FF7CFC19F8419FFFC001007FFFFFFCFF83C1CFFFFFF3BFFFFFE10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FE3E3C08F0013FFF0FF000047FFFC7FE3FFC67FFFFCF7FFFFFF18FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3FE3F000CE0027FFE1FFE3F803FFC3FFC7FFF13FFFF9E7FFFFFF88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFC004C0027FF87FFF00000001FFF9FFFFC1FFFE38FFFFFFF88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1FFFFF01000067FC0FFFF807FE01F9FE7FFFFF0FFF073FFFFFF988FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4FFFFFC1807000003FDFFCFFFFFFF9FCFFFFFFC0603C7FFFFFFDC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE27FFFFC1C0080000FF9FFE7FFFFFFDF9FFFFFFF800C1FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE33FFFFC0E0003800FFBFFE7FFFFFFFF3FFFFFFFFE03FFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1DFFFFE0700418007FFFFF7FFFFFFFE7FFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E7FFFE0100408183FFFFF7FFFFFFFCFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE471FFFF00004088E3FFFFF3FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFE078FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63C7FFFC000C008F3FFFFF3FFFFFFFBFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30F1FFFF821801873FFFFFBFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFF8FFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF381CE1FFF1F001C73FFFFF9FFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFE3FFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E00047F000103C33FFFFF8FFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF878300000061C39FFFFF8FFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFF1E600C261C39FFFFF9FFFFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFF078008261E19FFFFF9FFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE000018661E1FFFFFF9FFFFFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FCFE400010040F0FFFFFF1FFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFE04018041D07FFFFF1FFFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FF800338040883FFFFF4FFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FE023E7C200CC1FFFFF4FFFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80064F8FE300FE07FFFE47FFE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7C9C3FF300FF80FFFE13FC07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B1FFF9807FC03FFC00003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF107FFF9C07FF00FFC0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31FFFF9E03FFE01F0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE33FFFFCF03FFF80003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE73FFFFC783FFFC001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE73FFFFC7E1FFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE3FFFFC3F8FFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE3FFFFC9FC7FFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9FFFFC9FE7FFFE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8CFFFFD9FE0FFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0E7FC79DFF07FFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1F0F073DFF07FFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1FC0307DFF0FFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1FFFFDFDFF27FE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1FFFFFFDFF30F07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1FFFFFFDFF3801FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1FFFFFF9FF3E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1FFFFFF9FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1FFFFFF9FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1FFFFFF9FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FE7FFF9FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FF7FFF9FE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83FFFFF8FE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90F800F8FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC0000187CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF87FE0179FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFC123FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFF81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFFF9C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFFF3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFF3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFE473FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFE033FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFC013FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFF8703FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFF1F83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFFFE3FC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFC7FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFF9FFE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFE3FFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFFCFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF1FFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FC7FFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF021FFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFF8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFF00000F0001E00078007FFE007C000007CFFFFFFF807FFFFE1E00001E003FFF000FFFFFE01FFFFFFF00000007FFFFFFFFFFFF80000F0001E0007803FFFF803E00000F8FFFFFFF81FFFFFE1E00001E00FFFFC00FFFFFF81FFFFFFF00000007FFFFFFFFFFFFC0000F0001E0007807FFFFE03E00000F8FFFFFFF83FFFFFE1E00001E03FFFFF00FFFFFFC1FFFFFFF00000007FFFFFFFFF9FFE0000F0001E000780FFFFFF01F00001F0FFFFFFF87FFFFFE1E00001E07FFFFF80FFFFFFE1FFFFFFF00000007FFFFFFFFF1FFF0000F0001E000781FFFFFF81F00001F0FFFFFFF87FFFFFE1E00001E0FFFFFFC0FFFFFFF1FFFFFFF00000007FFFFFFFFE1FFF8000F0001E000781FF00FF80F80003E0F80000007F000001E00001E0FF807FC0F0001FF1F00000000000007FFFFFFFFC1FFFC000F0001E000783F8001FC0F80003E0F000000078000001E00001E1FC000FE0F00001F1E00000000000007FFFFFFFF81FFFC000F0001E000783F00007C07C0007C0F000000078000001E00001E1F80003E0F00000F1E00000000000007FFFFFFFF01FFFE000F0001E000783E00007C03C0007C0F000000078000001E00001E1F00003E0F00000F1E00000000000007FFFFFFFE01FFFF000F0001E000783C00003C03E000F80F80000007C000001F00001E1E00001E0F00000F1F00000000000007FFFFFFFC01FFFF000F0001E000783C00003C01F000F80FFFFFF007FFFFF01FFFFFFE1E00001E0F00000F1FFFFFE000000007FFFFFFFC01FFFF800F0001E000783C00003C01F001F00FFFFFF007FFFFFC1FFFFFFE1E00001E0F00000F1FFFFFE000000007FFFFFFF801FFFF800F0001E000783C00003C00F801F00FFFFFF007FFFFFE1FFFFFFE1E00001E0F00000F1FFFFFE000000007FFFFFFF801FFFFC00F0001E000783C00003C00F803E00FFFFFF001FFFFFE1FFFFFFE1E00001E0F00001F1FFFFFE000000007C01F01FC01E0FFC00F0001E000783C00003C007C03C00FFFFFF0007FFFFF1FFFFFFE1E00001E0FFFFFFF1FFFFFE000000007C01F01F801C07FC00F0001E000783FFFFFFC007C07C00F0000000000003F1E00001E1FFFFFFE0FFFFFFF1F00000000000007C01F01F801C07FE00F0001E000783FFFFFFC003E07800F0000000000001F1E00001E1FFFFFFE0FFFFFFE1E00000000000007C01E00F807C03FE00F0001E000783FFFFFFC003E0F800F0000000000000F1E00001E1FFFFFFE0FFFFFFC1E00000000000007C00E00F00F803FE00F0001E000783FFFFFFC001F0F000F0000000000000F1E00001E1FFFFFFE0FFFFFF81E00000000000007E00E00F00F801FF00F0001E000783FFFFFFC001F1F000F0000000000000F1E00001E1FFFFFFE0FFFF7C01E00000000000007E00400600F001FF00F0001E000783C00007C000FBE000F0000000000000F1E00001E1F00001E0F0FF0001E00000000000007E00400601F000FF00F0001E000783C00003C000FBE000F0000000000000F1E00001E1E00001E0F07F8001E00000000000007F00400401E000FF00F0001E000783C00003C0007FC000F0000000000000F1E00001E1E00001E0F01FE001E00000000000007F00000000E0007F00F8001E000F83C00003C0007FC000F0000000000001F1E00001E1E00001E0F00FF001E00000000000007F00000000C0007F00FF003E00FF83C00003C0003F8000F800000000001FF1E00001E1E00001E0F003FC01F00000000000007F8000000040003F00FFFFFFFFFF83C00003C0003F8000FFFFFFF8FFFFFFF1E00001E1E00001E0F001FE01FFFFFFF00000007F8000000040003F00FFFFFFFFFF83C00003C0001F0000FFFFFFF87FFFFFE1E00001E1E00001E0F0007F01FFFFFFF00000007F8000000000001F007FFFFFFFFF03C00003C0001F0000FFFFFFF87FFFFFC1E00001E1E00001E0F0003FC1FFFFFFF00000003FC000000000401F001FFFFFFFFE03C00003C0000E0000FFFFFFF87FFFFF81E00001E1E00001E0F0001FE1FFFFFFF00000003FC002000000600F0003FFFFFFF003C00003C0000C0000FFFFFFF87FFFFC01E00001E1E00001E0F00007F9FFFFFFF00000003FC003000000E00F0000000000000000000000000000000000000000000000000000000000000000000000000000000000003FE003000000F00F0000000000000000000000000000000000000000000000000000000000000000000000000000000000003FE007001000F00F0000000000000000000000000000000000000000000000000000000000000000000000000000000000003FE007803001E00F0000000000000000000000000000000000000000000000000000000000000000000000000000000000001FF007803801E01F0000000000000000000000000000000000000000000000000000000000000000000000000000000000001FF00F803803E01F0000000000000000000000000000000000000000000000000000000000000000000000000000000000001FF00FC07803C03F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF80FC07C07C03F0000400000000000000000000000000000000000000000000200000000000100000000000000000000000FF81FC0FC07807F00004000000000000000000000000000000000000000000002000000000001000000000000000000000007F81FE0FFFE007F00004000000000000000000000000000000000000000000002000000000001000000000000000000000007FFFFFFFFFE00FF00004000000000000000000000000000000000000000000002000000000001000000000000000000000003FFFFFFFFFE01FF00F047801E21303E0000F88800040F807807C04783801F00023C00F10981F10000081F10183E0000000003FFFFFFFFFE00FF019858C061A140C300018C88080438E0CC1C6048CC60618002C6030D0A07191010087191E0618000000001FFFFFFFFFE00FF01006060C0618180800203880C082020803010707020C040030306070C0C071018104071C080C000000000FFFFFFFFFE01FF0100602180618100400401841C084010802008603020802003010C03080803083810803181804000000000FFFFFFFFFE03FF0100402100210300400C018416184018806008602031802002010801081803082C218031810020000000007FFFFFFFFE07FF00C04021002103FFE00800821210FFF860400C402031FFE0020108010810010C6421001181FFE0000000003FFFFFFFFE0FFF0060402100210300000800822330C00030400C4020318000020108010810010444610011810000000000001FFFFFFFFE1FFF001840210021020000080083212080000C400C4020310000020108010810010442410011810000000000000FFFFFFFFE3FFF0008402100210300000C01814120400004400840203100000201080108180302824180318100000000000007FFFFFFFFFFFF000840218061010040040181C0C04010042008402030802002010C0308080303818080318180400000000001FFFFFFFFFFFF00084020C061018080020380C0C02030043010402030C04002010603080C07010180C0718080C00000000000FFFFFFFFFFFF0318402061A100C300038C8080C038E18C186040203061800201030D080719010100719180618000000000003FFFFFFFFFFF00E040201E21003E0000F88000000F807007C04020001F00020100F10801F10000001F10003E0000000000000FFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</textarea>
|
||
<div style="color: #666;"><strong>提示:</strong>此文本框需填写取模后的图片数据(十六进制)</div>
|
||
</fieldset>
|
||
|
||
<fieldset>
|
||
<legend>日志</legend>
|
||
<button type="button" onclick="document.getElementById('log').innerHTML = '';">清空日志</button>
|
||
<div id="log"></div>
|
||
</fieldset>
|
||
</body>
|
||
|
||
</html> |