Урок 51
Часть 2
LAN. ENC28J60. TCP WEB Server. Передаём страницу побольше
В предыдущей части нашего занятия мы провели определённую оптимизацию проекта и написали код, который будет отличать запрос клиентом главной страницы от остальных запросов, а также передали ответ на запрос клиентом несуществующего документа. Также мы передали клиенту страницу, состоящую из двух пакетов TCP.
Дальнейшая работа предстоит над передачей документа в три и более пакета. Для этого создадим функцию для передачи одного из средних пакетов документа. Добавим её между функциями передачи первого и последнего пакетов
//--------------------------------------------------
/*Отправка среднего пакета многопакетного ответа HTTP*/
uint8_t tcp_send_http_middle(enc28j60_frame_ptr *frame, uint32_t ip_addr, uint16_t port)
{
uint8_t res=0;
uint16_t len_tcp=0, len=0;
ip_pkt_ptr *ip_pkt = (void*)(frame->data);
tcp_pkt_ptr *tcp_pkt = (void*)(ip_pkt->data);
return res;
}
//--------------------------------------------------
Вызовем данную функцию в последнем условии функции tcp_read
else if (tcp_pkt->fl == TCP_ACK)
{
if (tcpprop.data_stat==DATA_END)
{
tcp_send_http_dataend(frame, ip_pkt->ipaddr_src, tcpprop.port_dst);
}
else if (tcpprop.data_stat==DATA_MIDDLE)
{
tcp_send_http_middle(frame, tcpprop.ipaddr_dst, tcpprop.port_dst);
}
else if (tcpprop.data_stat==DATA_LAST)
Продолжим писать нашу функцию.
Как всегда, вычислим номер сегмента и сохраним его в структуре в соответствующем поле, а также занесём длину заголовка TCP в соответствующую переменную
tcp_pkt_ptr *tcp_pkt = (void*)(ip_pkt->data);
//Отправляем одну из средних частей страницы
//Заполним заголовок пакета TCP
tcpprop.seq_num = be32todword(be32todword(tcpprop.seq_num)+tcp_mss);
len_tcp = sizeof(tcp_pkt_ptr);
Затем заполним поле данных, применяя операции копирования из FLASH-памяти, а также применяя хитрый расчёт смещения по массиву с документом, зависящий от общего количества частей и оставшегося количества частей (для чего мы в начале заниятия и придумывали новое поле в структуре). Также представим, что страница с ошибкой у нас тоже очень большая. Хоть это и не так, но возможно в будущем нам это пригодится для отправки больших документов, не являющихся главной страницей
len_tcp = sizeof(tcp_pkt_ptr);
if (tcpprop.http_doc==INDEX_HTML)
{
memcpy_P((void*)tcp_pkt->data,(void*)index_htm+(tcp_mss*(tcpprop.cnt_data_part-tcpprop.cnt_rem_data_part))-strlen_P(http_header),tcp_mss);
}
else
{
memcpy_P((void*)tcp_pkt->data,(void*)e404_htm+(tcp_mss*(tcpprop.cnt_data_part-tcpprop.cnt_rem_data_part))-strlen_P(error_header),tcp_mss);
}
Далее подсчитываем длину для расчёта контрольной суммы и вызываем функцию подготовки пакета TCP
memcpy_P((void*)tcp_pkt->data,(void*)e404_htm+(tcp_mss*(tcpprop.cnt_data_part-tcpprop.cnt_rem_data_part))-strlen_P(error_header),tcp_mss);
}
len=len_tcp + tcp_mss;
tcp_header_prepare(tcp_pkt, port, TCP_ACK, len_tcp, len);
Затем готовим пакет IP, затем пакет Ethernet, последний передаём клиенту
tcp_header_prepare(tcp_pkt, port, TCP_ACK, len_tcp, len);
len+=sizeof(ip_pkt_ptr);
ip_header_prepare(ip_pkt, ip_addr, IP_TCP, len);
//Заполним заголовок Ethernet
memcpy(frame->addr_dest,tcpprop.macaddr_dst,6);
eth_send(frame,ETH_IP,len);
Уменьшим оставшееся количество пакетов для передачи клиенту
eth_send(frame,ETH_IP,len);
//будем считать, что ещё одну часть отправили, поэтому количество оставшихся частей декрементируем
tcpprop.cnt_rem_data_part--;
А по окончанию функции определимся в том, последний ли будет у нас следующий пакет или нет, в соответствии с этим примем нужное решение
tcpprop.cnt_rem_data_part--;
if(tcpprop.cnt_rem_data_part>1)
{
//tcpprop.ack_num = be32todword(be32todword(tcpprop.ack_num)+tcp_mss);
tcpprop.data_stat=DATA_MIDDLE;
}
else
{
tcpprop.data_stat=DATA_LAST;
}
return res;
}
Подготовим теперь страничку, которая вместе с заголовком влезет в три пакета, и изменим наш массив с главной страницей
const PROGMEM uint8_t index_htm[] = {
0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x68,0x31,0x20,
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,
0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x22,0x3e,0x41,0x74,0x4d,0x65,
0x67,0x61,0x20,0x33,0x32,0x38,0x50,0x3c,0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e,0x57,
0x45,0x42,0x20,0x53,0x65,0x72,0x77,0x65,0x72,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x3c,
0x70,0x3e,0x41,0x64,0x76,0x61,0x6e,0x63,0x65,0x64,0x20,0x52,0x49,0x53,0x43,0x20,
0x41,0x72,0x63,0x68,0x69,0x74,0x65,0x63,0x74,0x75,0x72,0x65,0x3c,0x2f,0x70,0x3e,
0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x31,0x33,
0x31,0x20,0x50,0x6f,0x77,0x65,0x72,0x66,0x75,0x6c,0x20,0x49,0x6e,0x73,0x74,0x72,
0x75,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0xe2,0x80,0x93,0x20,0x4d,0x6f,0x73,0x74,
0x20,0x53,0x69,0x6e,0x67,0x6c,0x65,0x20,0x43,0x6c,0x6f,0x63,0x6b,0x20,0x43,0x79,
0x63,0x6c,0x65,0x20,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,
0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x33,0x32,0x20,0x78,0x20,0x38,0x20,0x47,
0x65,0x6e,0x65,0x72,0x61,0x6c,0x20,0x50,0x75,0x72,0x70,0x6f,0x73,0x65,0x20,0x57,
0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20,0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x73,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x46,0x75,0x6c,0x6c,0x79,
0x20,0x53,0x74,0x61,0x74,0x69,0x63,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,
0x6e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x55,0x70,0x20,0x74,
0x6f,0x20,0x32,0x30,0x20,0x4d,0x49,0x50,0x53,0x20,0x54,0x68,0x72,0x6f,0x75,0x67,
0x68,0x70,0x75,0x74,0x20,0x61,0x74,0x20,0x32,0x30,0x20,0x4d,0x48,0x7a,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,
0x20,0x32,0x2d,0x63,0x79,0x63,0x6c,0x65,0x20,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,
0x69,0x65,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,
0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x48,0x69,0x67,0x68,0x20,0x45,0x6e,0x64,0x75,0x72,
0x61,0x6e,0x63,0x65,0x20,0x4e,0x6f,0x6e,0x2d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,
0x65,0x20,0x4d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x53,0x65,0x67,0x6d,0x65,0x6e,0x74,
0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,
0x6c,0x69,0x3e,0x34,0x2f,0x38,0x2f,0x31,0x36,0x2f,0x33,0x32,0x4b,0x20,0x42,0x79,
0x74,0x65,0x73,0x20,0x6f,0x66,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,
0x20,0x53,0x65,0x6c,0x66,0x2d,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x6d,0x61,0x62,
0x6c,0x65,0x20,0x46,0x6c,0x61,0x73,0x68,0x20,0x70,0x72,0x6f,0x67,0x61,0x6d,0x20,
0x6d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x32,0x35,0x36,0x2f,0x35,
0x31,0x32,0x2f,0x35,0x31,0x32,0x2f,0x31,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,
0x45,0x45,0x50,0x52,0x4f,0x4d,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x35,0x31,0x32,0x2f,0x31,
0x4b,0x2f,0x31,0x4b,0x2f,0x32,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,0x49,0x6e,
0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x53,0x52,0x41,0x4d,0x20,0x28,0x41,0x54,0x6d,
0x65,0x67,0x61,0x34,0x38,0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,
0x33,0x32,0x38,0x50,0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,
0x57,0x72,0x69,0x74,0x65,0x2f,0x45,0x72,0x61,0x73,0x65,0x20,0x43,0x79,0x63,0x6c,
0x65,0x73,0x3a,0x20,0x31,0x30,0x2c,0x30,0x30,0x30,0x20,0x46,0x6c,0x61,0x73,0x68,
0x2f,0x31,0x30,0x30,0x2c,0x30,0x30,0x30,0x20,0x45,0x45,0x50,0x52,0x4f,0x4d,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x44,0x61,0x74,0x61,0x20,0x72,
0x65,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x32,0x30,0x20,0x79,0x65,0x61,
0x72,0x73,0x20,0x61,0x74,0x20,0x38,0x35,0x20,0x43,0x20,0x2f,0x20,0x31,0x30,0x30,
0x20,0x79,0x65,0x61,0x72,0x73,0x20,0x61,0x74,0x20,0x32,0x35,0x43,0x20,0x28,0x31,
0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x70,0x74,0x69,
0x6f,0x6e,0x61,0x6c,0x20,0x42,0x6f,0x6f,0x74,0x20,0x43,0x6f,0x64,0x65,0x20,0x53,
0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69,0x74,0x68,0x20,0x49,0x6e,0x64,0x65,
0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x42,0x69,0x74,
0x73,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x50,0x72,0x6f,0x67,
0x72,0x61,0x6d,0x6d,0x69,0x6e,0x67,0x20,0x62,0x79,0x20,0x4f,0x6e,0x2d,0x63,0x68,
0x69,0x70,0x20,0x42,0x6f,0x6f,0x74,0x20,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,
0x54,0x72,0x75,0x65,0x20,0x52,0x65,0x61,0x64,0x2d,0x57,0x68,0x69,0x6c,0x65,0x2d,
0x57,0x72,0x69,0x74,0x65,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x50,0x72,0x6f,0x67,0x72,0x61,
0x6d,0x6d,0x69,0x6e,0x67,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x53,
0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,
0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e};
Соберём код, прошьём контроллер и проверим, что наша страница отображается в браузере на запрос клиента. Показывать я это здесь уже не буду, думаю, вы поверите мне на слово.
Теперь проделаем те же действия со страницами в 4, 5 и 6 частей (пакетов).
Приведу составы их массивов
const PROGMEM uint8_t index_htm[] = {
0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x68,0x31,0x20,
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,
0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x22,0x3e,0x41,0x74,0x4d,0x65,
0x67,0x61,0x20,0x33,0x32,0x38,0x50,0x3c,0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e,0x57,
0x45,0x42,0x20,0x53,0x65,0x72,0x77,0x65,0x72,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x3c,
0x70,0x3e,0x41,0x64,0x76,0x61,0x6e,0x63,0x65,0x64,0x20,0x52,0x49,0x53,0x43,0x20,
0x41,0x72,0x63,0x68,0x69,0x74,0x65,0x63,0x74,0x75,0x72,0x65,0x3c,0x2f,0x70,0x3e,
0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x31,0x33,
0x31,0x20,0x50,0x6f,0x77,0x65,0x72,0x66,0x75,0x6c,0x20,0x49,0x6e,0x73,0x74,0x72,
0x75,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0xe2,0x80,0x93,0x20,0x4d,0x6f,0x73,0x74,
0x20,0x53,0x69,0x6e,0x67,0x6c,0x65,0x20,0x43,0x6c,0x6f,0x63,0x6b,0x20,0x43,0x79,
0x63,0x6c,0x65,0x20,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,
0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x33,0x32,0x20,0x78,0x20,0x38,0x20,0x47,
0x65,0x6e,0x65,0x72,0x61,0x6c,0x20,0x50,0x75,0x72,0x70,0x6f,0x73,0x65,0x20,0x57,
0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20,0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x73,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x46,0x75,0x6c,0x6c,0x79,
0x20,0x53,0x74,0x61,0x74,0x69,0x63,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,
0x6e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x55,0x70,0x20,0x74,
0x6f,0x20,0x32,0x30,0x20,0x4d,0x49,0x50,0x53,0x20,0x54,0x68,0x72,0x6f,0x75,0x67,
0x68,0x70,0x75,0x74,0x20,0x61,0x74,0x20,0x32,0x30,0x20,0x4d,0x48,0x7a,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,
0x20,0x32,0x2d,0x63,0x79,0x63,0x6c,0x65,0x20,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,
0x69,0x65,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,
0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x48,0x69,0x67,0x68,0x20,0x45,0x6e,0x64,0x75,0x72,
0x61,0x6e,0x63,0x65,0x20,0x4e,0x6f,0x6e,0x2d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,
0x65,0x20,0x4d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x53,0x65,0x67,0x6d,0x65,0x6e,0x74,
0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,
0x6c,0x69,0x3e,0x34,0x2f,0x38,0x2f,0x31,0x36,0x2f,0x33,0x32,0x4b,0x20,0x42,0x79,
0x74,0x65,0x73,0x20,0x6f,0x66,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,
0x20,0x53,0x65,0x6c,0x66,0x2d,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x6d,0x61,0x62,
0x6c,0x65,0x20,0x46,0x6c,0x61,0x73,0x68,0x20,0x70,0x72,0x6f,0x67,0x61,0x6d,0x20,
0x6d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x32,0x35,0x36,0x2f,0x35,
0x31,0x32,0x2f,0x35,0x31,0x32,0x2f,0x31,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,
0x45,0x45,0x50,0x52,0x4f,0x4d,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x35,0x31,0x32,0x2f,0x31,
0x4b,0x2f,0x31,0x4b,0x2f,0x32,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,0x49,0x6e,
0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x53,0x52,0x41,0x4d,0x20,0x28,0x41,0x54,0x6d,
0x65,0x67,0x61,0x34,0x38,0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,
0x33,0x32,0x38,0x50,0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,
0x57,0x72,0x69,0x74,0x65,0x2f,0x45,0x72,0x61,0x73,0x65,0x20,0x43,0x79,0x63,0x6c,
0x65,0x73,0x3a,0x20,0x31,0x30,0x2c,0x30,0x30,0x30,0x20,0x46,0x6c,0x61,0x73,0x68,
0x2f,0x31,0x30,0x30,0x2c,0x30,0x30,0x30,0x20,0x45,0x45,0x50,0x52,0x4f,0x4d,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x44,0x61,0x74,0x61,0x20,0x72,
0x65,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x32,0x30,0x20,0x79,0x65,0x61,
0x72,0x73,0x20,0x61,0x74,0x20,0x38,0x35,0x20,0x43,0x20,0x2f,0x20,0x31,0x30,0x30,
0x20,0x79,0x65,0x61,0x72,0x73,0x20,0x61,0x74,0x20,0x32,0x35,0x43,0x20,0x28,0x31,
0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x70,0x74,0x69,
0x6f,0x6e,0x61,0x6c,0x20,0x42,0x6f,0x6f,0x74,0x20,0x43,0x6f,0x64,0x65,0x20,0x53,
0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69,0x74,0x68,0x20,0x49,0x6e,0x64,0x65,
0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x42,0x69,0x74,
0x73,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x50,0x72,0x6f,0x67,
0x72,0x61,0x6d,0x6d,0x69,0x6e,0x67,0x20,0x62,0x79,0x20,0x4f,0x6e,0x2d,0x63,0x68,
0x69,0x70,0x20,0x42,0x6f,0x6f,0x74,0x20,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,
0x54,0x72,0x75,0x65,0x20,0x52,0x65,0x61,0x64,0x2d,0x57,0x68,0x69,0x6c,0x65,0x2d,
0x57,0x72,0x69,0x74,0x65,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x50,0x72,0x6f,0x67,0x72,0x61,
0x6d,0x6d,0x69,0x6e,0x67,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x53,
0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,
0x3c,0x70,0x3e,0x41,0x74,0x6d,0x65,0x6c,0xc2,0xae,0x20,0x51,0x54,0x6f,0x75,0x63,
0x68,0xc2,0xae,0x20,0x4c,0x69,0x62,0x72,0x61,0x72,0x79,0x20,0x53,0x75,0x70,0x70,
0x6f,0x72,0x74,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,
0x09,0x3c,0x6c,0x69,0x3e,0x43,0x61,0x70,0x61,0x63,0x69,0x74,0x69,0x76,0x65,0x20,
0x54,0x6f,0x75,0x63,0x68,0x20,0x42,0x75,0x74,0x74,0x6f,0x6e,0x73,0x2c,0x20,0x53,
0x6c,0x69,0x64,0x65,0x72,0x73,0x20,0x61,0x6e,0x64,0x20,0x57,0x68,0x65,0x65,0x6c,
0x73,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x51,0x54,0x6f,0x75,
0x63,0x68,0x20,0x61,0x6e,0x64,0x20,0x51,0x4d,0x61,0x74,0x72,0x69,0x78,0xc2,0xae,
0x20,0x41,0x63,0x71,0x75,0x69,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x55,0x70,0x20,0x74,0x6f,0x20,0x36,0x34,0x20,
0x73,0x65,0x6e,0x73,0x65,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,
0x3e,0x50,0x65,0x72,0x69,0x70,0x68,0x65,0x72,0x61,0x6c,0x20,0x46,0x65,0x61,0x74,
0x75,0x72,0x65,0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,
0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x54,0x77,0x6f,0x20,0x38,0x2d,0x62,0x69,0x74,0x20,
0x54,0x69,0x6d,0x65,0x72,0x2f,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x73,0x20,0x77,
0x69,0x74,0x68,0x20,0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x50,0x72,0x65,
0x73,0x63,0x61,0x6c,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,
0x72,0x65,0x20,0x4d,0x6f,0x64,0x65,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,
0x69,0x3e,0x4f,0x6e,0x65,0x20,0x31,0x36,0x2d,0x62,0x69,0x74,0x20,0x54,0x69,0x6d,
0x65,0x72,0x2f,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x20,0x77,0x69,0x74,0x68,0x20,
0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x50,0x72,0x65,0x73,0x63,0x61,0x6c,
0x65,0x72,0x2c,0x20,0x43,0x6f,0x6d,0x70,0x61,0x72,0x65,0x20,0x4d,0x6f,0x64,0x65,
0x2c,0x20,0x61,0x6e,0x64,0x20,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x4d,0x6f,
0x64,0x65,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x52,0x65,0x61,
0x6c,0x20,0x54,0x69,0x6d,0x65,0x20,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x20,0x77,
0x69,0x74,0x68,0x20,0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x4f,0x73,0x63,
0x69,0x6c,0x6c,0x61,0x74,0x6f,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,
0x69,0x3e,0x53,0x69,0x78,0x20,0x50,0x57,0x4d,0x20,0x43,0x68,0x61,0x6e,0x6e,0x65,
0x6c,0x73,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x38,0x2d,0x63,
0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x31,0x30,0x2d,0x62,0x69,0x74,0x20,0x41,0x44,
0x43,0x20,0x69,0x6e,0x20,0x54,0x51,0x46,0x50,0x20,0x61,0x6e,0x64,0x20,0x51,0x46,
0x4e,0x2f,0x4d,0x4c,0x46,0x20,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x20,0x54,0x65,
0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,0x20,0x4d,0x65,0x61,0x73,0x75,0x72,
0x65,0x6d,0x65,0x6e,0x74,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,
0x36,0x2d,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x31,0x30,0x2d,0x62,0x69,0x74,
0x20,0x41,0x44,0x43,0x20,0x69,0x6e,0x20,0x50,0x44,0x49,0x50,0x20,0x50,0x61,0x63,
0x6b,0x61,0x67,0x65,0x20,0x54,0x65,0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,
0x20,0x4d,0x65,0x61,0x73,0x75,0x72,0x65,0x6d,0x65,0x6e,0x74,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x2f,0x62,0x6f,
0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e};
const PROGMEM uint8_t index_htm[] = {
0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x68,0x31,0x20,
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,
0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x22,0x3e,0x41,0x74,0x4d,0x65,
0x67,0x61,0x20,0x33,0x32,0x38,0x50,0x3c,0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e,0x57,
0x45,0x42,0x20,0x53,0x65,0x72,0x77,0x65,0x72,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x3c,
0x70,0x3e,0x41,0x64,0x76,0x61,0x6e,0x63,0x65,0x64,0x20,0x52,0x49,0x53,0x43,0x20,
0x41,0x72,0x63,0x68,0x69,0x74,0x65,0x63,0x74,0x75,0x72,0x65,0x3c,0x2f,0x70,0x3e,
0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x31,0x33,
0x31,0x20,0x50,0x6f,0x77,0x65,0x72,0x66,0x75,0x6c,0x20,0x49,0x6e,0x73,0x74,0x72,
0x75,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0xe2,0x80,0x93,0x20,0x4d,0x6f,0x73,0x74,
0x20,0x53,0x69,0x6e,0x67,0x6c,0x65,0x20,0x43,0x6c,0x6f,0x63,0x6b,0x20,0x43,0x79,
0x63,0x6c,0x65,0x20,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,
0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x33,0x32,0x20,0x78,0x20,0x38,0x20,0x47,
0x65,0x6e,0x65,0x72,0x61,0x6c,0x20,0x50,0x75,0x72,0x70,0x6f,0x73,0x65,0x20,0x57,
0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20,0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x73,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x46,0x75,0x6c,0x6c,0x79,
0x20,0x53,0x74,0x61,0x74,0x69,0x63,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,
0x6e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x55,0x70,0x20,0x74,
0x6f,0x20,0x32,0x30,0x20,0x4d,0x49,0x50,0x53,0x20,0x54,0x68,0x72,0x6f,0x75,0x67,
0x68,0x70,0x75,0x74,0x20,0x61,0x74,0x20,0x32,0x30,0x20,0x4d,0x48,0x7a,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,
0x20,0x32,0x2d,0x63,0x79,0x63,0x6c,0x65,0x20,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,
0x69,0x65,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,
0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x48,0x69,0x67,0x68,0x20,0x45,0x6e,0x64,0x75,0x72,
0x61,0x6e,0x63,0x65,0x20,0x4e,0x6f,0x6e,0x2d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,
0x65,0x20,0x4d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x53,0x65,0x67,0x6d,0x65,0x6e,0x74,
0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,
0x6c,0x69,0x3e,0x34,0x2f,0x38,0x2f,0x31,0x36,0x2f,0x33,0x32,0x4b,0x20,0x42,0x79,
0x74,0x65,0x73,0x20,0x6f,0x66,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,
0x20,0x53,0x65,0x6c,0x66,0x2d,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x6d,0x61,0x62,
0x6c,0x65,0x20,0x46,0x6c,0x61,0x73,0x68,0x20,0x70,0x72,0x6f,0x67,0x61,0x6d,0x20,
0x6d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x32,0x35,0x36,0x2f,0x35,
0x31,0x32,0x2f,0x35,0x31,0x32,0x2f,0x31,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,
0x45,0x45,0x50,0x52,0x4f,0x4d,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x35,0x31,0x32,0x2f,0x31,
0x4b,0x2f,0x31,0x4b,0x2f,0x32,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,0x49,0x6e,
0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x53,0x52,0x41,0x4d,0x20,0x28,0x41,0x54,0x6d,
0x65,0x67,0x61,0x34,0x38,0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,
0x33,0x32,0x38,0x50,0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,
0x57,0x72,0x69,0x74,0x65,0x2f,0x45,0x72,0x61,0x73,0x65,0x20,0x43,0x79,0x63,0x6c,
0x65,0x73,0x3a,0x20,0x31,0x30,0x2c,0x30,0x30,0x30,0x20,0x46,0x6c,0x61,0x73,0x68,
0x2f,0x31,0x30,0x30,0x2c,0x30,0x30,0x30,0x20,0x45,0x45,0x50,0x52,0x4f,0x4d,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x44,0x61,0x74,0x61,0x20,0x72,
0x65,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x32,0x30,0x20,0x79,0x65,0x61,
0x72,0x73,0x20,0x61,0x74,0x20,0x38,0x35,0x20,0x43,0x20,0x2f,0x20,0x31,0x30,0x30,
0x20,0x79,0x65,0x61,0x72,0x73,0x20,0x61,0x74,0x20,0x32,0x35,0x43,0x20,0x28,0x31,
0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x70,0x74,0x69,
0x6f,0x6e,0x61,0x6c,0x20,0x42,0x6f,0x6f,0x74,0x20,0x43,0x6f,0x64,0x65,0x20,0x53,
0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69,0x74,0x68,0x20,0x49,0x6e,0x64,0x65,
0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x42,0x69,0x74,
0x73,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x50,0x72,0x6f,0x67,
0x72,0x61,0x6d,0x6d,0x69,0x6e,0x67,0x20,0x62,0x79,0x20,0x4f,0x6e,0x2d,0x63,0x68,
0x69,0x70,0x20,0x42,0x6f,0x6f,0x74,0x20,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,
0x54,0x72,0x75,0x65,0x20,0x52,0x65,0x61,0x64,0x2d,0x57,0x68,0x69,0x6c,0x65,0x2d,
0x57,0x72,0x69,0x74,0x65,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x50,0x72,0x6f,0x67,0x72,0x61,
0x6d,0x6d,0x69,0x6e,0x67,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x53,
0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,
0x3c,0x70,0x3e,0x41,0x74,0x6d,0x65,0x6c,0xc2,0xae,0x20,0x51,0x54,0x6f,0x75,0x63,
0x68,0xc2,0xae,0x20,0x4c,0x69,0x62,0x72,0x61,0x72,0x79,0x20,0x53,0x75,0x70,0x70,
0x6f,0x72,0x74,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,
0x09,0x3c,0x6c,0x69,0x3e,0x43,0x61,0x70,0x61,0x63,0x69,0x74,0x69,0x76,0x65,0x20,
0x54,0x6f,0x75,0x63,0x68,0x20,0x42,0x75,0x74,0x74,0x6f,0x6e,0x73,0x2c,0x20,0x53,
0x6c,0x69,0x64,0x65,0x72,0x73,0x20,0x61,0x6e,0x64,0x20,0x57,0x68,0x65,0x65,0x6c,
0x73,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x51,0x54,0x6f,0x75,
0x63,0x68,0x20,0x61,0x6e,0x64,0x20,0x51,0x4d,0x61,0x74,0x72,0x69,0x78,0xc2,0xae,
0x20,0x41,0x63,0x71,0x75,0x69,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x55,0x70,0x20,0x74,0x6f,0x20,0x36,0x34,0x20,
0x73,0x65,0x6e,0x73,0x65,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,
0x3e,0x50,0x65,0x72,0x69,0x70,0x68,0x65,0x72,0x61,0x6c,0x20,0x46,0x65,0x61,0x74,
0x75,0x72,0x65,0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,
0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x54,0x77,0x6f,0x20,0x38,0x2d,0x62,0x69,0x74,0x20,
0x54,0x69,0x6d,0x65,0x72,0x2f,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x73,0x20,0x77,
0x69,0x74,0x68,0x20,0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x50,0x72,0x65,
0x73,0x63,0x61,0x6c,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,
0x72,0x65,0x20,0x4d,0x6f,0x64,0x65,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,
0x69,0x3e,0x4f,0x6e,0x65,0x20,0x31,0x36,0x2d,0x62,0x69,0x74,0x20,0x54,0x69,0x6d,
0x65,0x72,0x2f,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x20,0x77,0x69,0x74,0x68,0x20,
0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x50,0x72,0x65,0x73,0x63,0x61,0x6c,
0x65,0x72,0x2c,0x20,0x43,0x6f,0x6d,0x70,0x61,0x72,0x65,0x20,0x4d,0x6f,0x64,0x65,
0x2c,0x20,0x61,0x6e,0x64,0x20,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x4d,0x6f,
0x64,0x65,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x52,0x65,0x61,
0x6c,0x20,0x54,0x69,0x6d,0x65,0x20,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x20,0x77,
0x69,0x74,0x68,0x20,0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x4f,0x73,0x63,
0x69,0x6c,0x6c,0x61,0x74,0x6f,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,
0x69,0x3e,0x53,0x69,0x78,0x20,0x50,0x57,0x4d,0x20,0x43,0x68,0x61,0x6e,0x6e,0x65,
0x6c,0x73,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x38,0x2d,0x63,
0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x31,0x30,0x2d,0x62,0x69,0x74,0x20,0x41,0x44,
0x43,0x20,0x69,0x6e,0x20,0x54,0x51,0x46,0x50,0x20,0x61,0x6e,0x64,0x20,0x51,0x46,
0x4e,0x2f,0x4d,0x4c,0x46,0x20,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x20,0x54,0x65,
0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,0x20,0x4d,0x65,0x61,0x73,0x75,0x72,
0x65,0x6d,0x65,0x6e,0x74,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,
0x36,0x2d,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x31,0x30,0x2d,0x62,0x69,0x74,
0x20,0x41,0x44,0x43,0x20,0x69,0x6e,0x20,0x50,0x44,0x49,0x50,0x20,0x50,0x61,0x63,
0x6b,0x61,0x67,0x65,0x20,0x54,0x65,0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,
0x20,0x4d,0x65,0x61,0x73,0x75,0x72,0x65,0x6d,0x65,0x6e,0x74,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x54,0x77,0x6f,0x20,0x4d,0x61,0x73,0x74,0x65,
0x72,0x2f,0x53,0x6c,0x61,0x76,0x65,0x20,0x53,0x50,0x49,0x20,0x53,0x65,0x72,0x69,
0x61,0x6c,0x20,0x49,0x6e,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x6e,0x65,0x20,0x50,0x72,0x6f,0x67,0x72,
0x61,0x6d,0x6d,0x61,0x62,0x6c,0x65,0x20,0x53,0x65,0x72,0x69,0x61,0x6c,0x20,0x55,
0x53,0x41,0x52,0x54,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,
0x6e,0x65,0x20,0x42,0x79,0x74,0x65,0x2d,0x6f,0x72,0x69,0x65,0x6e,0x74,0x65,0x64,
0x20,0x32,0x2d,0x77,0x69,0x72,0x65,0x20,0x53,0x65,0x72,0x69,0x61,0x6c,0x20,0x49,
0x6e,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x28,0x50,0x68,0x69,0x6c,0x69,0x70,
0x73,0x20,0x49,0x32,0x43,0x20,0x63,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x6c,0x65,
0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x50,0x72,0x6f,0x67,
0x72,0x61,0x6d,0x6d,0x61,0x62,0x6c,0x65,0x20,0x57,0x61,0x74,0x63,0x68,0x64,0x6f,
0x67,0x20,0x54,0x69,0x6d,0x65,0x72,0x20,0x77,0x69,0x74,0x68,0x20,0x53,0x65,0x70,
0x61,0x72,0x61,0x74,0x65,0x20,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,0x20,0x4f,0x73,
0x63,0x69,0x6c,0x6c,0x61,0x74,0x6f,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,
0x6c,0x69,0x3e,0x4f,0x6e,0x65,0x20,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,0x20,0x41,
0x6e,0x61,0x6c,0x6f,0x67,0x20,0x43,0x6f,0x6d,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x49,0x6e,0x74,0x65,0x72,
0x72,0x75,0x70,0x74,0x20,0x61,0x6e,0x64,0x20,0x57,0x61,0x6b,0x65,0x2d,0x75,0x70,
0x20,0x6f,0x6e,0x20,0x50,0x69,0x6e,0x20,0x43,0x68,0x61,0x6e,0x67,0x65,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x2f,
0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e};
const PROGMEM uint8_t index_htm[] = {
0x3c,0x68,0x74,0x6d,0x6c,0x3e,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x68,0x31,0x20,
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67,
0x6e,0x3a,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x3b,0x22,0x3e,0x41,0x74,0x4d,0x65,
0x67,0x61,0x20,0x33,0x32,0x38,0x50,0x3c,0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e,0x57,
0x45,0x42,0x20,0x53,0x65,0x72,0x77,0x65,0x72,0x3c,0x2f,0x68,0x31,0x3e,0x0a,0x3c,
0x70,0x3e,0x41,0x64,0x76,0x61,0x6e,0x63,0x65,0x64,0x20,0x52,0x49,0x53,0x43,0x20,
0x41,0x72,0x63,0x68,0x69,0x74,0x65,0x63,0x74,0x75,0x72,0x65,0x3c,0x2f,0x70,0x3e,
0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x31,0x33,
0x31,0x20,0x50,0x6f,0x77,0x65,0x72,0x66,0x75,0x6c,0x20,0x49,0x6e,0x73,0x74,0x72,
0x75,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0xe2,0x80,0x93,0x20,0x4d,0x6f,0x73,0x74,
0x20,0x53,0x69,0x6e,0x67,0x6c,0x65,0x20,0x43,0x6c,0x6f,0x63,0x6b,0x20,0x43,0x79,
0x63,0x6c,0x65,0x20,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,
0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x33,0x32,0x20,0x78,0x20,0x38,0x20,0x47,
0x65,0x6e,0x65,0x72,0x61,0x6c,0x20,0x50,0x75,0x72,0x70,0x6f,0x73,0x65,0x20,0x57,
0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20,0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x73,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x46,0x75,0x6c,0x6c,0x79,
0x20,0x53,0x74,0x61,0x74,0x69,0x63,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,
0x6e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x55,0x70,0x20,0x74,
0x6f,0x20,0x32,0x30,0x20,0x4d,0x49,0x50,0x53,0x20,0x54,0x68,0x72,0x6f,0x75,0x67,
0x68,0x70,0x75,0x74,0x20,0x61,0x74,0x20,0x32,0x30,0x20,0x4d,0x48,0x7a,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,
0x20,0x32,0x2d,0x63,0x79,0x63,0x6c,0x65,0x20,0x4d,0x75,0x6c,0x74,0x69,0x70,0x6c,
0x69,0x65,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,
0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x48,0x69,0x67,0x68,0x20,0x45,0x6e,0x64,0x75,0x72,
0x61,0x6e,0x63,0x65,0x20,0x4e,0x6f,0x6e,0x2d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,
0x65,0x20,0x4d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x53,0x65,0x67,0x6d,0x65,0x6e,0x74,
0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,
0x6c,0x69,0x3e,0x34,0x2f,0x38,0x2f,0x31,0x36,0x2f,0x33,0x32,0x4b,0x20,0x42,0x79,
0x74,0x65,0x73,0x20,0x6f,0x66,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,
0x20,0x53,0x65,0x6c,0x66,0x2d,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x6d,0x61,0x62,
0x6c,0x65,0x20,0x46,0x6c,0x61,0x73,0x68,0x20,0x70,0x72,0x6f,0x67,0x61,0x6d,0x20,
0x6d,0x65,0x6d,0x6f,0x72,0x79,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x32,0x35,0x36,0x2f,0x35,
0x31,0x32,0x2f,0x35,0x31,0x32,0x2f,0x31,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,
0x45,0x45,0x50,0x52,0x4f,0x4d,0x20,0x28,0x41,0x54,0x6d,0x65,0x67,0x61,0x34,0x38,
0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,0x33,0x32,0x38,0x50,0x29,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x35,0x31,0x32,0x2f,0x31,
0x4b,0x2f,0x31,0x4b,0x2f,0x32,0x4b,0x20,0x42,0x79,0x74,0x65,0x73,0x20,0x49,0x6e,
0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x53,0x52,0x41,0x4d,0x20,0x28,0x41,0x54,0x6d,
0x65,0x67,0x61,0x34,0x38,0x50,0x2f,0x38,0x38,0x50,0x2f,0x31,0x36,0x38,0x50,0x2f,
0x33,0x32,0x38,0x50,0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,
0x57,0x72,0x69,0x74,0x65,0x2f,0x45,0x72,0x61,0x73,0x65,0x20,0x43,0x79,0x63,0x6c,
0x65,0x73,0x3a,0x20,0x31,0x30,0x2c,0x30,0x30,0x30,0x20,0x46,0x6c,0x61,0x73,0x68,
0x2f,0x31,0x30,0x30,0x2c,0x30,0x30,0x30,0x20,0x45,0x45,0x50,0x52,0x4f,0x4d,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x44,0x61,0x74,0x61,0x20,0x72,
0x65,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x32,0x30,0x20,0x79,0x65,0x61,
0x72,0x73,0x20,0x61,0x74,0x20,0x38,0x35,0x20,0x43,0x20,0x2f,0x20,0x31,0x30,0x30,
0x20,0x79,0x65,0x61,0x72,0x73,0x20,0x61,0x74,0x20,0x32,0x35,0x43,0x20,0x28,0x31,
0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x70,0x74,0x69,
0x6f,0x6e,0x61,0x6c,0x20,0x42,0x6f,0x6f,0x74,0x20,0x43,0x6f,0x64,0x65,0x20,0x53,
0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x69,0x74,0x68,0x20,0x49,0x6e,0x64,0x65,
0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x42,0x69,0x74,
0x73,0x20,0x49,0x6e,0x2d,0x53,0x79,0x73,0x74,0x65,0x6d,0x20,0x50,0x72,0x6f,0x67,
0x72,0x61,0x6d,0x6d,0x69,0x6e,0x67,0x20,0x62,0x79,0x20,0x4f,0x6e,0x2d,0x63,0x68,
0x69,0x70,0x20,0x42,0x6f,0x6f,0x74,0x20,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,
0x54,0x72,0x75,0x65,0x20,0x52,0x65,0x61,0x64,0x2d,0x57,0x68,0x69,0x6c,0x65,0x2d,
0x57,0x72,0x69,0x74,0x65,0x20,0x4f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x50,0x72,0x6f,0x67,0x72,0x61,
0x6d,0x6d,0x69,0x6e,0x67,0x20,0x4c,0x6f,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x53,
0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,
0x3c,0x70,0x3e,0x41,0x74,0x6d,0x65,0x6c,0xc2,0xae,0x20,0x51,0x54,0x6f,0x75,0x63,
0x68,0xc2,0xae,0x20,0x4c,0x69,0x62,0x72,0x61,0x72,0x79,0x20,0x53,0x75,0x70,0x70,
0x6f,0x72,0x74,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,
0x09,0x3c,0x6c,0x69,0x3e,0x43,0x61,0x70,0x61,0x63,0x69,0x74,0x69,0x76,0x65,0x20,
0x54,0x6f,0x75,0x63,0x68,0x20,0x42,0x75,0x74,0x74,0x6f,0x6e,0x73,0x2c,0x20,0x53,
0x6c,0x69,0x64,0x65,0x72,0x73,0x20,0x61,0x6e,0x64,0x20,0x57,0x68,0x65,0x65,0x6c,
0x73,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x51,0x54,0x6f,0x75,
0x63,0x68,0x20,0x61,0x6e,0x64,0x20,0x51,0x4d,0x61,0x74,0x72,0x69,0x78,0xc2,0xae,
0x20,0x41,0x63,0x71,0x75,0x69,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x55,0x70,0x20,0x74,0x6f,0x20,0x36,0x34,0x20,
0x73,0x65,0x6e,0x73,0x65,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,
0x3e,0x50,0x65,0x72,0x69,0x70,0x68,0x65,0x72,0x61,0x6c,0x20,0x46,0x65,0x61,0x74,
0x75,0x72,0x65,0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,
0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x54,0x77,0x6f,0x20,0x38,0x2d,0x62,0x69,0x74,0x20,
0x54,0x69,0x6d,0x65,0x72,0x2f,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x73,0x20,0x77,
0x69,0x74,0x68,0x20,0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x50,0x72,0x65,
0x73,0x63,0x61,0x6c,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x43,0x6f,0x6d,0x70,0x61,
0x72,0x65,0x20,0x4d,0x6f,0x64,0x65,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,
0x69,0x3e,0x4f,0x6e,0x65,0x20,0x31,0x36,0x2d,0x62,0x69,0x74,0x20,0x54,0x69,0x6d,
0x65,0x72,0x2f,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x20,0x77,0x69,0x74,0x68,0x20,
0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x50,0x72,0x65,0x73,0x63,0x61,0x6c,
0x65,0x72,0x2c,0x20,0x43,0x6f,0x6d,0x70,0x61,0x72,0x65,0x20,0x4d,0x6f,0x64,0x65,
0x2c,0x20,0x61,0x6e,0x64,0x20,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x4d,0x6f,
0x64,0x65,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x52,0x65,0x61,
0x6c,0x20,0x54,0x69,0x6d,0x65,0x20,0x43,0x6f,0x75,0x6e,0x74,0x65,0x72,0x20,0x77,
0x69,0x74,0x68,0x20,0x53,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x20,0x4f,0x73,0x63,
0x69,0x6c,0x6c,0x61,0x74,0x6f,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,
0x69,0x3e,0x53,0x69,0x78,0x20,0x50,0x57,0x4d,0x20,0x43,0x68,0x61,0x6e,0x6e,0x65,
0x6c,0x73,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x38,0x2d,0x63,
0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x31,0x30,0x2d,0x62,0x69,0x74,0x20,0x41,0x44,
0x43,0x20,0x69,0x6e,0x20,0x54,0x51,0x46,0x50,0x20,0x61,0x6e,0x64,0x20,0x51,0x46,
0x4e,0x2f,0x4d,0x4c,0x46,0x20,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x20,0x54,0x65,
0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,0x20,0x4d,0x65,0x61,0x73,0x75,0x72,
0x65,0x6d,0x65,0x6e,0x74,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,
0x36,0x2d,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x31,0x30,0x2d,0x62,0x69,0x74,
0x20,0x41,0x44,0x43,0x20,0x69,0x6e,0x20,0x50,0x44,0x49,0x50,0x20,0x50,0x61,0x63,
0x6b,0x61,0x67,0x65,0x20,0x54,0x65,0x6d,0x70,0x65,0x72,0x61,0x74,0x75,0x72,0x65,
0x20,0x4d,0x65,0x61,0x73,0x75,0x72,0x65,0x6d,0x65,0x6e,0x74,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x54,0x77,0x6f,0x20,0x4d,0x61,0x73,0x74,0x65,
0x72,0x2f,0x53,0x6c,0x61,0x76,0x65,0x20,0x53,0x50,0x49,0x20,0x53,0x65,0x72,0x69,
0x61,0x6c,0x20,0x49,0x6e,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x3c,0x2f,0x6c,0x69,
0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,0x6e,0x65,0x20,0x50,0x72,0x6f,0x67,0x72,
0x61,0x6d,0x6d,0x61,0x62,0x6c,0x65,0x20,0x53,0x65,0x72,0x69,0x61,0x6c,0x20,0x55,
0x53,0x41,0x52,0x54,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x4f,
0x6e,0x65,0x20,0x42,0x79,0x74,0x65,0x2d,0x6f,0x72,0x69,0x65,0x6e,0x74,0x65,0x64,
0x20,0x32,0x2d,0x77,0x69,0x72,0x65,0x20,0x53,0x65,0x72,0x69,0x61,0x6c,0x20,0x49,
0x6e,0x74,0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x28,0x50,0x68,0x69,0x6c,0x69,0x70,
0x73,0x20,0x49,0x32,0x43,0x20,0x63,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x6c,0x65,
0x29,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x50,0x72,0x6f,0x67,
0x72,0x61,0x6d,0x6d,0x61,0x62,0x6c,0x65,0x20,0x57,0x61,0x74,0x63,0x68,0x64,0x6f,
0x67,0x20,0x54,0x69,0x6d,0x65,0x72,0x20,0x77,0x69,0x74,0x68,0x20,0x53,0x65,0x70,
0x61,0x72,0x61,0x74,0x65,0x20,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,0x20,0x4f,0x73,
0x63,0x69,0x6c,0x6c,0x61,0x74,0x6f,0x72,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,
0x6c,0x69,0x3e,0x4f,0x6e,0x65,0x20,0x4f,0x6e,0x2d,0x63,0x68,0x69,0x70,0x20,0x41,
0x6e,0x61,0x6c,0x6f,0x67,0x20,0x43,0x6f,0x6d,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,
0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x49,0x6e,0x74,0x65,0x72,
0x72,0x75,0x70,0x74,0x20,0x61,0x6e,0x64,0x20,0x57,0x61,0x6b,0x65,0x2d,0x75,0x70,
0x20,0x6f,0x6e,0x20,0x50,0x69,0x6e,0x20,0x43,0x68,0x61,0x6e,0x67,0x65,0x3c,0x2f,
0x6c,0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,
0x3e,0x53,0x70,0x65,0x63,0x69,0x61,0x6c,0x20,0x4d,0x69,0x63,0x72,0x6f,0x63,0x6f,
0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x72,0x20,0x46,0x65,0x61,0x74,0x75,0x72,0x65,
0x73,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x70,0x3e,0x3c,0x75,0x6c,0x3e,0x0a,0x09,0x3c,
0x6c,0x69,0x3e,0x50,0x6f,0x77,0x65,0x72,0x2d,0x6f,0x6e,0x20,0x52,0x65,0x73,0x65,
0x74,0x20,0x61,0x6e,0x64,0x20,0x50,0x72,0x6f,0x67,0x72,0x61,0x6d,0x6d,0x61,0x62,
0x6c,0x65,0x20,0x42,0x72,0x6f,0x77,0x6e,0x2d,0x6f,0x75,0x74,0x20,0x44,0x65,0x74,
0x65,0x63,0x74,0x69,0x6f,0x6e,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,
0x3e,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x43,0x61,0x6c,0x69,0x62,0x72,
0x61,0x74,0x65,0x64,0x20,0x4f,0x73,0x63,0x69,0x6c,0x6c,0x61,0x74,0x6f,0x72,0x3c,
0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x45,0x78,0x74,0x65,0x72,0x6e,
0x61,0x6c,0x20,0x61,0x6e,0x64,0x20,0x49,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,
0x49,0x6e,0x74,0x65,0x72,0x72,0x75,0x70,0x74,0x20,0x53,0x6f,0x75,0x72,0x63,0x65,
0x73,0x3c,0x2f,0x6c,0x69,0x3e,0x0a,0x09,0x3c,0x6c,0x69,0x3e,0x53,0x69,0x78,0x20,
0x53,0x6c,0x65,0x65,0x70,0x20,0x4d,0x6f,0x64,0x65,0x73,0x3a,0x20,0x49,0x64,0x6c,
0x65,0x2c,0x20,0x41,0x44,0x43,0x20,0x4e,0x6f,0x69,0x73,0x65,0x20,0x52,0x65,0x64,
0x75,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x50,0x6f,0x77,0x65,0x72,0x2d,0x73,0x61,
0x76,0x65,0x2c,0x20,0x50,0x6f,0x77,0x65,0x72,0x2d,0x64,0x6f,0x77,0x6e,0x2c,0x20,
0x53,0x74,0x61,0x6e,0x64,0x62,0x79,0x2c,0x20,0x61,0x6e,0x64,0x20,0x45,0x78,0x74,
0x65,0x6e,0x64,0x65,0x64,0x20,0x53,0x74,0x61,0x6e,0x64,0x62,0x79,0x3c,0x2f,0x6c,
0x69,0x3e,0x0a,0x3c,0x2f,0x75,0x6c,0x3e,0x3c,0x2f,0x70,0x3e,0x0a,0x3c,0x2f,0x62,
0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e};
После каждого изменения проверяем результат в браузере и в Wireshark.
А вот и наша самая большая страница, которая состоит из 6 пакетов (нажмите на картинку для увеличения изображения)
Посмотрим также процесс передачи клиента нашего последнего документа в WireShark (нажмите на картинку для увеличения изображения)
Также убедимся, что наш документ состоит именно из 6 частей, заглянув в вывод данных в терминальной программе
Таким образом, в нашем уроке нам удалось передать, пользуясь протоколом HTTP, документ, состоящий, можно сказать из неограниченного количества пакетов. Также, не нарушая традиций, мы ещё немного прооптимизировали наш проект, что сэкономило нам немного памяти, а также сделало наш проект более читабельным.
Спасибо за внимание!
Предыдущая часть Программирование МК AVR Следующий урок
Приобрести плату Arduino Nano V3.0 оригинальный FT232RL можно здесь.
Приобрести программатор USBASP USBISP с адаптером можно здесь USBASP USBISP 3.3 с адаптером
Ethernet LAN Сетевой Модуль можно купить здесь ENC28J60 Ethernet LAN Сетевой Модуль.
Смотреть ВИДЕОУРОК (нажмите на картинку)
Спасибо за интересные и доходчивые уроки!
ЗЫ Ссылка на исходный код ведёт в никуда… Исправьте пожалуйста!
Исправил. Спасибо за замечание и интерес к ресурсу!