Problem with comparison.
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/STM32_EVAL/stm32_eval.c |
---|
0,0 → 1,78 |
#include "stm32_eval.h" |
GPIO_TypeDef* GPIO_PORT[LEDn] = {LED1_GPIO_PORT, LED2_GPIO_PORT, LED3_GPIO_PORT, |
LED4_GPIO_PORT}; |
const uint16_t GPIO_PIN[LEDn] = {LED1_GPIO_PIN, LED2_GPIO_PIN, LED3_GPIO_PIN, |
LED4_GPIO_PIN}; |
const uint32_t GPIO_CLK[LEDn] = {LED1_GPIO_CLK, LED2_GPIO_CLK, LED3_GPIO_CLK, |
LED4_GPIO_CLK}; |
/** |
* @brief Configures LED GPIO. |
* @param Led: Specifies the Led to be configured. |
* This parameter can be one of following parameters: |
* @arg LED1 |
* @arg LED2 |
* @arg LED3 |
* @arg LED4 |
* @retval None |
*/ |
void STM_EVAL_LEDInit(Led_TypeDef Led) |
{ |
GPIO_InitTypeDef GPIO_InitStructure; |
/* Enable the GPIO_LED Clock */ |
RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE); |
/* Configure the GPIO_LED pin */ |
GPIO_InitStructure.GPIO_Pin = GPIO_PIN[Led]; |
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; |
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; |
GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure); |
} |
/** |
* @brief Turns selected LED On. |
* @param Led: Specifies the Led to be set on. |
* This parameter can be one of following parameters: |
* @arg LED1 |
* @arg LED2 |
* @arg LED3 |
* @arg LED4 |
* @retval None |
*/ |
void STM_EVAL_LEDOn(Led_TypeDef Led) |
{ |
GPIO_PORT[Led]->BSRR = GPIO_PIN[Led]; |
} |
/** |
* @brief Turns selected LED Off. |
* @param Led: Specifies the Led to be set off. |
* This parameter can be one of following parameters: |
* @arg LED1 |
* @arg LED2 |
* @arg LED3 |
* @arg LED4 |
* @retval None |
*/ |
void STM_EVAL_LEDOff(Led_TypeDef Led) |
{ |
GPIO_PORT[Led]->BRR = GPIO_PIN[Led]; |
} |
/** |
* @brief Toggles the selected LED. |
* @param Led: Specifies the Led to be toggled. |
* This parameter can be one of following parameters: |
* @arg LED1 |
* @arg LED2 |
* @arg LED3 |
* @arg LED4 |
* @retval None |
*/ |
void STM_EVAL_LEDToggle(Led_TypeDef Led) |
{ |
GPIO_PORT[Led]->ODR ^= GPIO_PIN[Led]; |
} |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/STM32_EVAL/stm32_eval.d |
---|
0,0 → 1,20 |
Utilities/STM32_EVAL/stm32_eval.o: Utilities/STM32_EVAL/stm32_eval.c \ |
Utilities/STM32_EVAL/stm32_eval.h \ |
Project/Webserver_Demo_uIP/stm32f10x_conf.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h \ |
Libraries/CMSIS/Core/CM3/stm32f10x.h Libraries/CMSIS/Core/CM3/core_cm3.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
Libraries/CMSIS/Core/CM3/system_stm32f10x.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/misc.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/STM32_EVAL/stm32_eval.h |
---|
0,0 → 1,36 |
#ifndef __STM32_EVAL_H__ |
#define __STM32_EVAL_H__ |
#include "stm32f10x_conf.h" |
#define LEDn 4 |
#define LED1_GPIO_PORT GPIOB |
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB |
#define LED1_GPIO_PIN GPIO_Pin_4 |
#define LED2_GPIO_PORT GPIOB |
#define LED2_GPIO_CLK RCC_APB2Periph_GPIOB |
#define LED2_GPIO_PIN GPIO_Pin_5 |
#define LED3_GPIO_PORT GPIOB |
#define LED3_GPIO_CLK RCC_APB2Periph_GPIOB |
#define LED3_GPIO_PIN GPIO_Pin_6 |
#define LED4_GPIO_PORT GPIOB |
#define LED4_GPIO_CLK RCC_APB2Periph_GPIOB |
#define LED4_GPIO_PIN GPIO_Pin_7 |
typedef enum |
{ |
LED1 = 0, |
LED2 = 1, |
LED3 = 2, |
LED4 = 3 |
} Led_TypeDef; |
void STM_EVAL_LEDInit(Led_TypeDef Led); |
void STM_EVAL_LEDOn(Led_TypeDef Led); |
void STM_EVAL_LEDOff(Led_TypeDef Led); |
void STM_EVAL_LEDToggle(Led_TypeDef Led); |
#endif /* __STM32_EVAL_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/cgi.c |
---|
0,0 → 1,211 |
/** |
* \addtogroup httpd |
* @{ |
*/ |
/** |
* \file |
* HTTP server script language C functions file. |
* \author Adam Dunkels <adam@dunkels.com> |
* |
* This file contains functions that are called by the web server |
* scripts. The functions takes one argument, and the return value is |
* interpreted as follows. A zero means that the function did not |
* complete and should be invoked for the next packet as well. A |
* non-zero value indicates that the function has completed and that |
* the web server should move along to the next script line. |
* |
*/ |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: cgi.c,v 1.23.2.4 2003/10/07 13:22:27 adam Exp $ |
* |
*/ |
#include "uip.h" |
#include "cgi.h" |
#include "httpd.h" |
#include "fs.h" |
#include <stdio.h> |
#include <string.h> |
static u8_t print_stats(u8_t next); |
static u8_t file_stats(u8_t next); |
static u8_t tcp_stats(u8_t next); |
cgifunction cgitab[] = { |
print_stats, /* CGI function "a" */ |
file_stats, /* CGI function "b" */ |
tcp_stats /* CGI function "c" */ |
}; |
static const char closed[] = /* "CLOSED",*/ |
{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0}; |
static const char syn_rcvd[] = /* "SYN-RCVD",*/ |
{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, |
0x44, 0}; |
static const char syn_sent[] = /* "SYN-SENT",*/ |
{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, |
0x54, 0}; |
static const char established[] = /* "ESTABLISHED",*/ |
{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, |
0x45, 0x44, 0}; |
static const char fin_wait_1[] = /* "FIN-WAIT-1",*/ |
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, |
0x54, 0x2d, 0x31, 0}; |
static const char fin_wait_2[] = /* "FIN-WAIT-2",*/ |
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, |
0x54, 0x2d, 0x32, 0}; |
static const char closing[] = /* "CLOSING",*/ |
{0x43, 0x4c, 0x4f, 0x53, 0x49, |
0x4e, 0x47, 0}; |
static const char time_wait[] = /* "TIME-WAIT,"*/ |
{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, |
0x49, 0x54, 0}; |
static const char last_ack[] = /* "LAST-ACK"*/ |
{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, |
0x4b, 0}; |
static const char *states[] = { |
closed, |
syn_rcvd, |
syn_sent, |
established, |
fin_wait_1, |
fin_wait_2, |
closing, |
time_wait, |
last_ack}; |
/*-----------------------------------------------------------------------------------*/ |
/* print_stats: |
* |
* Prints out a part of the uIP statistics. The statistics data is |
* written into the uip_appdata buffer. It overwrites any incoming |
* packet. |
*/ |
static u8_t |
print_stats(u8_t next) |
{ |
#if UIP_STATISTICS |
u16_t i, j; |
u8_t *buf; |
u16_t *databytes; |
if(next) { |
/* If our last data has been acknowledged, we move on the next |
chunk of statistics. */ |
hs->count = hs->count + 4; |
if(hs->count >= sizeof(struct uip_stats)/sizeof(u16_t)) { |
/* We have printed out all statistics, so we return 1 to |
indicate that we are done. */ |
return 1; |
} |
} |
/* Write part of the statistics into the uip_appdata buffer. */ |
databytes = (u16_t *)&uip_stat + hs->count; |
buf = (u8_t *)uip_appdata; |
j = 4 + 1; |
i = hs->count; |
while (i < sizeof(struct uip_stats)/sizeof(u16_t) && --j > 0) { |
sprintf((char *)buf, "%5u\r\n", *databytes); |
++databytes; |
buf += 6; |
++i; |
} |
/* Send the data. */ |
uip_send(uip_appdata, buf - uip_appdata); |
return 0; |
#else |
return 1; |
#endif /* UIP_STATISTICS */ |
} |
/*-----------------------------------------------------------------------------------*/ |
static u8_t |
file_stats(u8_t next) |
{ |
/* We use sprintf() to print the number of file accesses to a |
particular file (given as an argument to the function in the |
script). We then use uip_send() to actually send the data. */ |
if(next) { |
return 1; |
} |
uip_send(uip_appdata, sprintf((char *)uip_appdata, "%5u", fs_count(&hs->script[4]))); |
return 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
static u8_t |
tcp_stats(u8_t next) |
{ |
struct uip_conn *conn; |
if(next) { |
/* If the previously sent data has been acknowledged, we move |
forward one connection. */ |
if(++hs->count == UIP_CONNS) { |
/* If all connections has been printed out, we are done and |
return 1. */ |
return 1; |
} |
} |
conn = &uip_conns[hs->count]; |
if((conn->tcpstateflags & TS_MASK) == CLOSED) { |
uip_send(uip_appdata, sprintf((char *)uip_appdata, |
"<tr align=\"center\"><td>-</td><td>-</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n", |
conn->nrtx, |
conn->timer, |
(uip_outstanding(conn))? '*':' ', |
(uip_stopped(conn))? '!':' ')); |
} else { |
uip_send(uip_appdata, sprintf((char *)uip_appdata, |
"<tr align=\"center\"><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n", |
htons(conn->ripaddr[0]) >> 8, |
htons(conn->ripaddr[0]) & 0xff, |
htons(conn->ripaddr[1]) >> 8, |
htons(conn->ripaddr[1]) & 0xff, |
htons(conn->rport), |
states[conn->tcpstateflags & TS_MASK], |
conn->nrtx, |
conn->timer, |
(uip_outstanding(conn))? '*':' ', |
(uip_stopped(conn))? '!':' ')); |
} |
return 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/cgi.d |
---|
0,0 → 1,22 |
Utilities/uip/cgi.o: Utilities/uip/cgi.c Utilities/uip/uip.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h Utilities/uip/cgi.h \ |
Utilities/uip/fs.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdio.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/stdio.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/string.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/string.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/cgi.h |
---|
0,0 → 1,57 |
/** |
* \addtogroup httpd |
* @{ |
*/ |
/** |
* \file |
* HTTP script language header file. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: cgi.h,v 1.3.2.4 2003/10/07 13:22:27 adam Exp $ |
* |
*/ |
#ifndef __CGI_H__ |
#define __CGI_H__ |
typedef u8_t (* cgifunction)(u8_t next); |
/** |
* A table containing pointers to C functions that can be called from |
* a web server script. |
*/ |
extern cgifunction cgitab[]; |
#endif /* __CGI_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/fs.c |
---|
0,0 → 1,155 |
/** |
* \addtogroup httpd |
* @{ |
*/ |
/** |
* \file |
* HTTP server read-only file system code. |
* \author Adam Dunkels <adam@dunkels.com> |
* |
* A simple read-only filesystem. |
*/ |
/* |
* Copyright (c) 2001, Swedish Institute of Computer Science. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the Institute nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* This file is part of the lwIP TCP/IP stack. |
* |
* Author: Adam Dunkels <adam@sics.se> |
* |
* $Id: fs.c,v 1.7.2.3 2003/10/07 13:22:27 adam Exp $ |
*/ |
#include "uip.h" |
#include "httpd.h" |
#include "fs.h" |
#include "fsdata.h" |
#define NULL (void *)0 |
#include "fsdata.c" |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
static u16_t count[FS_NUMFILES]; |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
/*-----------------------------------------------------------------------------------*/ |
static u8_t |
fs_strcmp(const char *str1, const char *str2) |
{ |
u8_t i; |
i = 0; |
loop: |
if(str2[i] == 0 || |
str1[i] == '\r' || |
str1[i] == '\n') { |
return 0; |
} |
if(str1[i] != str2[i]) { |
return 1; |
} |
++i; |
goto loop; |
} |
/*-----------------------------------------------------------------------------------*/ |
int |
fs_open(const char *name, struct fs_file *file) |
{ |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
u16_t i = 0; |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
struct fsdata_file_noconst *f; |
for(f = (struct fsdata_file_noconst *)FS_ROOT; |
f != NULL; |
f = (struct fsdata_file_noconst *)f->next) { |
if(fs_strcmp(name, f->name) == 0) { |
file->data = f->data; |
file->len = f->len; |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
++count[i]; |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
return 1; |
} |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
++i; |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
} |
return 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
void |
fs_init(void) |
{ |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
u16_t i; |
for(i = 0; i < FS_NUMFILES; i++) { |
count[i] = 0; |
} |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
} |
/*-----------------------------------------------------------------------------------*/ |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
u16_t fs_count |
(char *name) |
{ |
struct fsdata_file_noconst *f; |
u16_t i; |
i = 0; |
for(f = (struct fsdata_file_noconst *)FS_ROOT; |
f != NULL; |
f = (struct fsdata_file_noconst *)f->next) { |
if(fs_strcmp(name, f->name) == 0) { |
return count[i]; |
} |
++i; |
} |
return 0; |
} |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
/*-----------------------------------------------------------------------------------*/ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/fs.d |
---|
0,0 → 1,3 |
Utilities/uip/fs.o: Utilities/uip/fs.c Utilities/uip/uip.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h Utilities/uip/fs.h \ |
Utilities/uip/fsdata.h Utilities/uip/fsdata.c |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/fs.h |
---|
0,0 → 1,80 |
/** |
* \addtogroup httpd |
* @{ |
*/ |
/** |
* \file |
* HTTP server read-only file system header file. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001, Swedish Institute of Computer Science. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the Institute nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* This file is part of the lwIP TCP/IP stack. |
* |
* Author: Adam Dunkels <adam@sics.se> |
* |
* $Id: fs.h,v 1.6.2.3 2003/10/07 13:22:27 adam Exp $ |
*/ |
#ifndef __FS_H__ |
#define __FS_H__ |
#include "uip.h" |
/** |
* An open file in the read-only file system. |
*/ |
struct fs_file { |
char *data; /**< The actual file data. */ |
int len; /**< The length of the file data. */ |
}; |
/** |
* Open a file in the read-only file system. |
* |
* \param name The name of the file. |
* |
* \param file The file pointer, which must be allocated by caller and |
* will be filled in by the function. |
*/ |
int fs_open(const char *name, struct fs_file *file); |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
u16_t fs_count(char *name); |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
/** |
* Initialize the read-only file system. |
*/ |
void fs_init(void); |
#endif /* __FS_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/fsdata.c |
---|
0,0 → 1,4285 |
/************************************************************************* |
fsdata.c generator for UIP0.9 |
Works with cc65 C compiler |
Based on the work of Adam Dunkels <adam@dunkels.com> |
The syntax has been left as-is, with respect to the perl version |
Supports for a maximum of 2 levels directory and 999 files in each directory |
For more information, please go to http://www.design4fpga.com |
ALL RIGHTS RESERVED, COPYRIGHT APRIL 2006, DESIGN4FPGA |
*************************************************************************/ |
/************************************************************************* |
REDISTRIBUTION OF THIS PIECE OF SOFTWARE IN SOURCE OR AS A BINARY FILE IS PERMITTED IF AND ONLY IF |
THE FOLLOWING RULES ARE OBSERVED: |
1) THE REDISTRIBUTION FILE OR ARCHIVE SHOULD INCLUDE THIS README FILE AS WELL AS THE COPYRIGHT NOTICE. |
BY USING THIS SOFTWARE, YOU ARE ACKNOWLEDGING THAT YOU HAVE READ AND AGREED WITH THE FOLLOWING |
DISCLAIMER AND THE COPYRIGHT NOTICE ABOVE. |
DISCLAIMER: |
THIS PIECE OF SOFTWARE IS SUPPLIED ''AS IS'', WE (DESIGN4FPGA) SHALL NOT BE HELD RESPONSIBLE OR LIABLE |
FOR ANY RESULTING EVENTS THAT MIGHT HAPPEN DURING THE USE OF THIS PROGRAM IN PARTICULAR: |
1) THE LOSS OF INFORMATION DUE TO THE USE OR MISUSE OF FS_GENERATOR.EXE |
2) THE LOSS OF BUSINESS, STOCKS, MONEY, PEOPLE AND LIVES OR ANY UNFORTUNATE CIRCUMSTANCE THAT MAY PREVAIL |
AS A RESULT OF A SYSTEM FAILURE, DIRECTLY OR INDIRECTLY DUE TO THE USE OF FS_GENERATOR.EXE |
*************************************************************************/ |
#include "fsdata.h" |
static const char data_404_html[] = { |
/* /404.html */ |
0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, |
0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20, |
0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, |
0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, |
0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, |
0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20, |
0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, |
0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, |
0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, |
0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, |
0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, |
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, |
0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, |
0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, |
0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, |
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, |
0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, |
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0}; |
static const char data_index_html[] = { |
0x2f,0x53,0x54,0x4d,0x33,0x32,0x5f,0x48, |
0x6f,0x6d,0x65,0x5f,0x57,0x65,0x62,0x73, |
0x65,0x72,0x76,0x65,0x72,0x5f,0x44,0x65, |
0x6d,0x6f,0x2e,0x68,0x74,0x6d,0x6c,0x00,0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30, |
0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d, |
0x0a,0x53,0x65,0x72,0x76,0x65,0x72,0x3a, |
0x20,0x75,0x49,0x50,0x2f,0x30,0x2e,0x39, |
0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f, |
0x2f,0x64,0x75,0x6e,0x6b,0x65,0x6c,0x73, |
0x2e,0x63,0x6f,0x6d,0x2f,0x61,0x64,0x61, |
0x6d,0x2f,0x75,0x69,0x70,0x2f,0x29,0x0d, |
0x0a,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74, |
0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x74, |
0x65,0x78,0x74,0x2f,0x68,0x74,0x6d,0x6c, |
0x0d,0x0a,0x0d,0x0a,0x3c,0x21,0x44,0x4f, |
0x43,0x54,0x59,0x50,0x45,0x20,0x48,0x54, |
0x4d,0x4c,0x20,0x50,0x55,0x42,0x4c,0x49, |
0x43,0x20,0x22,0x2d,0x2f,0x2f,0x57,0x33, |
0x43,0x2f,0x2f,0x44,0x54,0x44,0x20,0x48, |
0x54,0x4d,0x4c,0x20,0x34,0x2e,0x30,0x20, |
0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69, |
0x6f,0x6e,0x61,0x6c,0x2f,0x2f,0x45,0x4e, |
0x22,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c, |
0x3e,0x3c,0x68,0x65,0x61,0x64,0x3e,0x3c, |
0x21,0x2d,0x2d,0x20,0x73,0x61,0x76,0x65, |
0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x75, |
0x72,0x6c,0x3d,0x28,0x30,0x30,0x34,0x39, |
0x29,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, |
0x31,0x39,0x32,0x2e,0x31,0x36,0x38,0x2e, |
0x30,0x2e,0x38,0x2f,0x53,0x54,0x4d,0x33, |
0x32,0x5f,0x48,0x6f,0x6d,0x65,0x5f,0x57, |
0x65,0x62,0x73,0x65,0x72,0x76,0x65,0x72, |
0x5f,0x44,0x65,0x6d,0x6f,0x2e,0x68,0x74, |
0x6d,0x6c,0x20,0x2d,0x2d,0x3e,0x3c,0x74, |
0x69,0x74,0x6c,0x65,0x3e,0x53,0x54,0x4d, |
0x33,0x32,0x20,0x28,0x43,0x4f,0x52,0x54, |
0x45,0x58,0x20,0x4d,0x33,0x29,0x20,0x2d, |
0x20,0x33,0x32,0x2d,0x62,0x69,0x74,0x20, |
0x4d,0x69,0x63,0x72,0x6f,0x63,0x6f,0x6e, |
0x74,0x72,0x6f,0x6c,0x6c,0x65,0x72,0x73, |
0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65,0x3e, |
0x0d,0x0a,0x3c,0x6d,0x65,0x74,0x61,0x20, |
0x68,0x74,0x74,0x70,0x2d,0x65,0x71,0x75, |
0x69,0x76,0x3d,0x22,0x43,0x6f,0x6e,0x74, |
0x65,0x6e,0x74,0x2d,0x54,0x79,0x70,0x65, |
0x22,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e, |
0x74,0x3d,0x22,0x74,0x65,0x78,0x74,0x2f, |
0x68,0x74,0x6d,0x6c,0x3b,0x20,0x63,0x68, |
0x61,0x72,0x73,0x65,0x74,0x3d,0x49,0x53, |
0x4f,0x2d,0x38,0x38,0x35,0x39,0x2d,0x31, |
0x22,0x3e,0x0d,0x0a,0x3c,0x6d,0x65,0x74, |
0x61,0x20,0x68,0x74,0x74,0x70,0x2d,0x65, |
0x71,0x75,0x69,0x76,0x3d,0x22,0x45,0x58, |
0x50,0x49,0x52,0x45,0x53,0x22,0x20,0x63, |
0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22, |
0x54,0x75,0x65,0x2c,0x20,0x30,0x39,0x20, |
0x44,0x65,0x63,0x20,0x32,0x30,0x30,0x38, |
0x20,0x30,0x30,0x3a,0x30,0x30,0x3a,0x30, |
0x30,0x22,0x3e,0x0d,0x0a,0x3c,0x6d,0x65, |
0x74,0x61,0x20,0x63,0x6f,0x6e,0x74,0x65, |
0x6e,0x74,0x3d,0x22,0x44,0x4f,0x43,0x55, |
0x4d,0x45,0x4e,0x54,0x22,0x20,0x6e,0x61, |
0x6d,0x65,0x3d,0x22,0x52,0x45,0x53,0x4f, |
0x55,0x52,0x43,0x45,0x2d,0x54,0x59,0x50, |
0x45,0x22,0x3e,0x0d,0x0a,0x3c,0x6d,0x65, |
0x74,0x61,0x20,0x63,0x6f,0x6e,0x74,0x65, |
0x6e,0x74,0x3d,0x22,0x47,0x4c,0x4f,0x42, |
0x41,0x4c,0x22,0x20,0x6e,0x61,0x6d,0x65, |
0x3d,0x22,0x44,0x49,0x53,0x54,0x52,0x49, |
0x42,0x55,0x54,0x49,0x4f,0x4e,0x22,0x3e, |
0x0d,0x0a,0x3c,0x6d,0x65,0x74,0x61,0x20, |
0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d, |
0x22,0x53,0x54,0x4d,0x69,0x63,0x72,0x6f, |
0x65,0x6c,0x65,0x63,0x74,0x72,0x6f,0x6e, |
0x69,0x63,0x73,0x22,0x20,0x6e,0x61,0x6d, |
0x65,0x3d,0x22,0x41,0x55,0x54,0x48,0x4f, |
0x52,0x22,0x3e,0x0d,0x0a,0x3c,0x6d,0x65, |
0x74,0x61,0x20,0x63,0x6f,0x6e,0x74,0x65, |
0x6e,0x74,0x3d,0x22,0x43,0x6f,0x70,0x79, |
0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63, |
0x29,0x20,0x62,0x79,0x20,0x53,0x54,0x4d, |
0x69,0x63,0x72,0x6f,0x65,0x6c,0x65,0x63, |
0x74,0x72,0x6f,0x6e,0x69,0x63,0x73,0x22, |
0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x43, |
0x4f,0x50,0x59,0x52,0x49,0x47,0x48,0x54, |
0x22,0x3e,0x0d,0x0a,0x3c,0x6d,0x65,0x74, |
0x61,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e, |
0x74,0x3d,0x22,0x50,0x72,0x6f,0x64,0x75, |
0x63,0x74,0x20,0x44,0x6f,0x6d,0x61,0x69, |
0x6e,0x22,0x20,0x6e,0x61,0x6d,0x65,0x3d, |
0x22,0x57,0x54,0x2e,0x63,0x67,0x5f,0x6e, |
0x22,0x3e,0x0d,0x0a,0x3c,0x6d,0x65,0x74, |
0x61,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e, |
0x74,0x3d,0x22,0x4d,0x69,0x63,0x72,0x6f, |
0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c, |
0x65,0x72,0x73,0x22,0x20,0x6e,0x61,0x6d, |
0x65,0x3d,0x22,0x57,0x54,0x2e,0x63,0x67, |
0x5f,0x73,0x22,0x3e,0x0d,0x0a,0x3c,0x6d, |
0x65,0x74,0x61,0x20,0x63,0x6f,0x6e,0x74, |
0x65,0x6e,0x74,0x3d,0x22,0x6d,0x69,0x63, |
0x72,0x6f,0x63,0x6f,0x6e,0x74,0x72,0x6f, |
0x6c,0x6c,0x65,0x72,0x2c,0x20,0x4d,0x43, |
0x55,0x2c,0x20,0x41,0x52,0x4d,0x20,0x4d, |
0x43,0x55,0x2c,0x20,0x33,0x32,0x2d,0x62, |
0x69,0x74,0x20,0x6d,0x69,0x63,0x72,0x6f, |
0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c, |
0x65,0x72,0x2c,0x20,0x53,0x54,0x4d,0x33, |
0x32,0x2c,0x20,0x41,0x52,0x4d,0x20,0x6d, |
0x69,0x63,0x72,0x6f,0x63,0x6f,0x6e,0x74, |
0x72,0x6f,0x6c,0x6c,0x65,0x72,0x2c,0x20, |
0x65,0x6d,0x62,0x65,0x64,0x64,0x65,0x64, |
0x2c,0x20,0x65,0x6d,0x75,0x6c,0x61,0x74, |
0x6f,0x72,0x2c,0x20,0x73,0x74,0x61,0x72, |
0x74,0x65,0x72,0x20,0x6b,0x69,0x74,0x2c, |
0x20,0x6d,0x69,0x70,0x73,0x2c,0x20,0x66, |
0x6c,0x61,0x73,0x68,0x20,0x4d,0x43,0x55, |
0x2c,0x20,0x43,0x20,0x63,0x6f,0x6d,0x70, |
0x69,0x6c,0x65,0x72,0x2c,0x20,0x70,0x72, |
0x6f,0x67,0x72,0x61,0x6d,0x6d,0x65,0x72, |
0x2c,0x20,0x55,0x53,0x42,0x2c,0x20,0x63, |
0x6f,0x72,0x74,0x65,0x78,0x2d,0x6d,0x33, |
0x2c,0x20,0x33,0x2d,0x70,0x68,0x61,0x73, |
0x65,0x20,0x6d,0x6f,0x74,0x6f,0x72,0x20, |
0x64,0x72,0x69,0x76,0x65,0x2c,0x20,0x43, |
0x41,0x4e,0x2c,0x20,0x54,0x68,0x75,0x6d, |
0x62,0x2d,0x32,0x22,0x20,0x6e,0x61,0x6d, |
0x65,0x3d,0x22,0x4b,0x45,0x59,0x57,0x4f, |
0x52,0x44,0x53,0x22,0x3e,0x0d,0x0a,0x3c, |
0x6d,0x65,0x74,0x61,0x20,0x63,0x6f,0x6e, |
0x74,0x65,0x6e,0x74,0x3d,0x22,0x53,0x54, |
0x4d,0x33,0x32,0x20,0x28,0x43,0x4f,0x52, |
0x54,0x45,0x58,0x20,0x4d,0x33,0x29,0x20, |
0x2d,0x20,0x33,0x32,0x2d,0x62,0x69,0x74, |
0x20,0x4d,0x69,0x63,0x72,0x6f,0x63,0x6f, |
0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x72, |
0x73,0x20,0x53,0x54,0x4d,0x69,0x63,0x72, |
0x6f,0x65,0x6c,0x65,0x63,0x74,0x72,0x6f, |
0x6e,0x69,0x63,0x73,0x22,0x20,0x6e,0x61, |
0x6d,0x65,0x3d,0x22,0x44,0x45,0x53,0x43, |
0x52,0x49,0x50,0x54,0x49,0x4f,0x4e,0x22, |
0x3e,0x0d,0x0a,0x3c,0x6d,0x65,0x74,0x61, |
0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74, |
0x3d,0x22,0x49,0x4e,0x44,0x45,0x58,0x2c, |
0x20,0x46,0x4f,0x4c,0x4c,0x4f,0x57,0x22, |
0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x52, |
0x4f,0x42,0x4f,0x54,0x53,0x22,0x3e,0x0d, |
0x0a,0x3c,0x6d,0x65,0x74,0x61,0x20,0x63, |
0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d,0x22, |
0x31,0x20,0x44,0x41,0x59,0x53,0x22,0x20, |
0x6e,0x61,0x6d,0x65,0x3d,0x22,0x52,0x45, |
0x56,0x49,0x53,0x49,0x54,0x2d,0x41,0x46, |
0x54,0x45,0x52,0x22,0x3e,0x0d,0x0a,0x3c, |
0x6d,0x65,0x74,0x61,0x20,0x63,0x6f,0x6e, |
0x74,0x65,0x6e,0x74,0x3d,0x22,0x47,0x45, |
0x4e,0x45,0x52,0x41,0x4c,0x22,0x20,0x6e, |
0x61,0x6d,0x65,0x3d,0x22,0x52,0x41,0x54, |
0x49,0x4e,0x47,0x22,0x3e,0x3c,0x6c,0x69, |
0x6e,0x6b,0x20,0x68,0x72,0x65,0x66,0x3d, |
0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, |
0x77,0x77,0x77,0x2e,0x73,0x74,0x2e,0x63, |
0x6f,0x6d,0x2f,0x6d,0x63,0x75,0x2f,0x66, |
0x61,0x76,0x69,0x63,0x6f,0x6e,0x2e,0x69, |
0x63,0x6f,0x22,0x20,0x72,0x65,0x6c,0x3d, |
0x22,0x53,0x48,0x4f,0x52,0x54,0x43,0x55, |
0x54,0x20,0x49,0x43,0x4f,0x4e,0x22,0x3e, |
0x0d,0x0a,0x3c,0x6d,0x65,0x74,0x61,0x20, |
0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x3d, |
0x22,0x4d,0x53,0x48,0x54,0x4d,0x4c,0x20, |
0x36,0x2e,0x30,0x30,0x2e,0x32,0x38,0x30, |
0x30,0x2e,0x31,0x35,0x36,0x31,0x22,0x20, |
0x6e,0x61,0x6d,0x65,0x3d,0x22,0x47,0x45, |
0x4e,0x45,0x52,0x41,0x54,0x4f,0x52,0x22, |
0x3e,0x3c,0x6c,0x69,0x6e,0x6b,0x20,0x74, |
0x69,0x74,0x6c,0x65,0x3d,0x22,0x52,0x53, |
0x53,0x22,0x20,0x68,0x72,0x65,0x66,0x3d, |
0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, |
0x77,0x77,0x77,0x2e,0x73,0x74,0x2e,0x63, |
0x6f,0x6d,0x2f,0x6d,0x63,0x75,0x2f,0x62, |
0x61,0x63,0x6b,0x65,0x6e,0x64,0x2e,0x70, |
0x68,0x70,0x22,0x20,0x74,0x79,0x70,0x65, |
0x3d,0x22,0x61,0x70,0x70,0x6c,0x69,0x63, |
0x61,0x74,0x69,0x6f,0x6e,0x2f,0x72,0x73, |
0x73,0x2b,0x78,0x6d,0x6c,0x22,0x20,0x72, |
0x65,0x6c,0x3d,0x22,0x61,0x6c,0x74,0x65, |
0x72,0x6e,0x61,0x74,0x65,0x22,0x3e,0x3c, |
0x2f,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a, |
0x3c,0x62,0x6f,0x64,0x79,0x20,0x73,0x74, |
0x79,0x6c,0x65,0x3d,0x22,0x63,0x6f,0x6c, |
0x6f,0x72,0x3a,0x20,0x72,0x67,0x62,0x28, |
0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29, |
0x3b,0x20,0x62,0x61,0x63,0x6b,0x67,0x72, |
0x6f,0x75,0x6e,0x64,0x2d,0x63,0x6f,0x6c, |
0x6f,0x72,0x3a,0x20,0x72,0x67,0x62,0x28, |
0x32,0x35,0x35,0x2c,0x20,0x32,0x35,0x35, |
0x2c,0x20,0x32,0x35,0x35,0x29,0x3b,0x22, |
0x20,0x6f,0x6e,0x6c,0x6f,0x61,0x64,0x3d, |
0x22,0x62,0x72,0x65,0x61,0x6b,0x4f,0x75, |
0x74,0x28,0x29,0x22,0x20,0x61,0x6c,0x69, |
0x6e,0x6b,0x3d,0x22,0x23,0x64,0x35,0x61, |
0x65,0x38,0x33,0x22,0x20,0x6c,0x69,0x6e, |
0x6b,0x3d,0x22,0x23,0x33,0x36,0x33,0x36, |
0x33,0x36,0x22,0x20,0x76,0x6c,0x69,0x6e, |
0x6b,0x3d,0x22,0x23,0x33,0x36,0x33,0x36, |
0x33,0x36,0x22,0x3e,0x0d,0x0a,0x3c,0x74, |
0x61,0x62,0x6c,0x65,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x77,0x69,0x64,0x74, |
0x68,0x3a,0x20,0x31,0x30,0x38,0x30,0x70, |
0x78,0x3b,0x20,0x68,0x65,0x69,0x67,0x68, |
0x74,0x3a,0x20,0x31,0x32,0x31,0x70,0x78, |
0x3b,0x22,0x20,0x61,0x6c,0x69,0x67,0x6e, |
0x3d,0x22,0x63,0x65,0x6e,0x74,0x65,0x72, |
0x22,0x20,0x62,0x6f,0x72,0x64,0x65,0x72, |
0x3d,0x22,0x30,0x22,0x20,0x63,0x65,0x6c, |
0x6c,0x70,0x61,0x64,0x64,0x69,0x6e,0x67, |
0x3d,0x22,0x30,0x22,0x20,0x63,0x65,0x6c, |
0x6c,0x73,0x70,0x61,0x63,0x69,0x6e,0x67, |
0x3d,0x22,0x30,0x22,0x3e,0x0d,0x0a,0x20, |
0x20,0x3c,0x74,0x62,0x6f,0x64,0x79,0x3e, |
0x0d,0x0a,0x20,0x20,0x3c,0x74,0x72,0x3e, |
0x0d,0x0a,0x20,0x20,0x20,0x20,0x3c,0x74, |
0x64,0x3e,0x3c,0x66,0x6f,0x6e,0x74,0x20, |
0x73,0x69,0x7a,0x65,0x3d,0x22,0x2d,0x31, |
0x22,0x3e,0x3c,0x61,0x20,0x68,0x72,0x65, |
0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a, |
0x2f,0x2f,0x77,0x77,0x77,0x2e,0x73,0x74, |
0x2e,0x63,0x6f,0x6d,0x2f,0x73,0x74,0x6f, |
0x6e,0x6c,0x69,0x6e,0x65,0x2f,0x69,0x6e, |
0x64,0x65,0x78,0x2e,0x68,0x74,0x6d,0x22, |
0x3e,0x3c,0x69,0x6d,0x67,0x20,0x61,0x6c, |
0x74,0x3d,0x22,0x22,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x62,0x6f,0x72,0x64, |
0x65,0x72,0x3a,0x20,0x30,0x70,0x78,0x20, |
0x73,0x6f,0x6c,0x69,0x64,0x20,0x3b,0x20, |
0x77,0x69,0x64,0x74,0x68,0x3a,0x20,0x31, |
0x30,0x37,0x30,0x70,0x78,0x3b,0x20,0x68, |
0x65,0x69,0x67,0x68,0x74,0x3a,0x20,0x35, |
0x38,0x70,0x78,0x3b,0x22,0x20,0x73,0x72, |
0x63,0x3d,0x22,0x53,0x54,0x4d,0x33,0x32, |
0x5f,0x48,0x6f,0x6d,0x65,0x5f,0x57,0x65, |
0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x5f, |
0x44,0x65,0x6d,0x6f,0x5f,0x66,0x69,0x6c, |
0x65,0x73,0x2f,0x73,0x74,0x37,0x36,0x36, |
0x2e,0x67,0x69,0x66,0x22,0x3e,0x3c,0x2f, |
0x61,0x3e,0x3c,0x2f,0x66,0x6f,0x6e,0x74, |
0x3e,0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x74, |
0x64,0x3e,0x3c,0x2f,0x74,0x64,0x3e,0x3c, |
0x2f,0x74,0x72,0x3e,0x0d,0x0a,0x20,0x20, |
0x3c,0x74,0x72,0x3e,0x0d,0x0a,0x20,0x20, |
0x20,0x20,0x3c,0x74,0x64,0x20,0x61,0x6c, |
0x69,0x67,0x6e,0x3d,0x22,0x72,0x69,0x67, |
0x68,0x74,0x22,0x20,0x76,0x61,0x6c,0x69, |
0x67,0x6e,0x3d,0x22,0x74,0x6f,0x70,0x22, |
0x3e,0x3c,0x66,0x6f,0x6e,0x74,0x20,0x73, |
0x69,0x7a,0x65,0x3d,0x22,0x2d,0x31,0x22, |
0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x2f,0x66, |
0x6f,0x6e,0x74,0x3e,0x3c,0x2f,0x74,0x64, |
0x3e,0x3c,0x74,0x64,0x3e,0x3c,0x2f,0x74, |
0x64,0x3e,0x3c,0x2f,0x74,0x72,0x3e,0x0d, |
0x0a,0x20,0x20,0x3c,0x74,0x72,0x3e,0x0d, |
0x0a,0x20,0x20,0x20,0x20,0x3c,0x74,0x64, |
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,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x0d,0x0a,0x3c, |
0x68,0x31,0x20,0x73,0x74,0x79,0x6c,0x65, |
0x3d,0x22,0x6d,0x61,0x72,0x67,0x69,0x6e, |
0x2d,0x74,0x6f,0x70,0x3a,0x20,0x31,0x25, |
0x3b,0x20,0x6d,0x61,0x72,0x67,0x69,0x6e, |
0x2d,0x6c,0x65,0x66,0x74,0x3a,0x20,0x34, |
0x30,0x70,0x78,0x3b,0x22,0x3e,0x0d,0x0a, |
0x0d,0x0a,0x3c,0x73,0x70,0x61,0x6e,0x20, |
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66, |
0x6f,0x6e,0x74,0x2d,0x73,0x69,0x7a,0x65, |
0x3a,0x20,0x31,0x36,0x70,0x74,0x3b,0x20, |
0x66,0x6f,0x6e,0x74,0x2d,0x66,0x61,0x6d, |
0x69,0x6c,0x79,0x3a,0x20,0x41,0x72,0x69, |
0x61,0x6c,0x3b,0x22,0x3e,0x53,0x54,0x4d, |
0x69,0x63,0x72,0x6f,0x65,0x6c,0x65,0x63, |
0x74,0x72,0x6f,0x6e,0x69,0x63,0x73,0x0d, |
0x0a,0x44,0x65,0x6c,0x69,0x76,0x65,0x72, |
0x73,0x20,0x53,0x54,0x4d,0x33,0x32,0x20, |
0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69, |
0x76,0x69,0x74,0x79,0x20,0x4c,0x69,0x6e, |
0x65,0x20,0x4d,0x69,0x63,0x72,0x6f,0x63, |
0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65, |
0x72,0x73,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x0d,0x0a,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x0d,0x0a, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x3c,0x2f,0x73,0x70,0x61, |
0x6e,0x3e,0x3c,0x2f,0x68,0x31,0x3e,0x3c, |
0x2f,0x74,0x64,0x3e,0x3c,0x74,0x64,0x3e, |
0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x2f,0x74, |
0x72,0x3e,0x3c,0x2f,0x74,0x62,0x6f,0x64, |
0x79,0x3e,0x3c,0x2f,0x74,0x61,0x62,0x6c, |
0x65,0x3e,0x0d,0x0a,0x3c,0x74,0x61,0x62, |
0x6c,0x65,0x20,0x73,0x74,0x79,0x6c,0x65, |
0x3d,0x22,0x6d,0x61,0x72,0x67,0x69,0x6e, |
0x2d,0x6c,0x65,0x66,0x74,0x3a,0x20,0x61, |
0x75,0x74,0x6f,0x3b,0x20,0x6d,0x61,0x72, |
0x67,0x69,0x6e,0x2d,0x72,0x69,0x67,0x68, |
0x74,0x3a,0x20,0x61,0x75,0x74,0x6f,0x3b, |
0x20,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f, |
0x75,0x6e,0x64,0x2d,0x63,0x6f,0x6c,0x6f, |
0x72,0x3a,0x20,0x72,0x67,0x62,0x28,0x32, |
0x35,0x35,0x2c,0x20,0x32,0x35,0x35,0x2c, |
0x20,0x32,0x35,0x35,0x29,0x3b,0x20,0x74, |
0x65,0x78,0x74,0x2d,0x61,0x6c,0x69,0x67, |
0x6e,0x3a,0x20,0x6c,0x65,0x66,0x74,0x3b, |
0x20,0x77,0x69,0x64,0x74,0x68,0x3a,0x20, |
0x31,0x30,0x38,0x32,0x70,0x78,0x3b,0x20, |
0x68,0x65,0x69,0x67,0x68,0x74,0x3a,0x20, |
0x35,0x30,0x31,0x70,0x78,0x3b,0x22,0x20, |
0x62,0x6f,0x72,0x64,0x65,0x72,0x3d,0x22, |
0x30,0x22,0x20,0x63,0x65,0x6c,0x6c,0x70, |
0x61,0x64,0x64,0x69,0x6e,0x67,0x3d,0x22, |
0x30,0x22,0x20,0x63,0x65,0x6c,0x6c,0x73, |
0x70,0x61,0x63,0x69,0x6e,0x67,0x3d,0x22, |
0x30,0x22,0x3e,0x0d,0x0a,0x20,0x20,0x3c, |
0x74,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a, |
0x20,0x20,0x3c,0x74,0x72,0x20,0x76,0x61, |
0x6c,0x69,0x67,0x6e,0x3d,0x22,0x74,0x6f, |
0x70,0x22,0x3e,0x3c,0x2f,0x74,0x72,0x3e, |
0x0d,0x0a,0x20,0x20,0x3c,0x74,0x72,0x20, |
0x76,0x61,0x6c,0x69,0x67,0x6e,0x3d,0x22, |
0x74,0x6f,0x70,0x22,0x3e,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x3c,0x74,0x64,0x20,0x63, |
0x6c,0x61,0x73,0x73,0x3d,0x22,0x74,0x65, |
0x78,0x74,0x22,0x3e,0x0d,0x0a,0x20,0x20, |
0x20,0x20,0x20,0x20,0x3c,0x64,0x69,0x76, |
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,0x3c,0x2f,0x64, |
0x69,0x76,0x3e,0x0d,0x0a,0x20,0x20,0x20, |
0x20,0x20,0x20,0x3c,0x74,0x61,0x62,0x6c, |
0x65,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x77,0x69,0x64,0x74,0x68,0x3a,0x20, |
0x39,0x34,0x37,0x70,0x78,0x3b,0x20,0x68, |
0x65,0x69,0x67,0x68,0x74,0x3a,0x20,0x32, |
0x33,0x36,0x70,0x78,0x3b,0x22,0x20,0x62, |
0x6f,0x72,0x64,0x65,0x72,0x3d,0x22,0x30, |
0x22,0x20,0x63,0x65,0x6c,0x6c,0x70,0x61, |
0x64,0x64,0x69,0x6e,0x67,0x3d,0x22,0x30, |
0x22,0x20,0x63,0x65,0x6c,0x6c,0x73,0x70, |
0x61,0x63,0x69,0x6e,0x67,0x3d,0x22,0x30, |
0x22,0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x3c,0x74,0x62,0x6f, |
0x64,0x79,0x3e,0x0d,0x0a,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x72, |
0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x64, |
0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22, |
0x74,0x65,0x78,0x74,0x2d,0x61,0x6c,0x69, |
0x67,0x6e,0x3a,0x20,0x6c,0x65,0x66,0x74, |
0x3b,0x22,0x3e,0x3c,0x64,0x69,0x76,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,0x0d,0x0a,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x3c,0x2f,0x64,0x69,0x76,0x3e, |
0x3c,0x64,0x6c,0x3e,0x3c,0x64,0x64,0x3e, |
0x3c,0x66,0x6f,0x6e,0x74,0x20,0x73,0x69, |
0x7a,0x65,0x3d,0x22,0x2d,0x31,0x22,0x3e, |
0x3c,0x69,0x6d,0x67,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x62,0x6f,0x72,0x64, |
0x65,0x72,0x3a,0x20,0x30,0x70,0x78,0x20, |
0x73,0x6f,0x6c,0x69,0x64,0x20,0x3b,0x20, |
0x68,0x65,0x69,0x67,0x68,0x74,0x3a,0x20, |
0x32,0x30,0x31,0x70,0x78,0x3b,0x20,0x77, |
0x69,0x64,0x74,0x68,0x3a,0x20,0x32,0x35, |
0x30,0x70,0x78,0x3b,0x22,0x20,0x61,0x6c, |
0x74,0x3d,0x22,0x53,0x54,0x4d,0x33,0x32, |
0x22,0x20,0x73,0x72,0x63,0x3d,0x22,0x53, |
0x54,0x4d,0x33,0x32,0x5f,0x48,0x6f,0x6d, |
0x65,0x5f,0x57,0x65,0x62,0x73,0x65,0x72, |
0x76,0x65,0x72,0x5f,0x44,0x65,0x6d,0x6f, |
0x5f,0x66,0x69,0x6c,0x65,0x73,0x2f,0x73, |
0x74,0x6d,0x33,0x32,0x5f,0x65,0x78,0x74, |
0x65,0x6e,0x64,0x73,0x2e,0x67,0x69,0x66, |
0x22,0x20,0x61,0x6c,0x69,0x67,0x6e,0x3d, |
0x22,0x74,0x6f,0x70,0x22,0x3e,0x3c,0x2f, |
0x66,0x6f,0x6e,0x74,0x3e,0x3c,0x2f,0x64, |
0x64,0x3e,0x3c,0x2f,0x64,0x6c,0x3e,0x3c, |
0x64,0x6c,0x3e,0x3c,0x64,0x64,0x3e,0x3c, |
0x2f,0x64,0x64,0x3e,0x3c,0x64,0x64,0x3e, |
0x3c,0x2f,0x64,0x64,0x3e,0x3c,0x2f,0x64, |
0x6c,0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x2f, |
0x74,0x64,0x3e,0x0d,0x0a,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, |
0x74,0x64,0x20,0x76,0x61,0x6c,0x69,0x67, |
0x6e,0x3d,0x22,0x74,0x6f,0x70,0x22,0x20, |
0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x35, |
0x37,0x33,0x22,0x3e,0x0d,0x0a,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x3c,0x64,0x69,0x76,0x20,0x61, |
0x6c,0x69,0x67,0x6e,0x3d,0x22,0x6a,0x75, |
0x73,0x74,0x69,0x66,0x79,0x22,0x3e,0x3c, |
0x66,0x6f,0x6e,0x74,0x20,0x73,0x69,0x7a, |
0x65,0x3d,0x22,0x2d,0x31,0x22,0x3e,0x3c, |
0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e,0x3c, |
0x62,0x72,0x3e,0x3c,0x2f,0x66,0x6f,0x6e, |
0x74,0x3e,0x54,0x68,0x69,0x73,0x20,0x64, |
0x65,0x6d,0x6f,0x6e,0x73,0x74,0x72,0x61, |
0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20, |
0x61,0x6e,0x20,0x65,0x6d,0x62,0x65,0x64, |
0x64,0x65,0x64,0x20,0x77,0x65,0x62,0x73, |
0x65,0x72,0x76,0x65,0x72,0x20,0x66,0x6f, |
0x72,0x20,0x53,0x54,0x4d,0x33,0x32,0x20, |
0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69, |
0x76,0x69,0x74,0x79,0x20,0x4c,0x69,0x6e, |
0x65,0x20,0x4d,0x69,0x63,0x72,0x6f,0x63, |
0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65, |
0x72,0x73,0x2e,0x3c,0x62,0x72,0x3e,0x49, |
0x74,0x20,0x69,0x73,0x20,0x62,0x61,0x73, |
0x65,0x64,0x20,0x6f,0x6e,0x20,0x75,0x49, |
0x50,0x20,0x54,0x43,0x50,0x2f,0x49,0x50, |
0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x76, |
0x30,0x2e,0x39,0x20,0x61,0x6e,0x64,0x20, |
0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73, |
0x20,0x74,0x68,0x72,0x65,0x65,0x20,0x48, |
0x54,0x4d,0x4c,0x20,0x70,0x61,0x67,0x65, |
0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x66, |
0x6f,0x72,0x6d,0x20,0x61,0x20,0x63,0x6f, |
0x6d,0x70,0x61,0x63,0x74,0x20,0x61,0x6e, |
0x64,0x3c,0x62,0x72,0x3e,0x69,0x6e,0x74, |
0x65,0x72,0x61,0x63,0x74,0x69,0x76,0x65, |
0x20,0x77,0x65,0x62,0x73,0x65,0x72,0x76, |
0x65,0x72,0x20,0x74,0x6f,0x20,0x69,0x6e, |
0x74,0x65,0x72,0x61,0x63,0x74,0x20,0x77, |
0x69,0x74,0x68,0x20,0x53,0x54,0x4d,0x33, |
0x32,0x31,0x30,0x43,0x2d,0x45,0x56,0x41, |
0x4c,0x20,0x62,0x6f,0x61,0x72,0x64,0x2e, |
0x3c,0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e, |
0x59,0x6f,0x75,0x20,0x77,0x69,0x6c,0x6c, |
0x20,0x62,0x65,0x20,0x61,0x62,0x6c,0x65, |
0x20,0x74,0x6f,0x20,0x61,0x64,0x64,0x72, |
0x65,0x73,0x73,0x20,0x0d,0x0a,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x74,0x68,0x65,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x53,0x54,0x4d,0x33,0x32,0x31,0x30, |
0x43,0x2d,0x45,0x56,0x41,0x4c,0x20,0x62, |
0x6f,0x61,0x72,0x64,0x20,0x61,0x73,0x20, |
0x61,0x20,0x77,0x65,0x62,0x20,0x70,0x61, |
0x67,0x65,0x20,0x75,0x73,0x69,0x6e,0x67, |
0x20,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x79,0x6f,0x75, |
0x72,0x20,0x77,0x65,0x62,0x20,0x62,0x72, |
0x6f,0x77,0x73,0x65,0x72,0x2c,0x20,0x61, |
0x73,0x20,0x77,0x65,0x6c,0x6c,0x20,0x61, |
0x73,0x20,0x63,0x6f,0x6e,0x74,0x72,0x6f, |
0x6c,0x6c,0x69,0x6e,0x67,0x20,0x74,0x68, |
0x65,0x20,0x66,0x6f,0x75,0x72,0x20,0x4c, |
0x45,0x44,0x73,0x20,0x6f,0x6e,0x20,0x74, |
0x68,0x65,0x20,0x0d,0x0a,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, |
0x6f,0x61,0x72,0x64,0x20,0x74,0x68,0x72, |
0x6f,0x75,0x67,0x68,0x20,0x74,0x68,0x65, |
0x20,0x62,0x72,0x6f,0x77,0x73,0x65,0x72, |
0x20,0x61,0x6e,0x64,0x20,0x66,0x69,0x6e, |
0x61,0x6c,0x6c,0x79,0x20,0x79,0x6f,0x75, |
0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65, |
0x20,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f, |
0x20,0x67,0x65,0x74,0x20,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75, |
0x6f,0x75,0x73,0x6c,0x79,0x2c,0x20,0x65, |
0x61,0x63,0x68,0x20,0x31,0x73,0x65,0x63, |
0x6f,0x6e,0x64,0x2c,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x74,0x68,0x65,0x20,0x41,0x44, |
0x43,0x20,0x43,0x68,0x61,0x6e,0x6e,0x65, |
0x6c,0x31,0x34,0x20,0x63,0x6f,0x6e,0x76, |
0x65,0x72,0x74,0x65,0x64,0x20,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20, |
0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65, |
0x64,0x20,0x6f,0x6e,0x20,0x61,0x20,0x73, |
0x74,0x61,0x74,0x75,0x73,0x20,0x62,0x61, |
0x72,0x20,0x61,0x6c,0x73,0x6f,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x69,0x6e,0x20,0x74, |
0x68,0x65,0x20,0x77,0x65,0x62,0x20,0x70, |
0x61,0x67,0x65,0x20,0x6f,0x66,0x20,0x0d, |
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x79,0x6f,0x75,0x72,0x20,0x62,0x72, |
0x6f,0x77,0x73,0x65,0x72,0x2e,0x3c,0x62, |
0x72,0x3e,0x3c,0x62,0x72,0x3e,0x46,0x6f, |
0x72,0x20,0x63,0x6f,0x6d,0x70,0x6c,0x65, |
0x74,0x65,0x20,0x64,0x6f,0x63,0x75,0x6d, |
0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e, |
0x20,0x6f,0x6e,0x20,0x53,0x54,0x4d,0x33, |
0x32,0x20,0x28,0x43,0x4f,0x52,0x54,0x45, |
0x58,0x20,0x4d,0x33,0x29,0x20,0x33,0x32, |
0x2d,0x62,0x69,0x74,0x20,0x4d,0x69,0x63, |
0x72,0x6f,0x63,0x6f,0x6e,0x74,0x72,0x6f, |
0x6c,0x6c,0x65,0x72,0x73,0x20,0x70,0x6c, |
0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x76, |
0x69,0x73,0x69,0x74,0x20,0x3c,0x61,0x20, |
0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74, |
0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77, |
0x2e,0x73,0x74,0x2e,0x63,0x6f,0x6d,0x2f, |
0x6d,0x63,0x75,0x2f,0x69,0x6e,0x63,0x68, |
0x74,0x6d,0x6c,0x2d,0x70,0x61,0x67,0x65, |
0x73,0x2d,0x73,0x74,0x6d,0x33,0x32,0x2e, |
0x68,0x74,0x6d,0x6c,0x22,0x3e,0x77,0x77, |
0x77,0x2e,0x73,0x74,0x2e,0x63,0x6f,0x6d, |
0x2f,0x53,0x54,0x4d,0x33,0x32,0x3c,0x2f, |
0x61,0x3e,0x3c,0x70,0x20,0x61,0x6c,0x69, |
0x67,0x6e,0x3d,0x22,0x6a,0x75,0x73,0x74, |
0x69,0x66,0x79,0x22,0x3e,0x3c,0x2f,0x70, |
0x3e,0x3c,0x75,0x6c,0x3e,0x3c,0x2f,0x75, |
0x6c,0x3e,0x3c,0x2f,0x64,0x69,0x76,0x3e, |
0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x2f,0x74, |
0x72,0x3e,0x3c,0x2f,0x74,0x62,0x6f,0x64, |
0x79,0x3e,0x3c,0x2f,0x74,0x61,0x62,0x6c, |
0x65,0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20, |
0x20,0x20,0x3c,0x74,0x61,0x62,0x6c,0x65, |
0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22, |
0x77,0x69,0x64,0x74,0x68,0x3a,0x20,0x39, |
0x34,0x35,0x70,0x78,0x3b,0x20,0x68,0x65, |
0x69,0x67,0x68,0x74,0x3a,0x20,0x31,0x38, |
0x33,0x70,0x78,0x3b,0x22,0x20,0x62,0x6f, |
0x72,0x64,0x65,0x72,0x3d,0x22,0x30,0x22, |
0x20,0x63,0x65,0x6c,0x6c,0x70,0x61,0x64, |
0x64,0x69,0x6e,0x67,0x3d,0x22,0x33,0x22, |
0x20,0x63,0x65,0x6c,0x6c,0x73,0x70,0x61, |
0x63,0x69,0x6e,0x67,0x3d,0x22,0x30,0x22, |
0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x3c,0x74,0x62,0x6f,0x64, |
0x79,0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x3c,0x74,0x72,0x3e, |
0x0d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x3c,0x74,0x64,0x3e, |
0x54,0x6f,0x20,0x73,0x65,0x6c,0x65,0x63, |
0x74,0x20,0x6f,0x6e,0x65,0x20,0x6f,0x66, |
0x20,0x74,0x68,0x65,0x20,0x74,0x77,0x6f, |
0x20,0x70,0x61,0x72,0x74,0x73,0x20,0x6f, |
0x66,0x20,0x0d,0x0a,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x68, |
0x65,0x20,0x53,0x54,0x4d,0x33,0x32,0x20, |
0x77,0x65,0x62,0x73,0x65,0x72,0x76,0x65, |
0x72,0x20,0x64,0x65,0x6d,0x6f,0x2c,0x20, |
0x70,0x6c,0x65,0x61,0x73,0x65,0x20,0x63, |
0x6c,0x69,0x63,0x6b,0x20,0x6f,0x6e,0x20, |
0x6f,0x6e,0x65,0x20,0x6f,0x66,0x20,0x74, |
0x68,0x65,0x20,0x66,0x6f,0x6c,0x6c,0x6f, |
0x77,0x69,0x6e,0x67,0x20,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x6c,0x69,0x6e,0x6b,0x73,0x3a,0x3c, |
0x74,0x61,0x62,0x6c,0x65,0x20,0x73,0x74, |
0x79,0x6c,0x65,0x3d,0x22,0x77,0x69,0x64, |
0x74,0x68,0x3a,0x20,0x39,0x30,0x32,0x70, |
0x78,0x3b,0x20,0x68,0x65,0x69,0x67,0x68, |
0x74,0x3a,0x20,0x31,0x33,0x35,0x70,0x78, |
0x3b,0x22,0x20,0x62,0x6f,0x72,0x64,0x65, |
0x72,0x3d,0x22,0x30,0x22,0x20,0x63,0x65, |
0x6c,0x6c,0x70,0x61,0x64,0x64,0x69,0x6e, |
0x67,0x3d,0x22,0x33,0x22,0x20,0x63,0x65, |
0x6c,0x6c,0x73,0x70,0x61,0x63,0x69,0x6e, |
0x67,0x3d,0x22,0x30,0x22,0x3e,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74, |
0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x72, |
0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x3c,0x74,0x64,0x3e,0x0d, |
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x3c,0x74,0x61,0x62,0x6c, |
0x65,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x68,0x65,0x69,0x67,0x68,0x74,0x3a, |
0x20,0x32,0x31,0x70,0x78,0x3b,0x20,0x77, |
0x69,0x64,0x74,0x68,0x3a,0x20,0x38,0x36, |
0x30,0x70,0x78,0x3b,0x22,0x20,0x62,0x6f, |
0x72,0x64,0x65,0x72,0x3d,0x22,0x30,0x22, |
0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, |
0x74,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x3c,0x74,0x72,0x3e, |
0x0d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x3c,0x74,0x64,0x20,0x77,0x69,0x64,0x74, |
0x68,0x3d,0x22,0x32,0x25,0x22,0x3e,0x0d, |
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x3c,0x75,0x6c,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x6c,0x69,0x73,0x74, |
0x2d,0x73,0x74,0x79,0x6c,0x65,0x2d,0x74, |
0x79,0x70,0x65,0x3a,0x20,0x73,0x71,0x75, |
0x61,0x72,0x65,0x3b,0x22,0x3e,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x2f, |
0x6c,0x69,0x3e,0x3c,0x2f,0x75,0x6c,0x3e, |
0x3c,0x2f,0x74,0x64,0x3e,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x64, |
0x3e,0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x74, |
0x64,0x3e,0x3c,0x2f,0x74,0x64,0x3e,0x3c, |
0x74,0x64,0x20,0x77,0x69,0x64,0x74,0x68, |
0x3d,0x22,0x39,0x38,0x25,0x22,0x3e,0x3c, |
0x66,0x6f,0x6e,0x74,0x20,0x73,0x69,0x7a, |
0x65,0x3d,0x22,0x2d,0x31,0x22,0x3e,0x3c, |
0x61,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x74, |
0x79,0x6c,0x65,0x3a,0x20,0x69,0x74,0x61, |
0x6c,0x69,0x63,0x3b,0x22,0x20,0x68,0x72, |
0x65,0x66,0x3d,0x22,0x68,0x74,0x74,0x70, |
0x3a,0x2f,0x2f,0x31,0x39,0x32,0x2e,0x31, |
0x36,0x38,0x2e,0x30,0x2e,0x38,0x2f,0x53, |
0x54,0x4d,0x33,0x32,0x5f,0x4c,0x45,0x44, |
0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x3c, |
0x62,0x69,0x67,0x3e,0x3c,0x62,0x69,0x67, |
0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22, |
0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x72, |
0x67,0x62,0x28,0x31,0x30,0x32,0x2c,0x20, |
0x30,0x2c,0x20,0x32,0x30,0x34,0x29,0x3b, |
0x22,0x3e,0x3c,0x73,0x70,0x61,0x6e,0x20, |
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66, |
0x6f,0x6e,0x74,0x2d,0x77,0x65,0x69,0x67, |
0x68,0x74,0x3a,0x20,0x62,0x6f,0x6c,0x64, |
0x3b,0x22,0x3e,0x53,0x54,0x4d,0x33,0x32, |
0x20,0x4c,0x45,0x44,0x73,0x20,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x3c, |
0x2f,0x73,0x70,0x61,0x6e,0x3e,0x3c,0x2f, |
0x62,0x69,0x67,0x3e,0x3c,0x2f,0x62,0x69, |
0x67,0x3e,0x3c,0x2f,0x61,0x3e,0x3c,0x2f, |
0x66,0x6f,0x6e,0x74,0x3e,0x20,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x3c,0x2f,0x74,0x64,0x3e,0x3c, |
0x2f,0x74,0x72,0x3e,0x3c,0x2f,0x74,0x62, |
0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x74,0x61, |
0x62,0x6c,0x65,0x3e,0x3c,0x66,0x6f,0x6e, |
0x74,0x20,0x73,0x69,0x7a,0x65,0x3d,0x22, |
0x2d,0x31,0x22,0x3e,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x3c,0x2f,0x66,0x6f,0x6e, |
0x74,0x3e,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x54,0x68,0x69,0x73,0x20,0x70,0x61,0x72, |
0x74,0x20,0x6f,0x66,0x20,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x74,0x68,0x65,0x20,0x44,0x65,0x6d, |
0x6f,0x20,0x69,0x73,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x75,0x73,0x65,0x64,0x20,0x74, |
0x6f,0x20,0x63,0x6f,0x6e,0x74,0x72,0x6f, |
0x6c,0x20,0x74,0x68,0x65,0x20,0x34,0x20, |
0x4c,0x45,0x44,0x73,0x20,0x6c,0x6f,0x63, |
0x61,0x74,0x65,0x64,0x20,0x69,0x6e,0x20, |
0x74,0x68,0x65,0x20,0x0d,0x0a,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x53,0x54,0x4d,0x33,0x32,0x31,0x30,0x43, |
0x2d,0x45,0x56,0x41,0x4c,0x20,0x62,0x6f, |
0x61,0x72,0x64,0x2e,0x3c,0x66,0x6f,0x6e, |
0x74,0x20,0x73,0x69,0x7a,0x65,0x3d,0x22, |
0x2d,0x31,0x22,0x3e,0x3c,0x62,0x72,0x3e, |
0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e,0x0d, |
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x3c,0x74,0x61,0x62,0x6c, |
0x65,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x77,0x69,0x64,0x74,0x68,0x3a,0x20, |
0x38,0x36,0x31,0x70,0x78,0x3b,0x20,0x68, |
0x65,0x69,0x67,0x68,0x74,0x3a,0x20,0x32, |
0x32,0x70,0x78,0x3b,0x22,0x20,0x62,0x6f, |
0x72,0x64,0x65,0x72,0x3d,0x22,0x30,0x22, |
0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, |
0x74,0x62,0x6f,0x64,0x79,0x3e,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x3c,0x74,0x72,0x3e, |
0x0d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x3c,0x74,0x64,0x20,0x77,0x69,0x64,0x74, |
0x68,0x3d,0x22,0x32,0x25,0x22,0x3e,0x0d, |
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x3c,0x75,0x6c,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x6c,0x69,0x73,0x74, |
0x2d,0x73,0x74,0x79,0x6c,0x65,0x2d,0x74, |
0x79,0x70,0x65,0x3a,0x20,0x73,0x71,0x75, |
0x61,0x72,0x65,0x3b,0x22,0x3e,0x0d,0x0a, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x3c,0x6c,0x69,0x3e,0x3c,0x2f, |
0x6c,0x69,0x3e,0x3c,0x2f,0x75,0x6c,0x3e, |
0x3c,0x2f,0x74,0x64,0x3e,0x0d,0x0a,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x64, |
0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22, |
0x39,0x38,0x25,0x22,0x3e,0x3c,0x66,0x6f, |
0x6e,0x74,0x20,0x73,0x69,0x7a,0x65,0x3d, |
0x22,0x2d,0x31,0x22,0x3e,0x3c,0x61,0x20, |
0x68,0x72,0x65,0x66,0x3d,0x22,0x68,0x74, |
0x74,0x70,0x3a,0x2f,0x2f,0x31,0x39,0x32, |
0x2e,0x31,0x36,0x38,0x2e,0x30,0x2e,0x38, |
0x2f,0x53,0x54,0x4d,0x33,0x32,0x5f,0x53, |
0x74,0x61,0x74,0x75,0x73,0x42,0x61,0x72, |
0x2e,0x68,0x74,0x6d,0x6c,0x22,0x3e,0x3c, |
0x62,0x69,0x67,0x20,0x73,0x74,0x79,0x6c, |
0x65,0x3d,0x22,0x66,0x6f,0x6e,0x74,0x2d, |
0x73,0x74,0x79,0x6c,0x65,0x3a,0x20,0x69, |
0x74,0x61,0x6c,0x69,0x63,0x3b,0x22,0x3e, |
0x3c,0x62,0x69,0x67,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x63,0x6f,0x6c,0x6f, |
0x72,0x3a,0x20,0x72,0x67,0x62,0x28,0x31, |
0x30,0x32,0x2c,0x20,0x30,0x2c,0x20,0x32, |
0x30,0x34,0x29,0x3b,0x22,0x3e,0x3c,0x73, |
0x70,0x61,0x6e,0x20,0x73,0x74,0x79,0x6c, |
0x65,0x3d,0x22,0x66,0x6f,0x6e,0x74,0x2d, |
0x77,0x65,0x69,0x67,0x68,0x74,0x3a,0x20, |
0x62,0x6f,0x6c,0x64,0x3b,0x22,0x3e,0x53, |
0x54,0x4d,0x33,0x32,0x20,0x41,0x44,0x43, |
0x20,0x43,0x6f,0x6e,0x76,0x65,0x72,0x73, |
0x69,0x6f,0x6e,0x20,0x53,0x74,0x61,0x74, |
0x75,0x73,0x20,0x0d,0x0a,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, |
0x20,0x20,0x20,0x20,0x20,0x42,0x61,0x72, |
0x3c,0x2f,0x73,0x70,0x61,0x6e,0x3e,0x3c, |
0x2f,0x62,0x69,0x67,0x3e,0x3c,0x2f,0x62, |
0x69,0x67,0x3e,0x3c,0x2f,0x61,0x3e,0x3c, |
0x62,0x72,0x3e,0x3c,0x2f,0x66,0x6f,0x6e, |
0x74,0x3e,0x3c,0x2f,0x74,0x64,0x3e,0x3c, |
0x2f,0x74,0x72,0x3e,0x3c,0x2f,0x74,0x62, |
0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x74,0x61, |
0x62,0x6c,0x65,0x3e,0x3c,0x66,0x6f,0x6e, |
0x74,0x20,0x73,0x69,0x7a,0x65,0x3d,0x22, |
0x2d,0x31,0x22,0x3e,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x0d,0x0a,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e, |
0x54,0x68,0x69,0x73,0x20,0x70,0x61,0x72, |
0x74,0x0d,0x0a,0x6f,0x66,0x20,0x74,0x68, |
0x65,0x20,0x44,0x65,0x6d,0x6f,0x20,0x69, |
0x73,0x26,0x6e,0x62,0x73,0x70,0x3b,0x75, |
0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x67, |
0x65,0x74,0x20,0x63,0x6f,0x6e,0x74,0x69, |
0x6e,0x75,0x6f,0x75,0x73,0x6c,0x79,0x20, |
0x74,0x68,0x65,0x20,0x41,0x44,0x43,0x20, |
0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20, |
0x31,0x34,0x0d,0x0a,0x63,0x6f,0x6e,0x76, |
0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x76, |
0x61,0x6c,0x75,0x65,0x20,0x61,0x6e,0x64, |
0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79, |
0x20,0x69,0x74,0x20,0x6f,0x6e,0x20,0x61, |
0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x20, |
0x62,0x61,0x72,0x2e,0x20,0x41,0x44,0x43, |
0x20,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c, |
0x20,0x31,0x34,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x0d,0x0a,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x69,0x73,0x20,0x63,0x6f,0x6e,0x6e, |
0x65,0x63,0x74,0x65,0x64,0x20,0x74,0x6f, |
0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x61, |
0x6c,0x6f,0x67,0x20,0x69,0x6e,0x70,0x75, |
0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74, |
0x65,0x64,0x20,0x62,0x79,0x20,0x74,0x68, |
0x65,0x20,0x52,0x56,0x31,0x0d,0x0a,0x70, |
0x6f,0x74,0x65,0x6e,0x74,0x69,0x6f,0x6d, |
0x65,0x74,0x65,0x72,0x20,0x6c,0x6f,0x63, |
0x61,0x74,0x65,0x64,0x20,0x69,0x6e,0x20, |
0x74,0x68,0x65,0x20,0x53,0x54,0x4d,0x33, |
0x32,0x31,0x30,0x43,0x2d,0x45,0x56,0x41, |
0x4c,0x20,0x62,0x6f,0x61,0x72,0x64,0x2e, |
0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x2f,0x74, |
0x72,0x3e,0x3c,0x2f,0x74,0x62,0x6f,0x64, |
0x79,0x3e,0x3c,0x2f,0x74,0x61,0x62,0x6c, |
0x65,0x3e,0x3c,0x2f,0x74,0x64,0x3e,0x3c, |
0x2f,0x74,0x72,0x3e,0x3c,0x2f,0x74,0x62, |
0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x74,0x61, |
0x62,0x6c,0x65,0x3e,0x3c,0x2f,0x74,0x64, |
0x3e,0x0d,0x0a,0x20,0x20,0x20,0x20,0x3c, |
0x74,0x64,0x3e,0x3c,0x2f,0x74,0x64,0x3e, |
0x0d,0x0a,0x20,0x20,0x20,0x20,0x3c,0x74, |
0x64,0x20,0x63,0x6f,0x6c,0x73,0x70,0x61, |
0x6e,0x3d,0x22,0x32,0x22,0x3e,0x3c,0x66, |
0x6f,0x6e,0x74,0x20,0x73,0x69,0x7a,0x65, |
0x3d,0x22,0x2d,0x31,0x22,0x3e,0x3c,0x62, |
0x72,0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x62, |
0x72,0x3e,0x3c,0x2f,0x66,0x6f,0x6e,0x74, |
0x3e,0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x2f, |
0x74,0x72,0x3e,0x3c,0x2f,0x74,0x62,0x6f, |
0x64,0x79,0x3e,0x3c,0x2f,0x74,0x61,0x62, |
0x6c,0x65,0x3e,0x3c,0x66,0x6f,0x6e,0x74, |
0x20,0x73,0x69,0x7a,0x65,0x3d,0x22,0x2d, |
0x31,0x22,0x3e,0x3c,0x73,0x70,0x61,0x6e, |
0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22, |
0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x62, |
0x6c,0x61,0x63,0x6b,0x3b,0x22,0x3e,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x3c,0x62,0x72, |
0x3e,0x3c,0x2f,0x73,0x70,0x61,0x6e,0x3e, |
0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e,0x3c, |
0x66,0x6f,0x6e,0x74,0x20,0x63,0x6c,0x61, |
0x73,0x73,0x3d,0x22,0x66,0x6f,0x6f,0x74, |
0x6d,0x73,0x67,0x22,0x3e,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x0d,0x0a,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x0d,0x0a,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x3c,0x65,0x6d,0x3e,0x3c,0x2f,0x65, |
0x6d,0x3e,0x20,0x0d,0x0a,0x3c,0x73,0x70, |
0x61,0x6e,0x20,0x73,0x74,0x79,0x6c,0x65, |
0x3d,0x22,0x63,0x6f,0x6c,0x6f,0x72,0x3a, |
0x20,0x73,0x69,0x6c,0x76,0x65,0x72,0x3b, |
0x22,0x3e,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x0d,0x0a,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x41,0x6c,0x6c,0x20,0x0d,0x0a, |
0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72, |
0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x20, |
0xa9,0x20,0x32,0x30,0x30,0x39,0x20,0x53, |
0x54,0x4d,0x69,0x63,0x72,0x6f,0x65,0x6c, |
0x65,0x63,0x74,0x72,0x6f,0x6e,0x69,0x63, |
0x73,0x3c,0x2f,0x73,0x70,0x61,0x6e,0x3e, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x3c,0x2f, |
0x66,0x6f,0x6e,0x74,0x3e,0x20,0x3c,0x2f, |
0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68, |
0x74,0x6d,0x6c,0x3e,}; |
static const char data_STM32_Home_Webserver_Demo_files_st766_gif[] = { |
0x2f,0x53,0x54,0x4d,0x33,0x32,0x5f,0x48, |
0x6f,0x6d,0x65,0x5f,0x57,0x65,0x62,0x73, |
0x65,0x72,0x76,0x65,0x72,0x5f,0x44,0x65, |
0x6d,0x6f,0x5f,0x66,0x69,0x6c,0x65,0x73, |
0x2f,0x73,0x74,0x37,0x36,0x36,0x2e,0x67, |
0x69,0x66,0x00,0x48,0x54,0x54,0x50,0x2f, |
0x31,0x2e,0x30,0x20,0x32,0x30,0x30,0x20, |
0x4f,0x4b,0x0d,0x0a,0x53,0x65,0x72,0x76, |
0x65,0x72,0x3a,0x20,0x75,0x49,0x50,0x2f, |
0x30,0x2e,0x39,0x20,0x28,0x68,0x74,0x74, |
0x70,0x3a,0x2f,0x2f,0x64,0x75,0x6e,0x6b, |
0x65,0x6c,0x73,0x2e,0x63,0x6f,0x6d,0x2f, |
0x61,0x64,0x61,0x6d,0x2f,0x75,0x69,0x70, |
0x2f,0x29,0x0d,0x0a,0x43,0x6f,0x6e,0x74, |
0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65, |
0x3a,0x20,0x69,0x6d,0x61,0x67,0x65,0x2f, |
0x67,0x69,0x66,0x0d,0x0a,0x0d,0x0a,0x47, |
0x49,0x46,0x38,0x39,0x61,0xfe,0x02,0x3a, |
0x00,0xf7,0x00,0x00,0xff,0xff,0xff,0xf8, |
0xfb,0xff,0xf6,0xfa,0xff,0xf7,0xf7,0xf7, |
0xef,0xf6,0xfe,0xf2,0xf6,0xfa,0xef,0xef, |
0xef,0xee,0xee,0xf7,0xe8,0xec,0xef,0xe6, |
0xef,0xf8,0xe0,0xef,0xff,0xe6,0xe6,0xe6, |
0xe2,0xe4,0xe7,0xd3,0xe5,0xf9,0xcd,0xe4, |
0xfe,0xde,0xde,0xef,0xde,0xde,0xde,0xde, |
0xe1,0xe5,0xd0,0xde,0xed,0xd8,0xde,0xe5, |
0xbe,0xdd,0xfe,0xd6,0xd6,0xd6,0xcd,0xd5, |
0xdf,0xc6,0xd3,0xe2,0xba,0xd7,0xf7,0xce, |
0xce,0xe7,0xbd,0xd6,0xf2,0xcc,0xcc,0xcc, |
0xad,0xd4,0xfe,0xbc,0xcd,0xdf,0xac,0xcf, |
0xf6,0xc5,0xc5,0xc5,0x99,0xcc,0xff,0xaa, |
0xc8,0xe9,0xa5,0xc9,0xf0,0xba,0xba,0xdd, |
0x99,0xc6,0xf7,0xbd,0xbd,0xbd,0x8f,0xc4, |
0xfe,0xa8,0xc0,0xda,0xb5,0xb5,0xb5,0x9a, |
0xb8,0xd9,0x89,0xbb,0xf0,0x8f,0xba,0xe8, |
0x81,0xbc,0xfc,0xaa,0xaa,0xd5,0xb1,0xb0, |
0xb0,0xab,0xaa,0xaa,0x81,0xb1,0xe5,0x8c, |
0xb0,0xd8,0x74,0xb5,0xfc,0x7b,0xb3,0xf0, |
0x6c,0xb2,0xfd,0xa4,0xa4,0xa4,0x82,0xad, |
0xdd,0x78,0xaa,0xe1,0x99,0x99,0xcc,0x6d, |
0xae,0xf3,0x61,0xac,0xfc,0x78,0xa8,0xdb, |
0x99,0x99,0x99,0x67,0xa7,0xec,0x6d,0xa6, |
0xe4,0x59,0xa7,0xfc,0x6b,0x9e,0xd5,0x61, |
0x9b,0xd9,0x57,0xa1,0xf0,0x4c,0xa1,0xfd, |
0x8b,0x8b,0xc5,0x5c,0x9c,0xe2,0x43,0x9c, |
0xfc,0x5e,0x98,0xd8,0x47,0x97,0xed,0x33, |
0x99,0xff,0x56,0x94,0xd8,0x4b,0x93,0xe1, |
0x41,0x96,0xf1,0x7c,0x7c,0xbe,0x4d,0x8d, |
0xd4,0x33,0x99,0xff,0x39,0x89,0xe0,0x31, |
0x8b,0xed,0x75,0x75,0xba,0x27,0x8d,0xfc, |
0x2b,0x8a,0xf2,0x24,0x8c,0xfc,0x37,0x87, |
0xdf,0x31,0x87,0xe4,0x6a,0x6a,0xb5,0x22, |
0x87,0xf5,0x16,0x85,0xfc,0x12,0x82,0xfc, |
0x32,0x7f,0xd3,0x65,0x65,0xb2,0x1b,0x7b, |
0xe4,0x0a,0x7e,0xfc,0x0a,0x7b,0xf6,0x09, |
0x78,0xef,0x19,0x72,0xd3,0x58,0x58,0xac, |
0x13,0x74,0xdc,0x09,0x77,0xee,0x09,0x73, |
0xe6,0x09,0x70,0xdf,0x0f,0x6e,0xd4,0x54, |
0x54,0xaa,0x09,0x6e,0xdc,0x09,0x6b,0xd6, |
0x4a,0x4a,0xa5,0x44,0x44,0xa2,0x44,0x44, |
0x8f,0x3d,0x3d,0x9e,0x33,0x33,0x99,0x30, |
0x30,0x83,0x20,0x20,0x90,0x20,0x20,0x79, |
0x1a,0x1a,0x8f,0x10,0x10,0x88,0x10,0x10, |
0x70,0x0c,0x0c,0x84,0x00,0x00,0x82,0x00, |
0x00,0x7f,0x00,0x00,0x75,0x00,0x00,0x66, |
0x00,0x00,0x56,0x00,0x00,0x43,0x00,0x00, |
0x33,0x00,0x00,0x21,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00, |
0x00,0xfe,0x02,0x3a,0x00,0x00,0x08,0xff, |
0x00,0x01,0x08,0x1c,0x48,0xb0,0xa0,0xc1, |
0x83,0x08,0x13,0x2a,0x5c,0xc8,0xb0,0xa1, |
0xc3,0x87,0x10,0x23,0x4a,0x9c,0x48,0xb1, |
0xa2,0xc5,0x8b,0x18,0x33,0x6a,0xdc,0xc8, |
0xb1,0xa3,0xc7,0x8f,0x20,0x43,0x8a,0x1c, |
0x49,0xb2,0xa4,0xc9,0x93,0x28,0x53,0xaa, |
0x5c,0xc9,0xb2,0xa5,0xcb,0x97,0x30,0x63, |
0xca,0x9c,0x49,0xb3,0xa6,0xcd,0x9b,0x38, |
0x73,0xea,0xdc,0xc9,0xb3,0xa7,0xcf,0x9f, |
0x40,0x83,0x0a,0x1d,0x4a,0xb4,0xa8,0xd1, |
0xa3,0x48,0x93,0x2a,0x5d,0xca,0xb4,0xa9, |
0xd3,0xa7,0x50,0xa3,0x4a,0x9d,0x4a,0xb5, |
0xaa,0xd5,0xab,0x58,0xb3,0x6a,0xdd,0xca, |
0xb5,0xab,0xd7,0xaf,0x60,0xc3,0x8a,0x1d, |
0x4b,0xb6,0xac,0xd9,0xb3,0x68,0xd3,0xaa, |
0x5d,0xcb,0xb6,0xad,0xdb,0xb7,0x70,0xe3, |
0xca,0x9d,0x4b,0xb7,0xae,0xdd,0xbb,0x78, |
0xf3,0xea,0xdd,0xcb,0xb7,0xaf,0xdf,0xbf, |
0x80,0x1f,0x06,0x18,0x3c,0xa0,0xb0,0xe1, |
0xc3,0x88,0x13,0x1b,0x1e,0x4c,0x58,0x71, |
0x61,0xc6,0x01,0x02,0x4b,0x9e,0x4c,0xb9, |
0x32,0xdb,0x00,0x86,0x2d,0x6b,0xde,0xcc, |
0xb9,0xb3,0xc9,0x06,0x3e,0x42,0x8b,0x1e, |
0x4d,0xba,0xb4,0xe9,0xd3,0xa5,0x45,0x0c, |
0x80,0x00,0x61,0x40,0x64,0xcf,0xb0,0x63, |
0xcb,0x9e,0xbd,0xb0,0xc8,0x9a,0x33,0x66, |
0x72,0xeb,0xde,0xcd,0xbb,0xb7,0xef,0xdf, |
0xbb,0x45,0x2c,0xd8,0x00,0xc1,0xc0,0x00, |
0xda,0xc8,0x93,0x2b,0xb7,0xfc,0x80,0x8c, |
0x99,0x30,0x60,0xa2,0x4b,0x9f,0x4e,0xbd, |
0xba,0xf5,0xeb,0xd2,0xa7,0x00,0xa8,0xf0, |
0xa1,0xf8,0xf1,0xe5,0xe0,0xc3,0x8b,0xff, |
0xaf,0xeb,0x43,0x4d,0x98,0x2f,0xe8,0xd3, |
0xab,0x5f,0xcf,0xbe,0xbd,0x7b,0xf5,0x2c, |
0x06,0x7c,0xd8,0xb0,0xa0,0x30,0xed,0x05, |
0x28,0x78,0xf0,0xa8,0x51,0x82,0x01,0x8a, |
0xff,0x00,0xa2,0x60,0xc0,0x7f,0x0b,0x08, |
0xb4,0xc1,0x7f,0x00,0x2c,0xc0,0x03,0x0a, |
0x1b,0x55,0xc0,0x43,0x05,0x0e,0x0d,0x50, |
0x01,0x84,0x15,0x29,0xc8,0xe0,0x78,0x18, |
0x66,0xc8,0x50,0x02,0xce,0x81,0x81,0xde, |
0x16,0x20,0x86,0x28,0xe2,0x88,0x24,0x96, |
0x68,0xe2,0x16,0x55,0x24,0x00,0x41,0x09, |
0x15,0xd4,0xf7,0x5d,0x6c,0x0a,0xf2,0xf0, |
0x02,0x0a,0x35,0x3c,0xa8,0xdf,0x8d,0xfa, |
0xc5,0xc8,0xe0,0x00,0x37,0x02,0x30,0xe0, |
0x06,0x0d,0x3e,0xe8,0x90,0x85,0x16,0xfd, |
0xa8,0xe1,0x91,0x48,0x12,0xb4,0x82,0x1a, |
0x65,0x68,0xa1,0x03,0x07,0x0a,0x44,0x29, |
0xe5,0x94,0x54,0x56,0x69,0xe5,0x95,0x51, |
0xca,0xc7,0x22,0x02,0xf6,0xc9,0xe6,0x60, |
0x0d,0xdf,0x55,0xf0,0x5d,0x7e,0x14,0xc6, |
0xc8,0x83,0x01,0x1f,0xf4,0x68,0xe4,0x76, |
0x2e,0xe8,0x57,0xc2,0x80,0x1f,0x54,0x20, |
0xe0,0x80,0xfa,0x09,0x28,0x50,0x05,0x2f, |
0xec,0x07,0xa1,0x83,0x10,0x0e,0xb0,0x41, |
0x8d,0x2f,0x40,0x60,0x60,0x9e,0x35,0x54, |
0xd0,0x66,0x0d,0x28,0x4c,0x98,0xe8,0x07, |
0x0c,0xd2,0xb9,0xa0,0x01,0x00,0x1c,0xf8, |
0x41,0x8d,0x28,0x0c,0xb0,0xa6,0xa1,0x6e, |
0x6e,0x57,0xe3,0x82,0x49,0x76,0x2a,0x9b, |
0x15,0x67,0x30,0xe1,0xc0,0x49,0xab,0xa1, |
0xb0,0x41,0x04,0xc6,0xbd,0x16,0x9b,0x83, |
0xfa,0xb9,0xf0,0x01,0xa4,0x02,0x91,0xff, |
0x29,0x90,0x99,0x25,0x6c,0xca,0x43,0x82, |
0x9c,0x42,0xb0,0xdf,0x06,0x69,0x9a,0xc9, |
0xc3,0x02,0x79,0x96,0x50,0x82,0x8c,0x00, |
0xe8,0xfa,0x42,0x05,0x35,0x2e,0xc0,0x67, |
0xa4,0x0b,0x6e,0xb0,0x9f,0x9f,0x32,0xca, |
0x89,0xc2,0xa1,0x89,0xb2,0xaa,0x1f,0x00, |
0xc1,0x0e,0xfb,0x02,0x00,0xf9,0x21,0xaa, |
0x5f,0x8b,0xb9,0xee,0x9a,0xa6,0x83,0x2e, |
0x70,0x57,0x83,0xa7,0xe8,0x72,0xa6,0x81, |
0x1a,0x42,0x10,0x40,0xea,0x02,0x8c,0xb6, |
0xd8,0xe5,0x6c,0xce,0xe2,0x58,0x20,0xb7, |
0x42,0xe2,0x8a,0x42,0x9e,0x3c,0xa4,0x79, |
0x2b,0x91,0xc3,0x52,0x68,0x80,0x82,0x2e, |
0xcc,0x4a,0x2c,0xb6,0xbf,0x0e,0xcb,0x22, |
0x99,0xcb,0xd6,0xb8,0xc1,0x06,0x79,0x2e, |
0x50,0xe3,0x77,0x03,0x73,0xba,0x1d,0x0f, |
0x40,0xe2,0xba,0x2d,0xc2,0xf8,0xfd,0xca, |
0x2c,0xb8,0x0c,0x06,0x2c,0x90,0x01,0x5f, |
0xb2,0xf8,0x62,0xba,0x28,0x4b,0xb6,0xc4, |
0x15,0x02,0xa0,0x64,0x00,0x04,0xae,0x7a, |
0x77,0x32,0x6c,0x86,0x0d,0xf7,0x6d,0xac, |
0xf9,0x5a,0xf8,0xa5,0xae,0xff,0x72,0x9a, |
0xdf,0xbd,0xfa,0x1a,0x7c,0xe1,0xcf,0xf9, |
0xb9,0x00,0xe0,0x84,0x42,0xd6,0x09,0xa0, |
0x01,0xd7,0x0e,0x44,0xe4,0xc5,0x65,0x5a, |
0x4c,0xb4,0xc7,0x7c,0x12,0xf9,0xf3,0x40, |
0x03,0xe4,0xa7,0x1f,0x98,0x29,0x77,0xfd, |
0x57,0x02,0x6a,0x60,0x80,0xd2,0x00,0x08, |
0x1c,0x48,0x9f,0x71,0xc8,0xe1,0xd9,0x22, |
0x04,0x35,0x52,0x28,0xab,0xbe,0x12,0x42, |
0x10,0x63,0xd0,0x69,0x96,0x50,0x58,0x09, |
0x4f,0xf3,0x78,0x26,0xd3,0x3c,0xc8,0xff, |
0xc7,0x83,0xdd,0x12,0x22,0x0d,0x61,0x9e, |
0x7d,0x6e,0x60,0x00,0xe1,0x09,0xd2,0xc7, |
0x83,0x0b,0x85,0x2d,0x0b,0x80,0xde,0x06, |
0xf0,0x9d,0x35,0xd5,0x0f,0x12,0x59,0xf7, |
0xdd,0x13,0x0e,0x20,0xb1,0xc7,0x5e,0x77, |
0xae,0x97,0x0f,0x57,0x18,0xe4,0xd8,0xe8, |
0xf3,0x62,0x4d,0x3a,0x7e,0x25,0xc8,0x9c, |
0x36,0x8e,0x0b,0x8e,0x99,0xb3,0xc5,0xb8, |
0xf6,0xbc,0x23,0xbf,0x39,0xc2,0x5e,0xaf, |
0x7e,0x40,0x0e,0x40,0xfb,0x83,0xcb,0xb2, |
0x6d,0xaf,0xef,0x75,0xea,0xcd,0x7b,0xbe, |
0xcc,0xde,0x08,0xe4,0xd5,0x55,0x73,0xaa, |
0x3b,0x8e,0xd6,0x2e,0xee,0xf9,0xf3,0x77, |
0x05,0x40,0xc6,0x0c,0x05,0x91,0x6d,0xc1, |
0x05,0xd8,0x67,0xaf,0xfd,0xf6,0x17,0x48, |
0x90,0x40,0x41,0x06,0x4c,0xc0,0xbd,0x04, |
0x12,0x90,0xec,0xc2,0x06,0x0c,0xa4,0x9a, |
0x1c,0xc9,0x13,0x02,0xed,0x63,0x7d,0x02, |
0x69,0x0e,0xeb,0xe3,0x0b,0x14,0x28,0x7f, |
0xfc,0x13,0x56,0x60,0xdc,0x02,0xf3,0x27, |
0xd8,0x3e,0xd6,0xf9,0x6b,0x8d,0xe6,0xbe, |
0x13,0xb8,0x16,0xe1,0x2f,0x73,0x8f,0x9b, |
0x50,0xe4,0xe0,0xe7,0xb4,0xff,0xbd,0xef, |
0x38,0x03,0xbc,0x5f,0x02,0x15,0xb8,0x9a, |
0xfc,0x41,0xef,0x82,0x74,0x11,0x81,0x1a, |
0x48,0x00,0x3e,0x1b,0xa0,0x01,0x0d,0x64, |
0x08,0xa1,0x08,0x47,0x48,0x42,0x32,0x88, |
0x80,0x20,0x9a,0x73,0x02,0x08,0x49,0x08, |
0x05,0x34,0x6d,0xa9,0x74,0x18,0x8c,0xa1, |
0x0c,0x67,0x18,0x11,0x28,0x9c,0x81,0x83, |
0x04,0x31,0x80,0x12,0x98,0x14,0x86,0x1e, |
0xfa,0xf0,0x87,0x40,0xa4,0x82,0xbb,0xff, |
0x06,0x62,0x80,0x0e,0xac,0xc1,0x0c,0x65, |
0x00,0x22,0x09,0xe0,0xe4,0x1d,0x55,0xd1, |
0xf0,0x89,0x50,0x8c,0x22,0x00,0x24,0xa0, |
0x06,0x33,0xc8,0xa0,0x7a,0x1a,0xf0,0x82, |
0x87,0xde,0xb3,0x1e,0x10,0xa0,0x70,0x01, |
0x47,0x30,0xcf,0x7a,0xb4,0x53,0x01,0x16, |
0xb9,0x48,0x8a,0x68,0x4c,0x23,0x06,0x8b, |
0x70,0x86,0x30,0x50,0xc1,0x89,0x02,0xd1, |
0x40,0x16,0xb8,0xa8,0x9e,0x2a,0x0c,0x71, |
0x64,0x16,0x10,0x83,0x19,0xb6,0x98,0x1e, |
0x13,0x0c,0x40,0x58,0xaa,0x53,0xa3,0x20, |
0x07,0x89,0x2e,0x0e,0xed,0x11,0x0c,0x1e, |
0x38,0x48,0x03,0x98,0xc0,0xc7,0xf7,0xb0, |
0xe0,0x8b,0x36,0x58,0x43,0x19,0xd6,0xa3, |
0x05,0x02,0x44,0xc0,0x54,0xfc,0x9b,0x19, |
0x21,0x37,0xc9,0x49,0xf0,0xc0,0x80,0x49, |
0xe8,0xa1,0x42,0x01,0x0e,0x52,0x00,0x21, |
0x34,0xb2,0x3d,0x0d,0x40,0x61,0x04,0xb8, |
0x70,0x86,0x53,0xea,0x00,0x00,0x1f,0x78, |
0xa1,0x26,0x3b,0x49,0xcb,0x5a,0x76,0x66, |
0x00,0x57,0xd8,0x63,0x7a,0x72,0x80,0x10, |
0x01,0xf4,0xe0,0x94,0xea,0x19,0x02,0xf8, |
0x4e,0x20,0x49,0xf6,0x50,0x00,0x01,0xa6, |
0x42,0x95,0x6b,0x6c,0xc9,0xcc,0x66,0x6a, |
0x26,0x04,0xa0,0x4c,0x0f,0x18,0xa8,0x87, |
0x90,0x19,0x00,0x13,0x3d,0x1c,0xf8,0xe2, |
0x0e,0xcf,0xa3,0x9e,0x24,0x44,0x4a,0x96, |
0xce,0x0c,0xa7,0x38,0xff,0xb2,0x84,0x36, |
0xae,0x07,0x0c,0x2a,0x80,0xe3,0x40,0xac, |
0xc9,0x9e,0x24,0xb4,0x8c,0x88,0x17,0x40, |
0x83,0x2e,0xd5,0x03,0x82,0x3f,0x76,0x47, |
0x7d,0xe3,0xcc,0xa7,0x3e,0xe9,0x42,0xff, |
0xc5,0x79,0xaa,0x27,0x0c,0x33,0x50,0xa7, |
0x40,0x7e,0xb9,0x1e,0x13,0x7c,0x71,0x07, |
0x62,0xac,0xa3,0x00,0xca,0x28,0xaf,0x59, |
0xee,0xf3,0xa1,0x10,0x35,0x4b,0x39,0xb9, |
0xc9,0x9e,0x30,0xf4,0x60,0x94,0x06,0x39, |
0xc0,0x15,0xf8,0xa8,0x05,0x05,0xe4,0x70, |
0x02,0xac,0x3c,0xa5,0x0c,0x02,0x00,0x48, |
0xe3,0x38,0x34,0xa2,0x28,0x4d,0xe9,0x56, |
0x10,0x50,0xc5,0x6b,0xa2,0x07,0x0c,0x48, |
0xc0,0x28,0x0a,0x43,0x30,0x49,0xf4,0xbc, |
0x92,0x20,0x08,0x48,0x41,0x31,0xd7,0xa3, |
0x00,0xfc,0x9c,0x6d,0x99,0x2a,0x0d,0xaa, |
0x50,0xb3,0x02,0x03,0x73,0x72,0x11,0xa6, |
0xdf,0x2b,0x08,0x02,0x36,0x8a,0x1e,0x0a, |
0x7c,0xd1,0x09,0xad,0x5c,0x8f,0x11,0x60, |
0x09,0xce,0xa1,0x5a,0xf5,0xaa,0x50,0x19, |
0x80,0x17,0xfc,0xf9,0x1e,0x30,0x44,0x21, |
0x95,0x39,0xbc,0xc1,0x24,0xa7,0x9a,0xc3, |
0x0e,0xc8,0xf3,0x94,0x1c,0x80,0x93,0x32, |
0x05,0x8a,0xd5,0xb6,0xba,0x35,0x28,0x1e, |
0x88,0x26,0x1d,0xbf,0xe0,0xd5,0x3b,0xfa, |
0x28,0x05,0x7b,0xf4,0x22,0xd6,0x16,0x00, |
0x84,0x84,0xa6,0x87,0x8c,0x66,0x84,0xe1, |
0x5b,0x07,0x4b,0xd8,0x9d,0xd8,0xd0,0xa5, |
0xee,0xf1,0x28,0x11,0x53,0x70,0x86,0x2c, |
0xd8,0x35,0x7c,0x7a,0x3c,0x65,0x7c,0x4a, |
0x70,0x4f,0xc1,0x16,0xf6,0xb2,0x98,0x8d, |
0x89,0x07,0x3c,0xc0,0x81,0xce,0x7a,0xf6, |
0xb3,0xa0,0xe5,0x80,0x53,0xb1,0x86,0x00, |
0x1b,0x9c,0xe1,0x8a,0xa4,0x8d,0xc1,0x4e, |
0xd3,0xb3,0x05,0x02,0x40,0x00,0x93,0x68, |
0xcb,0xac,0x6c,0x67,0x5b,0x94,0x14,0xff, |
0x9e,0x01,0xac,0xf1,0x5b,0x40,0x48,0xd7, |
0xf3,0x03,0xaa,0x42,0x80,0x4b,0x27,0xa5, |
0xad,0x70,0x87,0x4b,0x13,0x03,0x58,0x00, |
0x0d,0x48,0x50,0x2a,0x31,0xcd,0x60,0xcc, |
0x1f,0xa5,0x0f,0xa8,0xc4,0x8d,0xae,0x74, |
0x63,0x32,0xb0,0x30,0x8a,0x6d,0xaf,0x4e, |
0xf0,0x2b,0x7a,0xbc,0xb9,0x81,0xaa,0x4e, |
0xf7,0xbb,0xe0,0x75,0xd9,0x02,0x54,0x9b, |
0xdc,0xb2,0x9e,0x75,0x3d,0x1c,0xb0,0x67, |
0x13,0xc3,0xcb,0xde,0xf6,0x82,0x64,0x00, |
0x0c,0xd8,0xc1,0x6d,0x12,0x99,0xc3,0x20, |
0x68,0xf7,0x0b,0x80,0x6d,0xa8,0x7b,0xf7, |
0xcb,0xdf,0xf8,0x91,0xee,0xbf,0x08,0x58, |
0x81,0x12,0x84,0x90,0x83,0xc8,0x1c,0xc6, |
0x00,0x37,0xe8,0x41,0x0f,0x74,0xc0,0x60, |
0x06,0xa7,0xf7,0x03,0x95,0x0d,0x6e,0x7f, |
0x27,0x2c,0x5b,0xcd,0xd5,0x2f,0x02,0x18, |
0xce,0xb0,0x86,0x37,0xcc,0xe1,0x08,0x20, |
0xe0,0x00,0x20,0x66,0xc0,0x86,0xf9,0x57, |
0x80,0x12,0x9b,0x98,0x64,0x25,0xa0,0x8f, |
0x65,0x29,0xcc,0xe2,0xcc,0x6a,0xae,0x02, |
0x0f,0x8b,0x65,0x09,0x02,0x44,0xe3,0x1a, |
0x07,0x48,0x58,0x33,0xb6,0x31,0x0a,0x70, |
0xcc,0xe3,0x14,0x07,0xb2,0xc5,0x40,0x9e, |
0xad,0xa5,0xea,0xc7,0x9a,0xfc,0x19,0xf9, |
0xc8,0x48,0x4e,0xb2,0x92,0x93,0x9c,0x49, |
0x09,0x07,0xf9,0xc9,0x6d,0x2d,0x4c,0xe4, |
0xa6,0x4c,0xe5,0x2a,0x53,0x19,0x01,0x58, |
0xce,0xb2,0x96,0xb7,0xcc,0x65,0x04,0x4c, |
0xf9,0x31,0x50,0x0e,0xb3,0x8b,0xff,0x4b, |
0xe6,0x32,0x3b,0x86,0xad,0x62,0x4e,0xf3, |
0x55,0x21,0xc3,0xe6,0x36,0xbb,0xd9,0x1c, |
0xcc,0x87,0x61,0x8c,0x9a,0xe7,0x4c,0xe7, |
0x3a,0xdb,0xf9,0xce,0x78,0xce,0xb3,0x9e, |
0xf7,0xcc,0xe7,0x3e,0xfb,0xf9,0xcf,0x80, |
0x36,0x4a,0x40,0x00,0x00,0x3b,}; |
static const char data_STM32_Home_Webserver_Demo_files_stm32_extends_gif[] = { |
0x2f,0x53,0x54,0x4d,0x33,0x32,0x5f,0x48, |
0x6f,0x6d,0x65,0x5f,0x57,0x65,0x62,0x73, |
0x65,0x72,0x76,0x65,0x72,0x5f,0x44,0x65, |
0x6d,0x6f,0x5f,0x66,0x69,0x6c,0x65,0x73, |
0x2f,0x73,0x74,0x6d,0x33,0x32,0x5f,0x65, |
0x78,0x74,0x65,0x6e,0x64,0x73,0x2e,0x67, |
0x69,0x66,0x00,0x48,0x54,0x54,0x50,0x2f, |
0x31,0x2e,0x30,0x20,0x32,0x30,0x30,0x20, |
0x4f,0x4b,0x0d,0x0a,0x53,0x65,0x72,0x76, |
0x65,0x72,0x3a,0x20,0x75,0x49,0x50,0x2f, |
0x30,0x2e,0x39,0x20,0x28,0x68,0x74,0x74, |
0x70,0x3a,0x2f,0x2f,0x64,0x75,0x6e,0x6b, |
0x65,0x6c,0x73,0x2e,0x63,0x6f,0x6d,0x2f, |
0x61,0x64,0x61,0x6d,0x2f,0x75,0x69,0x70, |
0x2f,0x29,0x0d,0x0a,0x43,0x6f,0x6e,0x74, |
0x65,0x6e,0x74,0x2d,0x74,0x79,0x70,0x65, |
0x3a,0x20,0x69,0x6d,0x61,0x67,0x65,0x2f, |
0x67,0x69,0x66,0x0d,0x0a,0x0d,0x0a,0x47, |
0x49,0x46,0x38,0x39,0x61,0xfa,0x00,0xab, |
0x00,0xf7,0x00,0x00,0xf2,0xd1,0xb2,0x8a, |
0x8c,0x8f,0xf9,0xbe,0x28,0xcd,0xaf,0x4f, |
0xca,0x61,0x3a,0xc7,0x5a,0x35,0xff,0xdb, |
0x5c,0xff,0xdb,0x69,0x01,0x92,0xd2,0xe6, |
0xb7,0x02,0xd2,0x73,0x42,0xfa,0xc2,0x23, |
0x5a,0x80,0x6d,0x8f,0x74,0x18,0xdd,0x8b, |
0x48,0xaf,0xae,0xae,0xd5,0x79,0x45,0xea, |
0xa4,0x43,0xd0,0xd0,0xcd,0x21,0x84,0x9e, |
0xff,0xff,0xff,0xe6,0xb0,0x8c,0xb0,0x99, |
0x49,0xff,0xdb,0x71,0x67,0xca,0xf3,0xff, |
0xcb,0x05,0xe2,0x95,0x48,0xec,0xb1,0x6b, |
0xab,0x8d,0x35,0xfd,0xcb,0x08,0xd9,0xac, |
0x02,0xb8,0xa8,0x91,0xff,0xd7,0x45,0xfd, |
0xe6,0x98,0xfe,0xf9,0xe5,0xfc,0xc5,0x1c, |
0xff,0xe2,0x75,0xf3,0xb2,0x3a,0xff,0xd2, |
0x29,0xfe,0xeb,0xa7,0xff,0xc9,0x00,0xb3, |
0x8f,0x03,0x0f,0x0f,0x0f,0xed,0xa9,0x42, |
0xf1,0xaf,0x3b,0xda,0x86,0x48,0xfc,0xe8, |
0xb5,0xff,0xdb,0x61,0xed,0xa7,0x3a,0xcf, |
0xcc,0xad,0x4c,0x4d,0x50,0xf4,0xda,0xc4, |
0xfe,0xcd,0x13,0xff,0xd4,0x36,0xff,0xe4, |
0x88,0xf5,0xb9,0x33,0xff,0xdb,0x65,0xdb, |
0x98,0x82,0x74,0x77,0x7b,0xcc,0x68,0x3d, |
0xcc,0xb6,0x66,0xae,0xc8,0x96,0xa9,0x96, |
0x72,0xd4,0xae,0x2d,0xe5,0x9a,0x48,0xfe, |
0xf5,0xd6,0x8f,0xce,0xd6,0xf3,0xb6,0x36, |
0xb8,0xaa,0x6e,0xfe,0xc7,0x15,0xce,0x6b, |
0x3f,0xeb,0xea,0xe4,0xd3,0xc8,0x93,0xf9, |
0xd7,0x8a,0x36,0x78,0x7b,0x96,0x77,0x40, |
0xf8,0xe6,0xc6,0xe9,0xc7,0x59,0xf3,0xcc, |
0x58,0x6d,0x91,0x73,0xc9,0x93,0x6d,0xe7, |
0x9d,0x46,0xad,0x9d,0x8a,0x9a,0x8a,0x6e, |
0xce,0x99,0x35,0x63,0x65,0x68,0x7e,0x81, |
0x86,0xfe,0xf2,0xc9,0xfc,0xc6,0x01,0xc3, |
0xb7,0x8a,0xff,0xdb,0x52,0xe7,0xc8,0x64, |
0x47,0x7c,0x72,0x94,0xbb,0x8f,0x92,0x8c, |
0x54,0xff,0xcf,0x19,0x9e,0x82,0x30,0xe6, |
0x99,0x3e,0xf3,0xc8,0x88,0xd6,0xc6,0x6f, |
0xff,0xfd,0xf2,0xfa,0xeb,0xd8,0x78,0x7c, |
0x4d,0xd0,0x70,0x41,0xf5,0xc5,0x66,0xd9, |
0x83,0x44,0xf2,0xc2,0x77,0xbb,0xa2,0x57, |
0x73,0x59,0x25,0xf8,0xd9,0x9e,0xdf,0x90, |
0x48,0xf8,0xc8,0x48,0xff,0xde,0x67,0xfd, |
0xde,0x79,0xfb,0xd5,0x5c,0xe8,0xe5,0xdb, |
0x4a,0xa7,0xb1,0xde,0xb9,0x58,0xfb,0xd5, |
0x61,0xf4,0xf4,0xf2,0xff,0xc9,0x0c,0x74, |
0xa8,0x91,0xff,0xcd,0x08,0xe2,0x93,0x40, |
0xff,0xcd,0x06,0xe3,0x9c,0x58,0xc6,0x9d, |
0x02,0xea,0xa9,0x5c,0xfa,0xca,0x31,0xf3, |
0xb7,0x47,0x94,0xb4,0xb1,0xc8,0xbb,0xa7, |
0xfd,0xc4,0x0d,0xf2,0xcb,0x9b,0x67,0xb9, |
0xdd,0xf6,0xc3,0x01,0xd7,0x81,0x46,0xd4, |
0x76,0x3e,0xee,0xd1,0x67,0xfe,0xd6,0x54, |
0xd8,0x87,0x57,0x9e,0x80,0x0c,0xf4,0xf0, |
0xe5,0xf5,0xc4,0x07,0xff,0xde,0x5f,0xbd, |
0xbf,0xc0,0xd8,0x82,0x48,0xe0,0xb7,0x21, |
0xde,0x8a,0x41,0x6f,0x71,0x75,0xef,0xc5, |
0x9e,0x9d,0x9d,0xa0,0xe5,0xd9,0x9f,0xeb, |
0xd3,0x75,0xe9,0x9f,0x44,0xfb,0xd6,0x6c, |
0x75,0xb3,0xa1,0x6a,0x6c,0x70,0xfe,0xef, |
0xb9,0x3d,0x8a,0x92,0xe6,0xd5,0x8a,0xd6, |
0x7c,0x46,0xdc,0xb9,0x4a,0xf2,0xba,0x5c, |
0xf4,0xd0,0x5c,0xeb,0xbf,0xa4,0xf5,0xc6, |
0x11,0xe1,0xdc,0xc9,0xff,0xcd,0x0d,0x97, |
0xaa,0x75,0xf7,0xd2,0x6d,0x35,0xb8,0xe9, |
0xfa,0xd6,0x71,0xe7,0xc3,0x4e,0xf5,0xd0, |
0x64,0xe2,0xba,0x38,0xee,0xad,0x4d,0x22, |
0x9a,0xc0,0xdc,0x92,0x5d,0xb7,0xc2,0x7e, |
0xe0,0x8e,0x41,0xff,0xd0,0x20,0xed,0xc0, |
0x17,0x5a,0x5b,0x5f,0xff,0xce,0x02,0xde, |
0xcb,0x7e,0xf5,0xd2,0x74,0xea,0xa4,0x4c, |
0xf4,0xda,0x7d,0xf8,0xd2,0x83,0xe9,0xc0, |
0x28,0xf3,0xf4,0xf8,0x3c,0xa7,0xd9,0xfa, |
0xc8,0x08,0xf0,0xae,0x3f,0xc0,0x87,0x3c, |
0xd0,0x6c,0x3b,0xee,0xc7,0x31,0xcf,0x6e, |
0x40,0xf9,0xfa,0xfd,0xe9,0xa1,0x45,0xfa, |
0xc8,0x06,0xe2,0xa0,0x70,0xe1,0xf1,0xeb, |
0xcb,0x63,0x35,0xbd,0x9b,0x30,0xc2,0xa2, |
0x44,0xd1,0x71,0x3c,0x51,0x71,0x5a,0xde, |
0xbe,0x5b,0x64,0x5f,0x3e,0xf2,0xb1,0x2e, |
0x4e,0x3d,0x29,0xee,0xbe,0x8c,0xf7,0xbf, |
0x41,0xbf,0x7b,0x4d,0xfa,0xc0,0x18,0xf7, |
0xda,0x75,0xe8,0x9e,0x48,0xfa,0xf6,0xef, |
0x7d,0x71,0x5f,0xf2,0xd8,0x79,0xdd,0xae, |
0x45,0xca,0x88,0x62,0xd7,0x7c,0x40,0xf4, |
0xd7,0x64,0xf6,0xdf,0xb3,0xd0,0x8d,0x43, |
0xcd,0xa3,0x59,0xfa,0xd8,0x60,0xf0,0xaa, |
0x34,0xfb,0xc9,0x0f,0xf8,0xcb,0x24,0xfc, |
0xc9,0x03,0x36,0x37,0x39,0xf7,0xbc,0x2e, |
0xf8,0xd9,0x6e,0xe8,0xa1,0x4a,0xfc,0xd8, |
0x66,0xf0,0xf1,0xf1,0xda,0xda,0xda,0xef, |
0xee,0xed,0xd3,0x76,0x44,0x5c,0xa3,0x9d, |
0xe2,0xdf,0xd5,0xd7,0x7e,0x46,0x9b,0xa9, |
0x42,0xd5,0x70,0x3f,0xe1,0xe1,0xe2,0xf8, |
0xc7,0x0b,0xf8,0xd1,0x4f,0xef,0xbf,0x04, |
0xf9,0xf9,0xf7,0xfe,0xdf,0x6b,0x00,0x96, |
0xd9,0xff,0xca,0x08,0x21,0xf9,0x04,0x00, |
0x00,0x00,0x00,0x00,0x2c,0x00,0x00,0x00, |
0x00,0xfa,0x00,0xab,0x00,0x00,0x08,0xff, |
0x00,0x4b,0xe5,0x18,0x48,0xb0,0xa0,0xc1, |
0x83,0x08,0x13,0x2a,0x5c,0xc8,0xb0,0xa1, |
0xc3,0x87,0x10,0x23,0x4a,0x9c,0x48,0xb1, |
0xa2,0x45,0x8a,0x04,0x0a,0x68,0xdc,0xc8, |
0xb1,0xa3,0xc7,0x8f,0x20,0x43,0x8a,0x1c, |
0x49,0xb2,0xa4,0xc9,0x93,0x28,0x53,0xaa, |
0x5c,0xc9,0xb2,0x65,0xca,0x1c,0x2e,0x63, |
0xca,0x9c,0x49,0xb3,0xa6,0xcd,0x9b,0x38, |
0x4f,0xe6,0xc8,0x98,0xb1,0x00,0x4f,0x9f, |
0x40,0x7f,0x0a,0x0d,0x4a,0x74,0xe8,0xcf, |
0x9c,0x48,0x93,0x2a,0x5d,0xca,0xf4,0xe3, |
0x4e,0x9f,0x04,0x8c,0x16,0x9d,0x2a,0xb5, |
0x2a,0xd5,0xab,0x56,0xb3,0x62,0xdd,0xaa, |
0xb5,0xab,0xca,0x9e,0x40,0xbf,0x4e,0x6d, |
0xda,0x34,0xc7,0x8e,0xa8,0x68,0xd3,0xaa, |
0x5d,0xcb,0xb6,0xad,0xdb,0xb7,0x70,0xe3, |
0xca,0x9d,0x1b,0x15,0x6b,0x5b,0xae,0x54, |
0xeb,0x7a,0xdd,0x8b,0x97,0xaf,0xd7,0x92, |
0x60,0x3f,0x1e,0xdd,0x49,0xb7,0xb0,0xe1, |
0xc3,0x88,0x13,0x2b,0x5e,0xcc,0xb8,0xb1, |
0x63,0xc3,0x76,0x73,0x18,0x89,0x7a,0xf6, |
0xb1,0xe5,0xcb,0x98,0x33,0x6b,0xde,0xcc, |
0xb9,0xad,0x59,0x02,0x67,0x43,0x83,0x1e, |
0x2d,0xba,0x34,0xe9,0xd3,0xa6,0x53,0x53, |
0x46,0xcd,0x5a,0xb5,0xeb,0xd6,0xb0,0x5f, |
0xbf,0xee,0xbc,0x98,0x19,0x01,0xdb,0xb4, |
0x73,0xab,0xcd,0x71,0x66,0x87,0xef,0xdf, |
0xc0,0x83,0x0b,0x1f,0x2e,0x9c,0x34,0x70, |
0xd0,0xa5,0x89,0x2b,0x5f,0xee,0x1b,0xf9, |
0xef,0xd8,0xd0,0x65,0x47,0x47,0x7d,0x3c, |
0x74,0x70,0xe4,0xd3,0xa5,0x6b,0x3f,0xdd, |
0x76,0xf6,0x6a,0xd1,0x68,0xb7,0xcf,0xff, |
0xae,0x60,0x84,0xb9,0xf9,0xf3,0xe8,0xd3, |
0xab,0x5f,0xcf,0xbe,0xbd,0x7b,0xe6,0xd9, |
0x5b,0xbf,0x2f,0x2e,0x3e,0xfe,0xd9,0x1c, |
0xc6,0x8c,0x94,0xd7,0xcf,0xbf,0xff,0x8e, |
0xfe,0xe5,0xb9,0x17,0x60,0x80,0xf3,0x15, |
0x68,0xe0,0x81,0xcc,0xd9,0xa6,0x20,0x82, |
0x0c,0x36,0x68,0x5e,0x05,0x67,0x18,0x93, |
0x1f,0x80,0x14,0x56,0x68,0xe1,0x85,0xfc, |
0xdd,0x73,0xcf,0x84,0x18,0x76,0xe8,0xe1, |
0x87,0x20,0x86,0x28,0xe2,0x85,0xff,0xfd, |
0xf7,0x4d,0x05,0x02,0x31,0xb2,0x03,0x33, |
0xbe,0x11,0xe8,0xe0,0x8b,0x08,0x92,0x27, |
0xe1,0x8c,0x34,0xd6,0x68,0xe3,0x8d,0x38, |
0xce,0x48,0x8c,0x31,0xc4,0x14,0xc0,0x06, |
0x01,0x11,0xe6,0x28,0xe4,0x90,0x44,0x16, |
0x69,0xe4,0x88,0x21,0xee,0xa0,0x40,0x05, |
0x4c,0x96,0x72,0x04,0x3f,0xa5,0x7c,0xd3, |
0x22,0x92,0x54,0x56,0x69,0x25,0x86,0x10, |
0x1a,0x13,0xe1,0x19,0x5c,0x76,0xe9,0xe5, |
0x97,0x60,0x86,0xe9,0x25,0x8f,0xd7,0x7c, |
0x73,0x0d,0x1b,0xb7,0x54,0x21,0x43,0x01, |
0x1b,0xee,0x28,0xe6,0x8c,0x41,0x1a,0x29, |
0xe7,0x9c,0x74,0xd6,0x49,0xa3,0x11,0x00, |
0xec,0xb4,0x22,0x31,0x39,0xcc,0x00,0x40, |
0x05,0x0a,0xec,0x60,0xe7,0xa0,0x84,0x16, |
0x19,0x62,0x05,0x5a,0x8a,0xa9,0x68,0x97, |
0x0a,0x9c,0xd1,0xe8,0xa3,0x5c,0x3e,0xaa, |
0x80,0x31,0x3b,0x5c,0xf3,0x41,0x00,0x32, |
0x54,0x61,0x85,0x15,0x3a,0xc8,0xc0,0x0d, |
0x23,0xdf,0x10,0xb3,0xe8,0xa8,0xa4,0x96, |
0x6a,0xea,0xa9,0x75,0x6e,0xd9,0x5b,0x0e, |
0xa5,0x08,0xda,0xe5,0x0e,0xf2,0x94,0xff, |
0xe2,0x27,0x04,0x46,0x74,0x99,0x68,0x98, |
0x45,0x7e,0x49,0x63,0x9c,0x85,0xf6,0x3a, |
0x63,0x05,0xf2,0x28,0x20,0xec,0xb0,0xc4, |
0x16,0x6b,0xec,0xb1,0xc5,0x56,0xfa,0xcd, |
0x25,0x6a,0xea,0xb0,0xa9,0xb3,0x95,0xc8, |
0x10,0xc0,0x20,0x8c,0x38,0x8a,0xec,0xb5, |
0xd8,0x66,0xab,0x6d,0xb1,0xa7,0x76,0xab, |
0xa8,0x31,0x00,0x30,0x42,0x4c,0xa3,0x91, |
0x1a,0x61,0x8c,0xac,0xa5,0xc8,0xf3,0x8c, |
0xa3,0xde,0xb6,0xeb,0xee,0xbb,0x8b,0x02, |
0x2a,0xcf,0xbc,0xf4,0x06,0x6b,0xef,0xb6, |
0xc6,0xca,0x13,0xe1,0x37,0x52,0x74,0xda, |
0x49,0x00,0x9b,0x06,0x6c,0x45,0xb4,0x01, |
0x44,0xc2,0x88,0x31,0xf8,0x26,0xac,0xf0, |
0xc2,0x0c,0xe3,0x4b,0x8c,0x32,0x00,0xd4, |
0x6a,0xec,0x19,0xb1,0x96,0x02,0xa8,0xb5, |
0x0d,0x67,0x2c,0xec,0x97,0xd9,0x62,0xdc, |
0x71,0xbc,0x10,0xd4,0x2b,0xf2,0xc8,0x24, |
0x97,0x6c,0xcc,0x35,0x3e,0x5c,0x72,0x8b, |
0x0c,0x56,0x00,0x2c,0x30,0xa7,0x56,0x74, |
0x22,0xc3,0x07,0x83,0x7c,0xf3,0x4c,0xc9, |
0x38,0xe7,0xac,0xc0,0xbd,0x38,0xe7,0xbb, |
0xf3,0xcf,0xc1,0x32,0xcc,0x73,0xce,0x22, |
0xe3,0x59,0xc1,0xb8,0xc3,0xda,0xab,0xef, |
0x37,0x16,0x57,0xf0,0x8c,0xc6,0x50,0x47, |
0xdd,0x70,0x05,0x21,0x43,0x10,0x32,0xbd, |
0x55,0xcb,0x73,0x75,0xce,0x56,0x6b,0x9d, |
0x88,0x31,0x50,0x48,0x11,0xed,0xbf,0x2d, |
0xbf,0x2c,0xb0,0x9a,0x97,0x50,0xab,0x40, |
0xd5,0x5b,0x13,0xed,0xf6,0xdb,0x70,0xc7, |
0x2d,0x37,0xbd,0x6b,0x87,0x4b,0xb1,0xc9, |
0xac,0x5a,0x4c,0xcc,0xdc,0x7c,0xc3,0xff, |
0xbd,0xf3,0xbc,0x40,0x2b,0x3d,0x37,0xb1, |
0xc1,0x56,0x10,0x8a,0xd5,0x88,0x27,0xae, |
0xf8,0xe2,0x8c,0x2b,0x70,0x8d,0x14,0x01, |
0xac,0x5c,0xb6,0xd9,0x02,0x3b,0xbb,0x72, |
0xda,0xdf,0x24,0xc2,0xf8,0xe6,0x59,0xb3, |
0xdd,0x75,0xe7,0x5a,0x87,0x0e,0x7a,0xdb, |
0xf5,0x8e,0x2e,0xfa,0xe9,0x59,0x97,0x8e, |
0x7a,0xe8,0x58,0x07,0xcb,0x48,0xba,0xac, |
0x8b,0x1c,0xf2,0x19,0x4c,0x02,0xa0,0xcc, |
0xcd,0x7d,0xe7,0x4e,0xb2,0x02,0xcf,0x3c, |
0xdd,0xfb,0xdf,0xba,0x8f,0x6c,0x78,0x28, |
0xc4,0x17,0x6f,0xfc,0xf1,0xc8,0x1b,0x9f, |
0xc8,0x19,0x52,0x48,0xd1,0x89,0x3a,0x9d, |
0x3c,0x7b,0x09,0xc0,0x2e,0x57,0xfe,0xec, |
0xe5,0x83,0xd4,0x03,0x01,0xf2,0x8a,0x27, |
0xef,0x7d,0xf2,0x9c,0x87,0x2f,0xfe,0xf8, |
0xe4,0x43,0x90,0x88,0x2c,0xe9,0x6e,0x7f, |
0xf8,0xe6,0xb1,0x56,0x30,0x83,0x2c,0x6b, |
0x97,0x2f,0x3f,0xe7,0xa7,0x3f,0x73,0xbe, |
0x32,0x16,0x5b,0xcc,0x88,0xd6,0x88,0xaf, |
0x6e,0x7a,0xea,0xf5,0xaa,0x40,0x3d,0x8a, |
0x57,0x8f,0x02,0x0e,0xd0,0x78,0x06,0x4c, |
0x60,0x01,0x8b,0xf7,0x8c,0x6f,0x5c,0x4a, |
0x06,0x32,0x70,0x96,0xb3,0x22,0xf1,0x8e, |
0x4b,0x50,0x2e,0x60,0x12,0x5c,0xd9,0x03, |
0xb2,0xa7,0xbe,0xef,0x79,0xf0,0x83,0x20, |
0x0c,0xa1,0x08,0x47,0x48,0xbc,0x44,0xe4, |
0xa0,0x02,0x89,0x00,0xa1,0x3c,0x5e,0xe7, |
0x3e,0x49,0xf0,0xef,0x78,0xf3,0xb3,0x1a, |
0x09,0xcd,0x97,0x03,0x00,0xcc,0xa1,0x0c, |
0x8e,0x98,0x41,0x29,0x4a,0xf1,0x27,0xcd, |
0x11,0x2f,0x71,0x22,0x5c,0x5c,0x05,0xff, |
0x24,0xa1,0xc0,0x22,0x1a,0x31,0x81,0x10, |
0xb8,0x06,0x14,0x98,0xa5,0x8e,0x5b,0xe8, |
0x40,0x07,0x95,0x08,0x00,0x3c,0xe2,0xf1, |
0x80,0x4d,0x55,0xef,0x65,0x4f,0x7c,0x22, |
0x04,0x1f,0xf0,0x81,0x01,0x1e,0xf1,0x80, |
0x24,0xfc,0x62,0x02,0x8f,0x27,0xc6,0x32, |
0x82,0xf1,0x83,0x0a,0x0c,0x45,0x22,0x94, |
0x01,0xa8,0x10,0x9e,0x6f,0x87,0x33,0x90, |
0x21,0x09,0xe7,0x68,0x3c,0xf3,0xa1,0x6f, |
0x06,0x39,0xac,0xc0,0xfe,0xd4,0xc5,0x08, |
0x00,0x1c,0x8e,0x8e,0xde,0x1b,0x22,0x22, |
0x06,0x89,0x08,0x49,0x14,0x92,0x90,0x88, |
0x44,0x64,0x3d,0x10,0x51,0x8f,0x33,0x40, |
0xe1,0x03,0x56,0x50,0x87,0x0c,0x3a,0x01, |
0x45,0x1d,0x44,0xe2,0x17,0x91,0xb0,0xc2, |
0x03,0x32,0x79,0xc5,0xca,0x65,0xb1,0x53, |
0x32,0xe0,0x22,0x23,0xc0,0x91,0x48,0x42, |
0x26,0xb0,0x94,0xa8,0x64,0xa4,0x19,0x17, |
0x99,0xca,0x56,0x2a,0x72,0x95,0x62,0x4c, |
0x44,0x05,0x94,0x91,0x08,0x58,0xca,0xa3, |
0x76,0xa5,0xa8,0x25,0x2c,0x61,0xe9,0xbd, |
0x44,0x48,0xc2,0x7d,0x33,0x98,0xc1,0x10, |
0xd7,0x36,0x40,0x08,0xf4,0x91,0x11,0xc4, |
0x5b,0x20,0x20,0x8b,0x57,0x81,0x16,0x48, |
0xc2,0x90,0x87,0x7c,0xa6,0x34,0xa7,0x39, |
0x4d,0x70,0x58,0x4a,0x0a,0x55,0x68,0x62, |
0x25,0x2a,0xf1,0x2f,0x7c,0xc4,0xe3,0x12, |
0x3a,0x08,0xc0,0x11,0x8e,0xe1,0xb2,0x4e, |
0x72,0xea,0x93,0xd1,0xba,0xc5,0x03,0x72, |
0x00,0xcd,0x67,0x46,0x13,0x91,0xd4,0x8c, |
0xa7,0x34,0xdf,0x69,0xc8,0x7a,0xd2,0xf3, |
0x9e,0xf6,0xcc,0x27,0x3e,0x4b,0x69,0xff, |
0xcf,0x56,0xd6,0x03,0x1c,0x4c,0x4a,0x84, |
0x2b,0x07,0x69,0x40,0x08,0x58,0x6c,0x0e, |
0x28,0x64,0xe5,0x40,0x17,0x5a,0xca,0x02, |
0x82,0x23,0x14,0x10,0xf3,0x93,0x1e,0x75, |
0x69,0xc0,0x50,0xbc,0x4e,0x12,0xa1,0xd8, |
0x65,0x19,0x9b,0x29,0x09,0x67,0xca,0x33, |
0x9e,0x2d,0x40,0x84,0x3c,0x1e,0x89,0x29, |
0x75,0x54,0xa1,0x13,0xdb,0x7c,0xc0,0x3b, |
0x24,0xd0,0x32,0x96,0x4a,0x80,0x02,0x55, |
0xa4,0xdc,0x27,0xa1,0xc8,0x4d,0xe8,0x3d, |
0x40,0x0a,0x69,0x90,0xa6,0x33,0x3d,0xfa, |
0xd1,0x9e,0xfa,0xf4,0xa7,0x40,0x0d,0xaa, |
0x50,0x65,0x59,0x0a,0x70,0x4c,0xf3,0x9d, |
0x84,0x84,0x66,0x3d,0x24,0x61,0xb1,0x32, |
0xc8,0x82,0x94,0xfa,0x8c,0xea,0x3e,0xa5, |
0xfa,0xcf,0x3b,0x02,0xa0,0x14,0x8c,0x80, |
0xc0,0x22,0x17,0x49,0x44,0x44,0x40,0xb4, |
0xa8,0xfc,0x44,0x2a,0x43,0x11,0xd1,0xcc, |
0x16,0x98,0xf5,0xac,0x68,0x45,0x6b,0x1a, |
0x5a,0x00,0x0e,0x7e,0x31,0x31,0x53,0x27, |
0xad,0x84,0x0e,0x8e,0x50,0xc5,0x48,0xf0, |
0x83,0x02,0x97,0xb8,0x04,0x05,0x58,0x4a, |
0x3d,0xe9,0x81,0x33,0x8b,0xdb,0xac,0x44, |
0x36,0xab,0xf0,0x81,0x1c,0x20,0x62,0xa7, |
0x1e,0x4d,0xab,0x62,0x17,0xcb,0xd8,0xc6, |
0xa6,0xb5,0xa3,0x90,0x35,0x6b,0x64,0x21, |
0x3b,0xd9,0x69,0xee,0xf4,0x99,0x97,0xb5, |
0x2c,0x11,0x65,0x31,0x03,0xa1,0xce,0x13, |
0x7d,0xb2,0x0a,0xa9,0x67,0x85,0x0a,0x0e, |
0x46,0x54,0x23,0x98,0xa5,0x50,0x86,0x56, |
0xe7,0x59,0xcd,0xd4,0x16,0x72,0xb4,0x3e, |
0xad,0x80,0x03,0x1c,0xab,0x56,0x44,0xff, |
0x84,0x2d,0x00,0xea,0x68,0x62,0x9a,0x3a, |
0x81,0x52,0x1d,0x54,0x51,0xa5,0x77,0x8d, |
0x44,0x00,0xf8,0xf1,0x8b,0xea,0x15,0xec, |
0x92,0x0f,0x90,0xeb,0x13,0x03,0x5b,0x89, |
0x5b,0xd8,0x14,0x0a,0xb4,0x8d,0xae,0x74, |
0xa7,0x4b,0xdd,0xea,0x9a,0x75,0xad,0xe8, |
0xb3,0x2e,0x5b,0xf1,0x07,0x00,0x00,0x1c, |
0xb6,0xa3,0x68,0x9d,0x6c,0x63,0xc5,0x4b, |
0x4a,0x60,0xfe,0x89,0x88,0x97,0xcd,0x69, |
0x4e,0x25,0x91,0x86,0x3e,0x26,0x16,0xbc, |
0xd1,0x85,0x6c,0x4e,0x2f,0xdb,0x02,0xd9, |
0xce,0x76,0xb6,0x2d,0xc0,0xaf,0x7e,0xcd, |
0xfa,0x0d,0x28,0x3c,0xc0,0xb9,0x92,0xbc, |
0x45,0x9a,0xe2,0x5a,0x89,0xbc,0x06,0xec, |
0x12,0xc2,0x95,0x80,0x04,0xfa,0x6a,0x85, |
0x97,0xd2,0x55,0xb9,0x34,0xe5,0x66,0x27, |
0x9c,0xab,0x49,0x28,0xe0,0x57,0xbb,0x18, |
0xce,0xf0,0x59,0xf7,0x5b,0xdd,0xec,0x6a, |
0x37,0x0d,0x4c,0x12,0x26,0x38,0x34,0x7c, |
0xd6,0x34,0x80,0x23,0xa2,0x57,0x65,0x04, |
0x22,0xd6,0xda,0x58,0x80,0x56,0x60,0xc4, |
0x24,0x4e,0x6b,0x35,0x1c,0x40,0xe3,0x1a, |
0xdb,0xb8,0xc6,0xc3,0x30,0x06,0x24,0x73, |
0x2b,0x49,0x19,0x0c,0x98,0xc0,0x01,0x78, |
0x07,0x3c,0xe0,0x91,0xc9,0xbc,0x32,0x18, |
0x60,0x97,0x78,0xc0,0xf4,0xd0,0xb9,0xcd, |
0x4e,0x54,0x41,0x4d,0xea,0x98,0xc2,0x03, |
0xa0,0x90,0x06,0x1a,0xe7,0xf7,0xbe,0x58, |
0xbe,0xb2,0x96,0xad,0xcc,0xe5,0x1b,0x67, |
0xb9,0xcb,0x5b,0xbe,0x6f,0x7e,0xcd,0xba, |
0xdf,0x2c,0x8f,0x99,0xc3,0x8d,0x9d,0x2d, |
0xfa,0x38,0xcc,0x66,0x32,0xbb,0xb9,0xff, |
0x05,0xd5,0x90,0x95,0x2c,0xaa,0x3c,0xe6, |
0x3a,0x5f,0xd8,0xce,0x6f,0x4e,0xc3,0x1d, |
0xfd,0xa4,0x0c,0x16,0x5f,0xf8,0xce,0x2d, |
0xd0,0xb3,0x25,0x36,0x1c,0xe3,0xb3,0xce, |
0xd8,0xcb,0x5e,0xbe,0xc6,0x12,0xa8,0xc1, |
0xe3,0x00,0x0b,0xf8,0xc9,0xbd,0xad,0x04, |
0x3e,0x28,0x70,0x8c,0x22,0xf7,0xd5,0xb8, |
0x0f,0x08,0xc0,0x03,0x00,0x4b,0x53,0x27, |
0x3f,0x59,0x1d,0x2a,0x08,0xc0,0x07,0x2c, |
0x8c,0xe8,0x52,0x9b,0xda,0xcb,0x61,0x4e, |
0x35,0x98,0x57,0x8d,0x65,0x53,0xab,0x5a, |
0xcc,0x7d,0x28,0x05,0xab,0x5f,0xbd,0xe5, |
0xee,0x02,0x80,0xcc,0x62,0x2e,0xf3,0x9b, |
0xef,0xbb,0x56,0xf3,0x36,0x93,0xce,0x35, |
0x3e,0xb3,0x96,0xd3,0x60,0xb1,0x2a,0xe7, |
0x7a,0xd7,0xc8,0x06,0x73,0x9d,0xab,0xe1, |
0x06,0x07,0x34,0xbb,0xd9,0xce,0x8e,0xb6, |
0x1b,0xdc,0x70,0x06,0x36,0xa8,0x80,0xc7, |
0x10,0xf4,0xf1,0x93,0xe3,0x0a,0x45,0x09, |
0xe0,0x23,0x00,0xce,0xb2,0x62,0xd9,0x02, |
0x10,0x80,0x24,0x6f,0x7a,0xd3,0x80,0x6d, |
0xb2,0x93,0xd3,0x94,0x5b,0x51,0xcb,0xa2, |
0xc6,0xd0,0x8e,0xb7,0x97,0xe5,0x1d,0xed, |
0x7a,0xd3,0xfb,0xd4,0xf8,0xce,0xb7,0xbe, |
0x5b,0xd0,0x07,0x00,0x40,0x1b,0xd1,0x94, |
0x38,0x75,0x0b,0x20,0xf6,0x27,0x63,0xeb, |
0xdb,0xca,0x94,0x40,0xb1,0x25,0xe6,0x7c, |
0x70,0x7e,0x03,0x20,0xe0,0x07,0x8f,0x78, |
0x35,0x64,0x31,0xed,0x8a,0x5b,0x7c,0xda, |
0xe3,0xb8,0x06,0x35,0xae,0x9d,0xdb,0x6c, |
0x3f,0x9a,0xdb,0xe1,0x84,0x59,0xc0,0xae, |
0xa8,0xe4,0xe9,0x95,0x7b,0x7a,0x72,0xff, |
0x0d,0xac,0xa7,0x05,0x2c,0x83,0xdc,0x26, |
0xf9,0x1b,0xb4,0x98,0x36,0x8d,0x65,0x4e, |
0xf3,0x67,0xdb,0xdc,0xd9,0xcf,0x9e,0xb9, |
0xce,0x6b,0x8e,0x73,0x69,0xeb,0xdc,0xe7, |
0x34,0xff,0x39,0xbd,0x87,0xfe,0x73,0x07, |
0xf4,0xe1,0x7d,0x3b,0x77,0x40,0xc0,0xdd, |
0xd0,0x87,0x9c,0xdb,0x9b,0xc6,0x94,0xb0, |
0x84,0x25,0x66,0xd0,0x87,0xa5,0xf7,0x9c, |
0xe7,0xd0,0xa6,0x84,0x2c,0xa6,0xce,0x67, |
0xa5,0xff,0x1b,0xde,0x45,0x57,0xba,0x30, |
0x21,0xae,0xef,0x7b,0x97,0xba,0x1a,0x1a, |
0xd0,0xc0,0xc5,0x2d,0xae,0x81,0x61,0x10, |
0x60,0xe3,0xd8,0x86,0xe0,0xc7,0x7b,0x9b, |
0x45,0xca,0x69,0x3a,0x12,0xd3,0x33,0x77, |
0xa6,0x53,0xae,0xf2,0x27,0xb3,0x5c,0x06, |
0xd7,0x96,0xc2,0xa8,0x63,0xbe,0xf6,0xc2, |
0x1b,0xfe,0xf0,0x88,0x4f,0xbc,0xe2,0x17, |
0x6f,0xf4,0x19,0xa8,0xbd,0xd9,0xb4,0x48, |
0x43,0x1f,0x2a,0x60,0x6b,0x26,0x28,0x83, |
0x12,0x15,0xbf,0x3a,0x2d,0x38,0x0b,0x00, |
0x4b,0x60,0xfe,0xea,0x37,0x97,0x39,0x25, |
0x80,0x29,0x4c,0x37,0x7c,0x3e,0xf3,0x58, |
0x7f,0xf6,0xe8,0x01,0x90,0xf4,0xa7,0xdb, |
0x3b,0xf4,0xb0,0x77,0x36,0xb3,0xd3,0xee, |
0x06,0xda,0xdb,0x5e,0x03,0x0e,0x58,0xc2, |
0x12,0x54,0xc0,0x71,0x8f,0x0f,0x18,0xa5, |
0x10,0x16,0x58,0xf5,0x26,0x9d,0xe9,0x93, |
0x57,0x92,0xb9,0xdc,0xf4,0xfb,0xca,0x5a, |
0x7e,0xed,0x4b,0x40,0x41,0x16,0x6a,0x7f, |
0xbc,0xf4,0xa7,0x3d,0xfd,0xda,0x53,0x7f, |
0xed,0x8f,0x5f,0xbc,0xf6,0xb7,0x5f,0x78, |
0x00,0x34,0xdd,0xf4,0xfd,0x66,0x82,0xff, |
0x25,0xfa,0xd0,0x07,0x07,0x40,0xec,0xfb, |
0x85,0xa7,0x44,0x35,0x00,0x30,0x03,0x65, |
0x10,0xfe,0xf0,0x31,0xe7,0xfa,0xf8,0x31, |
0xcf,0x7d,0xa3,0x03,0x00,0xf7,0xdc,0xdf, |
0x3e,0xda,0xd3,0xce,0xff,0xfe,0xd3,0x7e, |
0x07,0x29,0xc3,0x71,0x3d,0x26,0x60,0xbb, |
0xb5,0x4d,0x9f,0x84,0x41,0x0f,0x20,0x01, |
0x49,0x36,0x45,0x91,0xa0,0x64,0xe8,0x04, |
0x7c,0xbc,0xe5,0x77,0xd9,0x96,0x5b,0xd7, |
0xa6,0x64,0xb5,0x77,0x7b,0x17,0x98,0x81, |
0x18,0xb8,0x81,0xd1,0xd7,0x81,0x1a,0xe8, |
0x81,0x1c,0xf8,0x81,0x22,0x68,0x7b,0xd6, |
0x97,0x7d,0xd1,0xe7,0x7d,0x6e,0x40,0x0b, |
0x15,0x50,0x06,0xde,0x47,0x7f,0x7b,0xa0, |
0x82,0x96,0xf0,0x7e,0xd7,0x47,0x7d,0xb6, |
0x26,0x83,0x32,0x98,0x82,0xfd,0x36,0x03, |
0x4c,0x50,0x01,0xb4,0x40,0x0b,0xd5,0xf7, |
0x83,0x33,0xa8,0x01,0x15,0x80,0x7e,0xf9, |
0xb7,0x78,0xfb,0xe7,0x7f,0xfe,0x37,0x0c, |
0xd7,0x10,0x09,0x1f,0x00,0x78,0x3d,0xe6, |
0x63,0xbf,0x47,0x49,0x75,0x07,0x33,0x0f, |
0x00,0x0f,0x14,0x80,0x0f,0x12,0x00,0x0f, |
0x09,0xf8,0x2c,0xcb,0x45,0x6e,0xea,0xa6, |
0x7c,0x10,0xc4,0x63,0x2a,0x20,0x03,0xe4, |
0x80,0x84,0x66,0x78,0x86,0x68,0x98,0x86, |
0x1f,0x98,0x86,0x1c,0x68,0x86,0x29,0xa8, |
0x01,0x7d,0xc0,0x7f,0xb4,0x00,0x00,0x1b, |
0x10,0x75,0x65,0xb0,0x01,0xd4,0xc7,0x7f, |
0x4c,0x87,0x82,0x7a,0x68,0x7b,0xb4,0xb0, |
0x7e,0x54,0xa7,0x76,0x7b,0xd0,0x07,0x1b, |
0xd0,0x07,0x3e,0xa8,0x01,0xb4,0xb0,0x01, |
0x00,0x50,0x06,0x96,0x47,0x0b,0x7b,0xff, |
0x00,0x82,0x90,0xa8,0x81,0x6e,0x50,0x01, |
0x7f,0x50,0x82,0x91,0x18,0x82,0xd1,0x27, |
0x89,0xd6,0xe7,0x06,0xd5,0x00,0x04,0x1a, |
0xe0,0x89,0x9f,0x98,0x76,0x9e,0x08,0x04, |
0x7b,0x70,0x0d,0x53,0x20,0x01,0x83,0xf0, |
0x00,0xbc,0x37,0x80,0x8f,0xc6,0x5b,0x10, |
0xf6,0x44,0x97,0x10,0x0f,0xf0,0xd0,0x60, |
0xf8,0x10,0x09,0xf8,0x60,0x41,0x5c,0x18, |
0x45,0x44,0x06,0x45,0x11,0x58,0x05,0xcb, |
0xd7,0x72,0x14,0xa8,0x02,0xe3,0x00,0x8a, |
0x6c,0x58,0x8c,0xc6,0x78,0x8c,0xc8,0x98, |
0x76,0xb4,0xd0,0x07,0xeb,0x07,0x00,0xfb, |
0xe7,0x06,0x52,0x57,0x08,0x54,0x77,0x81, |
0xfe,0xb7,0x07,0x96,0xf0,0x07,0x69,0xd8, |
0x6f,0x9d,0xb7,0x8c,0xec,0xe7,0x08,0x4c, |
0xd0,0x07,0x2f,0xb8,0x7e,0x65,0x40,0x75, |
0x8f,0x98,0x8c,0xb4,0xf7,0x07,0xb3,0x67, |
0x8e,0x6c,0xa8,0x81,0x9d,0x08,0x04,0xee, |
0xf8,0x8e,0xf0,0x98,0x71,0x0f,0x90,0x80, |
0xcd,0xc3,0x7b,0xbe,0xf7,0x64,0x81,0x95, |
0x45,0x01,0xa0,0x60,0x47,0x00,0x30,0xb5, |
0x88,0x45,0x34,0x95,0x57,0x97,0x20,0x61, |
0x12,0x08,0x8c,0xc1,0xe8,0x00,0xda,0x10, |
0x8a,0xa0,0x38,0x8a,0x0c,0xf9,0x89,0x0d, |
0xe9,0x8e,0x0e,0x29,0x8a,0x12,0x19,0x8a, |
0x14,0xb9,0x90,0x13,0x59,0x91,0x13,0x69, |
0x91,0x0a,0xa9,0x01,0x7b,0x50,0x01,0xe2, |
0x67,0x88,0xd5,0x10,0x87,0x7f,0xe8,0x08, |
0xf7,0xf7,0x88,0xa3,0x28,0x91,0x1d,0x89, |
0x87,0xfd,0x47,0x8c,0x88,0x08,0x00,0x85, |
0x00,0x00,0x40,0xe0,0x27,0x84,0x28,0x7e, |
0x7b,0x20,0x8d,0x65,0x60,0x09,0x7b,0xff, |
0x50,0x8e,0xea,0xd8,0x6f,0x71,0xa8,0x8e, |
0xc9,0xd8,0x8e,0xf0,0x18,0x94,0x8a,0x36, |
0x05,0x52,0x10,0x09,0x0d,0xc8,0x0d,0xd7, |
0x26,0x77,0xbb,0x05,0x7c,0x51,0x94,0x85, |
0x03,0xe3,0x6d,0xe4,0x76,0x45,0x4f,0xd4, |
0x09,0x06,0x16,0x09,0xf0,0xa0,0x03,0x2b, |
0xf7,0x8b,0x62,0xa8,0x02,0x41,0xd9,0x95, |
0x5e,0xf9,0x95,0x60,0x19,0x96,0xf0,0xf8, |
0x89,0x39,0xe9,0x90,0x62,0x39,0x8a,0x00, |
0xc0,0x04,0x1b,0x90,0x93,0xcc,0x08,0x04, |
0x61,0xd0,0x07,0xe3,0x68,0x92,0x10,0x19, |
0x94,0x7b,0x50,0x0d,0x1b,0xc0,0x90,0x5d, |
0x59,0x97,0xdd,0xc5,0x04,0x85,0xb0,0x07, |
0x40,0x40,0x0b,0x96,0xc0,0x97,0x3a,0x58, |
0x01,0x7e,0x19,0x91,0x73,0xf9,0x90,0x0f, |
0xa9,0x01,0x85,0xb0,0x96,0x1a,0xd9,0x98, |
0x19,0xf9,0x98,0x18,0x19,0x8a,0x62,0xa0, |
0x0d,0x40,0x10,0x05,0x51,0x50,0x99,0x96, |
0x99,0x99,0x19,0xb7,0x04,0xcd,0x23,0x01, |
0x1f,0xf0,0x00,0x4e,0x48,0x80,0x90,0x66, |
0x80,0x44,0x96,0x80,0x16,0xa4,0x80,0xe2, |
0xf6,0x2c,0x65,0xb3,0x49,0x12,0xb0,0x52, |
0x56,0x00,0x86,0x06,0xc9,0x7b,0x6c,0xb0, |
0x02,0x94,0x99,0x99,0x99,0x79,0x96,0xb8, |
0x99,0x9b,0xed,0x50,0x0d,0x85,0x50,0x08, |
0x76,0xe9,0x96,0x61,0xe0,0x8e,0x97,0x29, |
0x9c,0xef,0x18,0x06,0x7f,0xc0,0x04,0x30, |
0xb9,0x07,0x51,0x10,0x06,0x6a,0xb0,0x96, |
0x1b,0x70,0x93,0xe2,0x80,0x8d,0x60,0x19, |
0x06,0x76,0xa9,0x01,0xc3,0xd9,0x95,0x61, |
0xb0,0x0b,0xdd,0x55,0x06,0xc5,0xb9,0x01, |
0xdb,0x10,0x4c,0x6b,0x79,0x9d,0xb9,0xff, |
0xf9,0x8e,0x75,0x89,0x76,0xe3,0x79,0x9e, |
0x41,0x59,0x0d,0xed,0xa0,0x0d,0xec,0xd9, |
0x9e,0xee,0xa9,0x09,0x4a,0xc8,0x99,0x97, |
0xe0,0x99,0x53,0x00,0x6a,0x50,0x58,0x80, |
0x72,0x65,0x95,0x46,0x19,0x0f,0x17,0x64, |
0x45,0xf3,0x98,0x85,0xf3,0x19,0x6e,0xbe, |
0xb8,0x7c,0xc1,0x78,0x0b,0xbb,0xa0,0x09, |
0xda,0x10,0x05,0x09,0x6a,0x9b,0x0c,0xda, |
0xa0,0x0e,0xfa,0xa0,0x10,0x7a,0x99,0xcb, |
0xb9,0x01,0xea,0x49,0xa1,0x00,0x20,0x0e, |
0x96,0xb0,0x01,0xcb,0x19,0x06,0x96,0x89, |
0x99,0x6e,0xb9,0x01,0x4c,0x50,0x0d,0xc1, |
0xa9,0x0d,0x6f,0x29,0xa2,0x1b,0xe0,0x08, |
0xd5,0xa0,0x97,0xc1,0x59,0x99,0x2c,0xca, |
0xa2,0x61,0xb0,0x98,0xc1,0xc9,0xa0,0xf0, |
0x18,0x06,0x8b,0x08,0x00,0xca,0x49,0x8a, |
0xd5,0xf0,0x9d,0x1b,0xc0,0xa1,0x41,0x29, |
0xa3,0x5f,0x19,0x05,0x7b,0xa0,0x88,0x09, |
0x8a,0x9e,0x44,0x0a,0x04,0x62,0xd0,0x0e, |
0xc8,0x80,0x0c,0x48,0x9a,0xa4,0x4c,0x9a, |
0xa4,0x51,0x30,0x0c,0x4b,0x30,0x05,0x3e, |
0xb0,0x49,0x0f,0x80,0x94,0x8e,0xc6,0x5b, |
0x4c,0x99,0x64,0x12,0x90,0x49,0xa9,0xe9, |
0x9f,0x12,0x10,0x0f,0x14,0x64,0x94,0xce, |
0x02,0x4e,0x04,0x18,0x86,0xbc,0xc7,0x0d, |
0x97,0x20,0x05,0x9a,0xa0,0xa4,0xda,0xa0, |
0x09,0x08,0x8a,0xa0,0xee,0x19,0xa7,0x72, |
0x3a,0xa7,0x74,0xaa,0x0d,0x4a,0x7a,0xa7, |
0xec,0x19,0x05,0xed,0x20,0x06,0x7f,0x10, |
0x06,0x61,0x80,0x0c,0x1b,0x20,0x06,0x7e, |
0x22,0x06,0x1a,0x1a,0x06,0x09,0xea,0xa7, |
0xa7,0xb5,0xa3,0x96,0x89,0xa0,0x00,0xff, |
0x80,0x8e,0x8e,0xa0,0x06,0x7b,0xe0,0xa6, |
0x33,0x50,0x08,0x7e,0x9a,0xa0,0x79,0x6a, |
0xa9,0x8d,0x6a,0x99,0x75,0x4a,0x9d,0x65, |
0xf0,0x07,0x99,0x19,0x06,0x4c,0xe0,0x08, |
0x7d,0x9a,0x99,0x96,0xaa,0xa0,0xa6,0x5a, |
0xaa,0x0b,0xfa,0xa9,0xbb,0x30,0x03,0xa3, |
0x6a,0xaa,0x11,0xfa,0xaa,0xb0,0x2a,0x06, |
0xbb,0x80,0x0c,0x11,0xc0,0xa4,0x11,0x70, |
0xab,0xb7,0x4a,0xab,0xe3,0x90,0x08,0xf2, |
0x99,0x8a,0x52,0x70,0x0b,0x63,0x18,0x85, |
0x81,0x55,0x30,0xe0,0x44,0x39,0x99,0x86, |
0x60,0x44,0xb6,0xa5,0x9c,0x02,0x6e,0x05, |
0x09,0x6a,0xea,0x40,0x6e,0x52,0x10,0x03, |
0xb5,0xda,0xa4,0xd4,0x5a,0xad,0xd6,0x7a, |
0xad,0xd8,0x6a,0xad,0x51,0xf0,0x07,0x84, |
0xea,0xa6,0x9a,0xf0,0xa7,0xe8,0x28,0x0e, |
0x33,0xb0,0x01,0x9a,0xb0,0x01,0x7f,0x50, |
0x08,0xe2,0xd0,0x0e,0x7f,0xea,0xa6,0x8a, |
0xa8,0x06,0x85,0x70,0x87,0x61,0xb0,0xa6, |
0x9a,0xb0,0x0b,0xe2,0xd0,0xa8,0x7f,0xda, |
0xa4,0xcc,0x09,0x00,0x51,0x80,0x0c,0x6b, |
0x8a,0xa4,0xfe,0x7a,0xa7,0x2f,0x4a,0xa9, |
0x4a,0x1a,0x06,0xcf,0xb9,0xa3,0xfe,0xba, |
0xa4,0xd9,0x8a,0x0c,0xee,0xa9,0xa7,0x00, |
0xa0,0x06,0x86,0xda,0xa6,0x75,0x1a,0xb1, |
0x12,0x1b,0xa7,0xb2,0x8a,0xab,0x16,0x7b, |
0xb1,0x11,0x30,0x0e,0x60,0x80,0x32,0x08, |
0xf6,0x00,0x3e,0x60,0x9f,0x90,0xc6,0x94, |
0x06,0x78,0x41,0x79,0xf5,0x0b,0xe0,0xa4, |
0x80,0xd1,0xc3,0xac,0x03,0xca,0x7c,0xcf, |
0x3a,0x05,0xd3,0x33,0x05,0x7d,0x80,0xab, |
0xb4,0x8a,0xb1,0xb9,0x5a,0xab,0xd3,0xff, |
0x9a,0xb0,0xd8,0x6a,0xb3,0xb4,0x9a,0xa4, |
0xb7,0x3a,0xaf,0x84,0xca,0xaf,0x49,0xea, |
0xad,0x1b,0x20,0x0e,0xc8,0x49,0xb4,0x07, |
0x9a,0xab,0xc8,0xf0,0x07,0x6a,0xb0,0x0d, |
0xdb,0xb0,0xa3,0x37,0xeb,0xa6,0x62,0x50, |
0x06,0xb2,0x8a,0xaf,0x74,0x78,0xb3,0xd8, |
0xca,0x04,0x62,0x70,0xaf,0xcc,0x99,0xb5, |
0x38,0x9b,0xad,0x9a,0xe0,0x92,0x86,0x5a, |
0xad,0x4b,0x3a,0xb6,0x49,0x4a,0xb6,0x77, |
0x7a,0xb6,0x08,0x6b,0xad,0x62,0x40,0xb3, |
0x18,0xbb,0x02,0xc8,0x30,0x0e,0x51,0x3a, |
0x05,0x9f,0xa9,0x64,0xbc,0x17,0xb2,0xc0, |
0x37,0x85,0x23,0x47,0x6e,0x59,0xe8,0x6d, |
0x58,0x19,0x4e,0x01,0x90,0x7c,0x03,0x5a, |
0xb7,0x44,0xa9,0x32,0x53,0x10,0x00,0x50, |
0xc0,0xb6,0x88,0x9b,0xb8,0x8a,0xbb,0xb8, |
0x11,0x50,0x0d,0x6a,0xa0,0x06,0xb0,0x70, |
0xb1,0x9a,0x40,0xa8,0x4a,0xab,0x09,0x32, |
0x1b,0x01,0xbb,0xc0,0x04,0xe2,0xc0,0xa7, |
0x48,0xcb,0xae,0x62,0xc0,0x04,0x33,0x30, |
0xab,0x3b,0x8b,0x0c,0xe2,0x10,0xb9,0x88, |
0x4b,0xab,0x7f,0xd0,0xa9,0x3c,0xab,0x09, |
0x8b,0x69,0xb9,0x8c,0x7b,0xb1,0xb4,0xca, |
0xba,0x4c,0x20,0xb3,0x5d,0x5b,0xbb,0xd9, |
0x2a,0x06,0x2b,0xb0,0x02,0x11,0xa0,0xbb, |
0xb9,0xbb,0xbb,0xbe,0x9b,0xbb,0x2b,0xf0, |
0xa4,0x4b,0x90,0x32,0x9b,0x34,0x05,0x56, |
0x8a,0xa5,0x4c,0xf9,0x44,0x18,0x74,0x09, |
0xdf,0xb6,0xa5,0x46,0x59,0x45,0x3a,0x30, |
0x3d,0x28,0x15,0x81,0x80,0xa7,0x02,0xdc, |
0x20,0x05,0x16,0xc4,0x0d,0x2d,0x43,0x0e, |
0xbe,0xdb,0xbd,0xb7,0xaa,0xbb,0x6c,0xff, |
0x0b,0xbe,0xe2,0xfb,0xbd,0xe4,0xeb,0xbd, |
0xaf,0x3b,0xb9,0x21,0x6a,0xbe,0x2b,0xb0, |
0xb6,0x6a,0x30,0xb3,0x11,0x00,0x03,0xa9, |
0x1b,0x9d,0x6b,0x0b,0xbe,0x9a,0x30,0x0a, |
0xe2,0x20,0x0e,0x6a,0xf0,0x07,0x18,0x0b, |
0x0b,0x85,0xb0,0xb8,0x93,0x2b,0x0e,0x61, |
0x80,0xab,0xb0,0xd0,0x06,0xee,0xfb,0xba, |
0x16,0xcb,0x9c,0x65,0x00,0x0b,0xae,0x6b, |
0xc0,0x0c,0x4c,0xb3,0xb8,0x0b,0xbc,0x10, |
0x1c,0xc1,0xc0,0xbb,0x07,0x1b,0xeb,0xb2, |
0x9b,0x74,0x09,0x1b,0x37,0x49,0xae,0x68, |
0x80,0xca,0xbb,0x29,0xf8,0x70,0x6e,0x58, |
0x78,0x09,0x29,0x1b,0x33,0x4d,0x96,0x4d, |
0xd7,0xe6,0xb2,0x53,0x60,0x05,0xda,0xeb, |
0x03,0xe4,0xd0,0xbb,0xbc,0x2b,0xc1,0x30, |
0x1c,0xc3,0x32,0x3c,0xc3,0x2f,0xec,0xbb, |
0xa3,0x80,0xbb,0x30,0x50,0xc3,0xba,0xdb, |
0x9c,0x62,0x90,0xc3,0xef,0xbb,0x01,0x41, |
0xd0,0xb0,0x0f,0xfc,0xbe,0xb0,0x90,0x96, |
0x6a,0x70,0xab,0x30,0xf0,0xbb,0xef,0xeb, |
0xae,0xe4,0xab,0xc3,0xef,0x1b,0x01,0xf8, |
0x9b,0xc4,0x2b,0xa0,0x09,0x6a,0x50,0x0d, |
0x49,0xdc,0xbd,0xe3,0xab,0xb8,0x62,0x50, |
0xba,0xe5,0xdb,0xc0,0x5e,0x7c,0xab,0x62, |
0x00,0x0b,0xb9,0x2b,0x0c,0x34,0x9c,0xbb, |
0x1a,0xeb,0x05,0x3e,0xe0,0x03,0x91,0x30, |
0xa5,0xa0,0x76,0x0b,0xdc,0x94,0x8f,0xe1, |
0xe6,0x2c,0x74,0x15,0xbd,0xc2,0x15,0xbd, |
0xe0,0xc6,0x5c,0xce,0x35,0x86,0x97,0xe0, |
0x03,0x01,0x30,0x05,0x9d,0x20,0xa5,0x7d, |
0x90,0xc3,0x65,0x3c,0xc8,0x84,0x5c,0xc6, |
0x30,0x30,0x0a,0x85,0x00,0x0b,0x82,0xff, |
0xec,0xc2,0x30,0xa0,0x06,0xf7,0x0b,0xb9, |
0xb0,0x30,0x0a,0x14,0x50,0x06,0x85,0xa0, |
0x06,0x3e,0xdc,0xc8,0x65,0xd0,0x06,0x2b, |
0x20,0xc5,0x12,0x0c,0x03,0x85,0x30,0x0a, |
0x8b,0x0c,0xc3,0x11,0x00,0x0b,0x4c,0x00, |
0xc1,0x11,0xd0,0x06,0x1b,0x10,0xca,0x65, |
0xfc,0xbe,0x87,0x7c,0xbf,0x91,0x3b,0xc3, |
0xbb,0xab,0xc3,0xb2,0x1c,0xcb,0xb4,0xec, |
0xc2,0x3a,0x2c,0x06,0x64,0x2c,0x0c,0xba, |
0x9c,0xcb,0xbb,0xdc,0xcb,0x2b,0x20,0x0c, |
0x11,0xa0,0x84,0x2e,0x5b,0x94,0x7d,0x7c, |
0x6d,0x6f,0x9c,0x8f,0x30,0xe3,0x5b,0xbf, |
0x00,0x0f,0xdf,0x16,0xbd,0x03,0x83,0xc7, |
0xbc,0xa7,0x03,0x52,0x90,0x32,0x55,0x50, |
0x09,0x3e,0x20,0x05,0xbf,0x9c,0xcd,0xda, |
0x4c,0xc6,0xdb,0x3c,0xc3,0xdc,0xcc,0xcd, |
0xb9,0x0b,0x03,0xe2,0x2c,0xce,0xe0,0xac, |
0xcd,0x32,0x7c,0xc8,0x62,0xa0,0x06,0xa3, |
0x20,0x0c,0x62,0xbc,0x02,0xb0,0xf0,0xb8, |
0xe8,0x1a,0xc9,0x62,0xb0,0x0d,0x6d,0x30, |
0x0a,0x8a,0xbc,0xc9,0x2b,0x20,0x0e,0x65, |
0x60,0xc9,0x33,0x0c,0x0b,0xe2,0x60,0xc8, |
0xee,0x2a,0xc8,0x30,0xb0,0x01,0x6d,0xa0, |
0xca,0x34,0x9c,0xc3,0x88,0x8c,0xb5,0xe2, |
0x5c,0xc8,0x0c,0x5d,0xc6,0xbd,0xd0,0xcb, |
0x10,0x1d,0xd1,0xbb,0x1c,0x01,0x60,0x00, |
0x06,0x53,0x20,0x65,0x9f,0x59,0x09,0xd7, |
0x86,0x95,0x1c,0x2c,0x41,0x4f,0xa4,0x69, |
0x2d,0x53,0x45,0x7c,0x17,0x2d,0xbc,0xd7, |
0x3c,0x0f,0x30,0x05,0xb7,0x50,0xb8,0x6b, |
0xb0,0x02,0x2c,0x20,0xd1,0x2e,0x2d,0xd1, |
0xbf,0xcc,0xcb,0x2b,0x60,0x0e,0xe6,0xff, |
0xb0,0x02,0xa3,0xf0,0xb8,0x8f,0xbb,0xce, |
0x30,0x60,0x0e,0xe4,0xcc,0xcb,0xba,0x1c, |
0xd3,0x31,0x8d,0xd0,0x38,0x8d,0x06,0x6a, |
0x20,0x06,0xa0,0x3c,0x0a,0x4c,0x00,0x03, |
0xc2,0xc0,0x04,0x05,0xad,0xd4,0xbf,0x0c, |
0x03,0x44,0x1b,0x08,0x8b,0xfc,0xcd,0x63, |
0x7c,0xc8,0x85,0xe0,0xd4,0xdd,0x9c,0xcd, |
0x30,0xd0,0x06,0x96,0x4c,0xc6,0x30,0x90, |
0xce,0x39,0x9c,0xcb,0x63,0x3c,0xd6,0xdb, |
0x2c,0x06,0x6d,0xd0,0x06,0x61,0x3c,0xd5, |
0x64,0x0d,0xc3,0x54,0x9d,0xd5,0xe5,0x5c, |
0xc6,0xb8,0xdc,0xd2,0x72,0x2d,0x0c,0x73, |
0x5d,0xd7,0x74,0xcd,0x02,0x7b,0x00,0xa5, |
0x7b,0xcc,0x84,0x52,0xd0,0xc6,0x70,0xac, |
0xbc,0x12,0xd4,0x32,0x16,0x44,0x53,0x3a, |
0x90,0xc7,0x33,0xe3,0x99,0x55,0xb0,0xc2, |
0x2d,0xdc,0xd2,0x74,0xfd,0xd2,0x8e,0x2d, |
0xd1,0xe6,0x30,0x0a,0x6d,0xc0,0x88,0xf7, |
0x5b,0xd9,0x4c,0xa0,0xb9,0x46,0xbd,0xce, |
0x34,0x4d,0xd3,0x8c,0x1d,0xd1,0xe6,0x20, |
0x0c,0x9f,0x4d,0xd7,0x34,0xad,0xcb,0x62, |
0xc0,0x02,0x44,0x1b,0xda,0xba,0x6c,0x0e, |
0x85,0xd0,0x06,0xa0,0xfd,0xd8,0xe6,0x50, |
0xd4,0xa8,0xed,0xd2,0xfe,0x0c,0x0b,0xba, |
0x0c,0x03,0x81,0x50,0xba,0x8f,0x1d,0xd1, |
0xf7,0xbb,0xd3,0x2f,0x0d,0xd4,0x3f,0xfd, |
0xdb,0x32,0x0d,0xdc,0xbe,0x1d,0xdc,0xc1, |
0xdd,0x0b,0x25,0xc0,0x02,0xc7,0x5d,0x02, |
0xca,0xbd,0xdc,0xcc,0xdd,0xdc,0xc2,0x30, |
0x0c,0x7a,0x7d,0x09,0x1f,0x10,0x09,0x52, |
0x50,0xb7,0x1d,0x3d,0x53,0x2d,0xb3,0x5c, |
0x50,0x04,0xac,0x2a,0x20,0x0d,0xa8,0xff, |
0xe8,0x03,0x2a,0x1c,0x00,0x6b,0xb0,0x0b, |
0xc8,0xcd,0x02,0xe6,0x7d,0xde,0xe8,0x9d, |
0xde,0xea,0xad,0xde,0xa2,0xdd,0x06,0x22, |
0xd0,0x06,0x68,0x10,0x08,0x9c,0x6d,0x0e, |
0x2c,0x10,0x08,0x68,0xd0,0x0b,0xfa,0x7c, |
0x05,0x97,0xcd,0xd5,0xa3,0x10,0x08,0x2c, |
0xb0,0xd9,0xe8,0xdd,0xd8,0xff,0x6d,0xd6, |
0x81,0x20,0xda,0x85,0x10,0x04,0xb0,0x20, |
0xd7,0xff,0x8d,0x06,0x6d,0x40,0xdf,0x2e, |
0x5d,0xd7,0x62,0x50,0xe0,0xba,0x6c,0xd7, |
0x2d,0xfd,0xda,0xe2,0xe0,0xe0,0xaf,0xdd, |
0xe0,0x73,0x2d,0xe0,0x8d,0xed,0xd9,0x68, |
0x1d,0xdb,0xb9,0x1d,0xe2,0x22,0xde,0xcb, |
0xc6,0xdd,0xdc,0x26,0x7e,0xe2,0x43,0x00, |
0x03,0xc3,0x60,0xd1,0x52,0x76,0x53,0x01, |
0xb0,0xd1,0xaf,0x38,0x53,0x9f,0x24,0x33, |
0xd1,0xfc,0x01,0x9f,0xc9,0x0d,0xd6,0xec, |
0x03,0xde,0x70,0xe2,0x3c,0xde,0xe3,0x27, |
0xce,0x02,0x68,0x50,0x06,0x81,0x30,0x0d, |
0xf4,0xcd,0xdc,0xe5,0x4d,0xdf,0xf5,0x7d, |
0xdf,0x6d,0xc0,0x04,0x22,0x40,0xd9,0x49, |
0x10,0xdf,0xe6,0x30,0x0d,0xe5,0xfd,0xdf, |
0xba,0x40,0xb4,0x2e,0x30,0xe4,0xa3,0x20, |
0x02,0xa3,0x30,0x0d,0xc7,0x8d,0xdc,0xe6, |
0x20,0x06,0x68,0x80,0xe4,0xe9,0xdd,0xe5, |
0xe7,0x3d,0x0a,0xbd,0x60,0xde,0xcd,0x8d, |
0xde,0x25,0x60,0x0e,0x6d,0xd0,0x0b,0x48, |
0x3e,0x0d,0xe2,0x80,0x06,0xeb,0x1d,0xe0, |
0x75,0x2d,0xd7,0xe2,0x30,0x0a,0xe7,0xcd, |
0xe1,0x75,0x4e,0xe7,0x77,0xcd,0xe7,0x73, |
0xfe,0xe7,0xbd,0x30,0x04,0x25,0x20,0xe8, |
0x84,0x3e,0xe8,0x43,0x70,0xe8,0x88,0xff, |
0x7e,0xe8,0x83,0xae,0xdc,0x54,0x30,0x0c, |
0x1c,0x80,0xbd,0x45,0xf9,0x01,0xd2,0x30, |
0x86,0x32,0x5e,0xe9,0x26,0xac,0x02,0x44, |
0x79,0xd2,0x32,0x40,0x94,0x44,0x80,0xdc, |
0xca,0x5d,0xe8,0x82,0xee,0xe3,0xa2,0xae, |
0xdc,0xd3,0xd0,0x06,0x49,0x60,0x0e,0xa3, |
0xae,0xdc,0x2c,0x40,0xe4,0x25,0x10,0x08, |
0x66,0x2e,0x0e,0x2e,0x50,0x06,0x41,0x10, |
0xe7,0x25,0xc0,0xe5,0xad,0xde,0x06,0x43, |
0x8e,0x06,0xa7,0xce,0xd4,0xb6,0xce,0xdc, |
0x25,0x9e,0xea,0x49,0x30,0x0a,0xa9,0xce, |
0x04,0xfe,0x5d,0xeb,0x68,0xc0,0x04,0xa9, |
0x7e,0xe2,0x16,0x2e,0xe5,0xa9,0xee,0xe9, |
0xc9,0x6e,0xe4,0xe7,0x9d,0xe6,0x2c,0x10, |
0xe8,0x89,0x5e,0xed,0xd6,0x9e,0xe8,0x37, |
0x30,0x04,0x61,0x00,0x06,0x68,0x3c,0x8f, |
0x9f,0xd9,0xc6,0xda,0x1d,0xe3,0x34,0x3e, |
0x86,0x29,0xe3,0x03,0x89,0xed,0xb2,0x3b, |
0x7e,0xed,0xea,0xbe,0xee,0xeb,0x3e,0x0d, |
0xbd,0x80,0x06,0xd3,0xc0,0xee,0x8b,0x4e, |
0xe8,0xf4,0x3e,0x0d,0xf6,0xee,0xea,0xbd, |
0xc0,0x04,0x65,0x90,0x04,0x43,0x30,0x0d, |
0x92,0xcd,0xe5,0xd3,0x90,0x04,0x6d,0x10, |
0x04,0x43,0x0e,0xea,0x81,0x60,0xdc,0xa0, |
0x3e,0xef,0x8b,0x1e,0xf0,0xbd,0x10,0xef, |
0xcb,0x5d,0xe8,0xcb,0x3d,0x0d,0x68,0xe0, |
0x02,0x11,0x2f,0x0e,0x6d,0xd0,0xeb,0xcf, |
0x6e,0xe8,0x71,0x8e,0xf1,0x19,0xdf,0xf1, |
0x3c,0xde,0x0b,0x37,0x10,0xf2,0x22,0x3f, |
0xf2,0x22,0x6f,0xed,0x22,0xcf,0x02,0x8d, |
0xee,0xb2,0x44,0x20,0x01,0x52,0x30,0x05, |
0xbc,0x37,0xd2,0x9f,0x74,0xe9,0xd2,0xff, |
0x90,0xa6,0xdc,0xd0,0x09,0x5e,0x10,0x00, |
0x44,0xb0,0x02,0xd9,0x9e,0xed,0x87,0xce, |
0xf3,0xec,0xfe,0xf3,0xd5,0x3e,0x0d,0xba, |
0x00,0xef,0x40,0xdf,0xf3,0x88,0xee,0xf3, |
0x87,0x6e,0xef,0x37,0x30,0xf1,0x4c,0x80, |
0x06,0xd6,0x90,0x04,0xf1,0x2e,0xf1,0x14, |
0xd0,0xf0,0x41,0xaf,0xeb,0xf1,0xde,0xee, |
0x81,0xd0,0xe6,0x57,0xcf,0xee,0xee,0x4e, |
0xf5,0x87,0x7e,0xe5,0x45,0xaf,0xee,0x12, |
0x7f,0xf1,0x61,0x5f,0xf6,0x09,0x7f,0xf6, |
0x8b,0x0e,0xf2,0x24,0xbf,0xf6,0x6c,0x3f, |
0xf2,0x30,0xc0,0x01,0xc3,0x30,0xa5,0x5c, |
0x14,0x09,0x3a,0x00,0xe3,0xf9,0xd8,0x5c, |
0xbc,0xa7,0x02,0x56,0xe0,0x03,0x85,0xcb, |
0x0d,0x3a,0xe0,0x03,0x6b,0x20,0x0c,0xeb, |
0xd0,0xf6,0x84,0x5f,0xf8,0x6d,0x3f,0x0d, |
0xaa,0x80,0x06,0x86,0xbf,0xf8,0x24,0x6f, |
0xef,0x68,0xa0,0xdf,0x6d,0x30,0x04,0x37, |
0x20,0xf1,0x2e,0x60,0xf4,0x3d,0x2f,0xf4, |
0x5e,0x5f,0xed,0x93,0xbf,0xf4,0x6d,0xe0, |
0x0a,0x5b,0xbf,0xf6,0x47,0x1f,0xf0,0x50, |
0x3f,0xf9,0xbd,0x30,0xfa,0x66,0x5f,0xed, |
0xd6,0x20,0x0e,0xd6,0x70,0xfa,0xac,0xcf, |
0xee,0xbd,0x30,0xf8,0x37,0xb0,0x0e,0xb2, |
0x3f,0xfb,0xb4,0xcf,0xf6,0x83,0x3f,0xf8, |
0x3f,0xe0,0xe8,0xd3,0x4c,0xdd,0xe6,0x3e, |
0x86,0x1c,0xfc,0x3c,0xab,0x28,0xa5,0x97, |
0xe0,0x05,0x29,0xcd,0xc2,0x21,0x7f,0xfb, |
0xb1,0x7f,0xfc,0xc9,0x0f,0xfb,0xb0,0xcf, |
0xf8,0x6c,0xff,0x06,0xaf,0xef,0xfc,0xd2, |
0x3f,0xf8,0x49,0x10,0x04,0xd6,0x10,0xf2, |
0xd6,0xd0,0x06,0x6c,0x8f,0xf8,0xba,0xff, |
0x40,0xf8,0x4e,0xc0,0x04,0x41,0x00,0xef, |
0x25,0x6f,0xf8,0xf0,0x3d,0xf9,0x6f,0xe0, |
0x02,0xd7,0x2f,0xfd,0xe3,0x2f,0xf9,0x37, |
0x90,0x04,0x6f,0x20,0xf9,0xec,0x1f,0xf2, |
0x45,0x0f,0xfa,0xf2,0xbf,0xf3,0xf0,0xef, |
0xf3,0x24,0xff,0xfa,0xb4,0xbf,0xff,0xb3, |
0x0f,0x10,0x02,0xd6,0x0d,0x24,0x48,0x50, |
0xc0,0xb4,0x66,0xc3,0x2c,0x3c,0xb8,0x94, |
0xe5,0x81,0x14,0x75,0x2a,0x64,0x54,0xe9, |
0x74,0x2b,0xa2,0x0a,0x6a,0x53,0x2e,0xf9, |
0x90,0xc1,0xcd,0xc7,0x25,0x6f,0x05,0x45, |
0x8e,0x24,0x59,0xd2,0xe4,0xc0,0x24,0xd6, |
0x4e,0xae,0x14,0x79,0x63,0xe0,0x8d,0x83, |
0x49,0x7a,0x11,0x4c,0xf2,0x86,0xa0,0xcb, |
0x81,0xaa,0x9c,0xbc,0x5c,0x87,0xd3,0xa5, |
0x35,0x57,0x49,0x5c,0xb4,0x51,0xd9,0xf3, |
0xc6,0x51,0xa4,0x47,0x7b,0xae,0xab,0xb9, |
0xce,0x5a,0x19,0x5d,0x2f,0x93,0x4e,0x55, |
0x8a,0xd4,0xa8,0xca,0x69,0x37,0x52,0x1a, |
0xa5,0xda,0xd5,0xeb,0x57,0xb0,0x47,0xb3, |
0x09,0x20,0x5b,0xd6,0xec,0x59,0xb4,0x66, |
0x11,0x82,0x91,0xe2,0xe3,0xc1,0x03,0x1f, |
0x01,0x54,0xa8,0x50,0x77,0x51,0xc5,0xad, |
0x4b,0x16,0xac,0x70,0xe3,0x16,0x60,0x0d, |
0x0b,0xb2,0xeb,0x04,0xa6,0x3d,0x2b,0xd8, |
0xf0,0xe0,0xc3,0x89,0x11,0x0f,0x16,0xf0, |
0x26,0x49,0x60,0x81,0x2c,0x57,0x32,0x7e, |
0xd3,0x06,0x9b,0x60,0x5d,0x4e,0x22,0x1b, |
0x74,0x65,0xb3,0x64,0xd9,0x75,0xaa,0x42, |
0xd4,0xdc,0x4c,0xd2,0x5a,0x08,0x55,0xd3, |
0x5c,0x5c,0x91,0x4c,0xd2,0xb1,0xaa,0x24, |
0xba,0xde,0xb8,0xc0,0xd9,0xba,0x75,0xff, |
0xed,0x95,0xd9,0x16,0x08,0xd8,0xdd,0x9b, |
0xf7,0x6f,0xdf,0xc1,0xcb,0xee,0x36,0xd7, |
0x8c,0x83,0x94,0x4b,0x44,0x22,0x5d,0x62, |
0x33,0xd7,0xb9,0xc7,0x00,0x53,0xa4,0xe9, |
0xf0,0x41,0xe4,0xd5,0x6e,0xc2,0xd9,0xb5, |
0x6f,0x1f,0xde,0xcb,0x09,0x36,0xee,0xe1, |
0x0b,0x87,0x28,0xeb,0x44,0x33,0x5a,0x56, |
0xaa,0xc4,0x0b,0x70,0xe5,0x42,0xbd,0x59, |
0xc1,0x65,0x5d,0xb8,0xb0,0xf6,0x46,0x04, |
0x29,0xd0,0x8b,0xe3,0x2b,0x26,0xcb,0xca, |
0x9a,0xc0,0x24,0x82,0xe8,0xe5,0x32,0xc3, |
0x5a,0xd3,0xaf,0x34,0xdb,0xd6,0xd1,0x6d, |
0x01,0x06,0x1b,0x74,0xf0,0x41,0x08,0x1f, |
0xa4,0x82,0x03,0x0b,0x3e,0x7a,0xc0,0x19, |
0x30,0x9a,0xc3,0x88,0x83,0x4b,0xa4,0x58, |
0x42,0x86,0x29,0xa4,0x20,0x07,0x9b,0x08, |
0x4b,0x34,0xd1,0x41,0xe0,0x4e,0xe4,0x6d, |
0x01,0x40,0x4e,0xf8,0x0e,0x38,0x18,0x85, |
0xf3,0x6d,0xc5,0xdf,0x60,0x64,0xe5,0x0d, |
0xf0,0xde,0x60,0x65,0xc6,0x05,0xb0,0x71, |
0xe2,0x0a,0xb2,0xb0,0x13,0x52,0xb8,0xcb, |
0x42,0x60,0x05,0x3c,0xb3,0x76,0x73,0x81, |
0x02,0x5e,0x04,0x08,0x82,0x8c,0x37,0x6a, |
0x5c,0xef,0x0d,0xfc,0xb0,0x0b,0xe2,0x84, |
0xf5,0xca,0x42,0x32,0xcb,0xec,0x2e,0x58, |
0x60,0x84,0x2f,0x47,0x10,0x13,0x4c,0x32, |
0xc3,0x2c,0xf3,0xcc,0x2f,0xb1,0xb1,0x65, |
0x42,0xb7,0x44,0x59,0x93,0x0a,0x2a,0x26, |
0x99,0xd0,0x8b,0x5b,0x96,0x08,0x40,0x8a, |
0x49,0xbe,0x64,0xb0,0xcc,0x13,0xfb,0xf4, |
0x33,0x42,0x01,0x42,0xd0,0x87,0xc4,0x3f, |
0x0b,0xc5,0x66,0x93,0x41,0xb1,0x01,0xff, |
0x24,0x09,0x42,0x19,0xe4,0x0d,0x1b,0x17, |
0x6c,0x68,0xd4,0x4f,0x01,0x4e,0x78,0xc3, |
0x41,0xf0,0x3c,0xa1,0x20,0x88,0x37,0x36, |
0xa1,0xe0,0x0a,0x52,0x26,0x2d,0x31,0x45, |
0x01,0xf4,0xc1,0xb1,0xc7,0x24,0x42,0x38, |
0x81,0xd1,0x18,0x5b,0xed,0xf1,0x0d,0x23, |
0x01,0x71,0x75,0x56,0xe1,0x78,0xbb,0x60, |
0x4c,0x5c,0x73,0xd5,0x75,0xd7,0x31,0x27, |
0x19,0xa6,0x99,0x57,0x08,0x19,0x01,0x1b, |
0x62,0x8b,0x98,0x84,0x03,0x30,0xfa,0x5a, |
0xe3,0x15,0x5e,0x9b,0x75,0xf6,0xd9,0x67, |
0x15,0x0d,0xa1,0x47,0x67,0xf5,0x44,0x93, |
0x4c,0x6c,0xbf,0x7c,0xc3,0x1d,0x30,0x17, |
0x08,0xe1,0x5a,0x45,0x3d,0xc1,0xb1,0x5b, |
0x07,0x73,0x4d,0xf3,0x8d,0x0b,0xb0,0x01, |
0x93,0x44,0x4d,0xe3,0xb0,0xa1,0x45,0x7e, |
0x4e,0x38,0x92,0xdc,0x12,0xf9,0x5c,0x40, |
0x0e,0x40,0x7a,0x04,0xe4,0x0a,0x59,0xaf, |
0x38,0xd2,0x4f,0x6c,0x58,0xf1,0x84,0x15, |
0x39,0xec,0x10,0xb5,0xd0,0x07,0x6f,0x1d, |
0xa1,0x08,0x86,0x1b,0x6e,0x78,0x61,0x88, |
0x1d,0x96,0xb8,0x88,0x85,0xd5,0xc4,0x86, |
0xe1,0x88,0x8b,0xc0,0xe6,0x07,0x0a,0xad, |
0xc3,0x18,0x62,0x68,0x43,0x16,0x59,0x57, |
0x42,0xe4,0xb0,0x61,0xe4,0x90,0x29,0x3e, |
0x59,0xcc,0x38,0x00,0xd9,0x95,0x10,0x77, |
0x3c,0x41,0x79,0x04,0x39,0xc4,0x2c,0x62, |
0x01,0x4d,0xf1,0x7d,0x57,0x84,0x38,0x42, |
0xb0,0x41,0xd8,0x99,0xb9,0x1d,0xf6,0x84, |
0x38,0x2e,0x7e,0x23,0x88,0x41,0x9d,0xc5, |
0xc6,0x06,0x4b,0x15,0x5d,0x44,0x5d,0x6c, |
0x79,0xb5,0x76,0x6a,0x30,0xfb,0x61,0xff, |
0x18,0x8f,0x89,0x19,0x3e,0xa7,0x88,0xad, |
0xb7,0xce,0xfa,0xeb,0xac,0xb1,0x89,0x13, |
0x1b,0xaf,0xc1,0x36,0xfb,0x6c,0xb4,0xbf, |
0x26,0xe4,0x82,0x10,0x1e,0x76,0x1b,0x63, |
0xb8,0x23,0x96,0x9b,0x62,0x86,0x5b,0x66, |
0xf8,0x82,0x1a,0xe8,0xa6,0x1b,0xe2,0x20, |
0x42,0x20,0x44,0xef,0xbd,0x03,0x1f,0x81, |
0x90,0x45,0x00,0x11,0x36,0xe7,0x43,0x2e, |
0x70,0xe7,0x80,0x20,0x46,0xb0,0xe1,0xdb, |
0x99,0x8b,0xe0,0x96,0x10,0x7d,0x4e,0x80, |
0x98,0x90,0x03,0xae,0x40,0x87,0x62,0x5d, |
0x29,0x56,0x75,0x81,0x22,0x08,0xb1,0xc3, |
0xe5,0x99,0x77,0xed,0x07,0x0f,0xd4,0x51, |
0xff,0x07,0x8f,0x60,0xf0,0x58,0x3d,0x75, |
0xd8,0x63,0x97,0x7d,0xf6,0xd4,0xff,0x49, |
0x86,0x10,0xda,0x73,0xd7,0x3d,0xf5,0x73, |
0xf0,0xe8,0xfd,0x77,0xac,0x83,0x2f,0x42, |
0x78,0xac,0xbb,0x1e,0xbe,0x08,0x2c,0xfa, |
0x89,0x03,0x0b,0xdf,0xb7,0x2e,0x9e,0x6b, |
0xe8,0xcb,0x06,0xfb,0x1c,0x42,0x0c,0x28, |
0x87,0xf9,0x03,0xf4,0xf9,0x7b,0x62,0x42, |
0x6a,0x10,0xe1,0x00,0x2c,0xa2,0x07,0x9b, |
0x70,0x86,0xaf,0x20,0x03,0x04,0x42,0x08, |
0x09,0x61,0x11,0x4f,0x96,0xef,0xc7,0x05, |
0x74,0xb6,0x4f,0x9b,0xe1,0x72,0x8a,0x40, |
0xc7,0x85,0x1a,0xe4,0x57,0xff,0x04,0xf9, |
0x1b,0x26,0xa4,0xc5,0xb6,0x31,0x0c,0x1d, |
0x07,0xc8,0xda,0xc2,0xf4,0x66,0x40,0x87, |
0xcd,0x0d,0x0e,0xff,0x60,0x60,0x03,0x1d, |
0xf8,0x40,0x08,0x46,0x50,0x82,0x12,0x74, |
0xdd,0x04,0x2d,0x08,0x41,0xd7,0x65,0x70, |
0x75,0x1b,0xd4,0xe0,0x04,0x3b,0x68,0xff, |
0x83,0x17,0xa0,0x00,0x76,0x0c,0xcc,0xa0, |
0xea,0x2a,0xa8,0x41,0xd9,0xfd,0xc3,0x04, |
0x36,0x08,0xc6,0x3f,0xfa,0x01,0x02,0xe6, |
0x99,0x30,0x75,0x58,0x00,0xc1,0x15,0x16, |
0xc1,0xbc,0xde,0xc1,0x2e,0x87,0xa8,0xfb, |
0x02,0x08,0x4c,0x70,0x85,0x20,0x98,0x80, |
0x79,0xb5,0xf0,0x99,0x08,0xbe,0x80,0x85, |
0x1a,0x5c,0x01,0x86,0x3b,0xd4,0xdd,0xf0, |
0xce,0xb1,0x08,0x1a,0xd8,0x00,0x7d,0xc6, |
0xc3,0x9a,0x27,0xb4,0x10,0xbe,0xae,0x21, |
0xd1,0x05,0x24,0x40,0x5d,0x11,0x82,0xb1, |
0x08,0xf4,0x61,0xed,0x78,0x57,0xd3,0x1a, |
0xd7,0x08,0x61,0x3c,0xe9,0x31,0xec,0x74, |
0x17,0x64,0x63,0x1b,0x21,0xd8,0x81,0x0c, |
0xb8,0x51,0x8e,0x73,0x94,0x60,0x06,0xa2, |
0xd8,0x0f,0x14,0xa0,0x20,0x03,0x71,0xdc, |
0x63,0x1c,0x1f,0xc8,0xc7,0x7f,0x00,0xd2, |
0x8f,0x70,0x0c,0x41,0x0d,0x50,0x10,0x02, |
0x10,0xa0,0x40,0x82,0x1d,0x40,0x01,0x11, |
0x21,0x91,0xc7,0x0e,0xfc,0x23,0x92,0xe9, |
0x40,0x01,0x16,0xf6,0x88,0x05,0x13,0xb8, |
0x40,0x04,0x21,0xa0,0x81,0x22,0xb1,0xa0, |
0x05,0xa6,0xd9,0x00,0x0b,0xff,0x38,0xc7, |
0x15,0xe2,0xa0,0xc8,0xdd,0x55,0xf0,0x1f, |
0x28,0x30,0xc0,0x0b,0x0c,0xe9,0xc0,0x0e, |
0xe0,0x81,0x86,0x57,0xa0,0xc1,0x3f,0xd2, |
0xf1,0x0f,0x24,0x7a,0xe2,0x05,0xa3,0x44, |
0x1d,0x0d,0xb8,0xf8,0xba,0xda,0x99,0x10, |
0x98,0xb4,0x7b,0xdd,0x02,0xe7,0x28,0x48, |
0x3a,0x06,0x32,0x99,0x74,0x04,0xe4,0x1f, |
0x95,0x89,0x4c,0x07,0xea,0xd1,0x06,0x36, |
0xa8,0xc1,0x17,0x50,0x11,0x48,0x54,0xff, |
0xd0,0x20,0x03,0x70,0x54,0xa6,0x33,0x01, |
0xc9,0xc8,0x1a,0xd8,0x00,0x0f,0xd4,0x54, |
0x64,0x04,0xf5,0xc0,0xc8,0x0e,0x90,0xc0, |
0x06,0x5f,0x40,0x41,0x3a,0x32,0x80,0x82, |
0x2f,0xa8,0xd3,0x04,0x28,0xa8,0x81,0x27, |
0xae,0xa0,0x05,0x3d,0x46,0x12,0x05,0xd3, |
0xbc,0xc2,0x17,0xb6,0xb9,0xcf,0x2b,0xec, |
0xf1,0x99,0x75,0x7c,0xe7,0x0a,0xe7,0xc9, |
0x87,0x41,0x76,0x40,0xa1,0x87,0x84,0x03, |
0x0a,0x4c,0x50,0x0b,0x13,0x58,0x51,0x8f, |
0x71,0x44,0x81,0x16,0x12,0x39,0x50,0x68, |
0xba,0x11,0x0e,0xd7,0xf4,0xe3,0x04,0x9b, |
0xd9,0x40,0x64,0x7e,0xd4,0xa3,0x10,0x14, |
0xe9,0x32,0x4d,0xea,0xc0,0x77,0x82,0xd2, |
0x06,0xfd,0xd0,0x42,0x3f,0xee,0x89,0x82, |
0x48,0xb2,0xd1,0x8f,0x19,0x40,0x45,0x08, |
0x6a,0x71,0x05,0x4f,0x74,0xb2,0xa4,0x0a, |
0x7d,0x27,0x08,0x42,0xd0,0x8f,0x5a,0x64, |
0x00,0x04,0x27,0x30,0x40,0x38,0x43,0x20, |
0x82,0x20,0xac,0x72,0xa6,0x35,0x0d,0x41, |
0x08,0x60,0x1a,0x48,0x13,0x88,0xc0,0x90, |
0x19,0x8d,0x26,0x0d,0xb4,0x50,0x03,0x48, |
0xf8,0x53,0xa1,0x0c,0x8c,0x29,0x23,0xb5, |
0x70,0x02,0x10,0xc0,0x81,0x69,0x0d,0x0d, |
0x24,0x1c,0xe3,0x89,0x8a,0x6d,0x9e,0xd4, |
0x81,0xc6,0x54,0x6b,0x5b,0xdd,0xfa,0x56, |
0x08,0xe6,0x31,0x9b,0x51,0x3d,0x01,0x37, |
0xdb,0x18,0x47,0x46,0xd6,0x22,0x08,0x5a, |
0xf0,0xc4,0x09,0x4e,0xd0,0xc9,0xad,0x4a, |
0x10,0x05,0x56,0xb5,0x81,0x3d,0x6d,0x00, |
0x09,0xa6,0x21,0x76,0x9e,0xd1,0xac,0x81, |
0x5f,0x2f,0xca,0xc0,0x43,0x9e,0x00,0xff, |
0x05,0xe7,0xec,0x68,0x03,0xe5,0xaa,0x05, |
0x48,0xcc,0xd3,0x87,0x7b,0x0c,0x2c,0x48, |
0x69,0xe0,0x09,0x12,0x60,0x81,0x04,0x4e, |
0x1d,0x24,0x0a,0x20,0x91,0xc8,0x0e,0xe8, |
0xe1,0xad,0x6c,0x85,0x6b,0x6b,0x5d,0x6b, |
0xd2,0x3c,0x9e,0x20,0x04,0x9c,0x8d,0xe9, |
0x05,0xfd,0xc8,0xca,0xbd,0x7a,0xa2,0x1f, |
0xfd,0xf0,0x44,0x2d,0x9e,0x2a,0x41,0x3d, |
0xe4,0x71,0xb4,0xb5,0x20,0x6e,0x45,0x49, |
0xb0,0xd8,0x68,0xc2,0xc1,0x13,0x9e,0xf8, |
0x23,0x2a,0x3c,0x91,0x48,0x3d,0xe0,0xf5, |
0x9d,0x79,0xac,0x85,0x58,0xb5,0xb0,0x4a, |
0x14,0x80,0xe0,0xb1,0xaa,0x75,0x60,0x70, |
0x6d,0x60,0x82,0x0c,0x00,0xf5,0xa9,0x05, |
0x25,0x01,0x67,0xe1,0xca,0xda,0xd7,0xa6, |
0x57,0xbd,0x1e,0x05,0x68,0x3e,0x25,0xe9, |
0xc6,0xe9,0x86,0x00,0x12,0x70,0xf0,0x19, |
0x0a,0x48,0x10,0xc4,0x72,0x46,0x70,0x8f, |
0xd3,0x9c,0x6e,0x23,0x4f,0x80,0x5c,0x94, |
0x9e,0x40,0x04,0x78,0x7c,0x60,0x23,0xc9, |
0x99,0x47,0x98,0xd6,0x02,0x12,0x7e,0x25, |
0x81,0x4e,0xcd,0xba,0x4e,0x45,0x76,0x16, |
0x9b,0x90,0xc8,0x40,0x2d,0xf0,0x59,0x5b, |
0xfb,0x1a,0x12,0x8e,0xb5,0x55,0x2b,0x7a, |
0xd7,0xfb,0xe1,0x0f,0x67,0x97,0x0c,0xaf, |
0x64,0x60,0x65,0x3d,0x5a,0x0b,0x10,0x18, |
0xe0,0x0a,0x16,0x1e,0xed,0x3b,0x49,0x20, |
0x82,0x44,0x9a,0x78,0x95,0x35,0x25,0x41, |
0x3b,0xf3,0x38,0x54,0x7c,0x4a,0xb2,0xa3, |
0x19,0xf8,0x82,0x08,0xc8,0x00,0x60,0xae, |
0xc2,0xd3,0x00,0xda,0x05,0xe5,0x72,0x89, |
0xea,0xe0,0xf7,0x3a,0x14,0xa8,0xe6,0xff, |
0xb5,0xac,0x09,0xf0,0xb9,0xd9,0xad,0x66, |
0xb7,0xa1,0x5d,0x5d,0x2d,0x88,0xad,0x9c, |
0xde,0x98,0xda,0x51,0x04,0x36,0xd0,0xe3, |
0x1c,0xe9,0x69,0x03,0x2d,0x84,0xe0,0x0a, |
0xa1,0x94,0xec,0x2a,0x0d,0x10,0x04,0x12, |
0xac,0x12,0xc3,0x34,0x38,0x41,0x8d,0xf3, |
0xb8,0x42,0x1b,0x6c,0x14,0xb2,0xa5,0xd5, |
0x02,0x05,0x24,0x2b,0xe3,0x40,0xf2,0xd8, |
0x04,0x20,0xb8,0x6a,0x27,0xf3,0x89,0xd7, |
0xe0,0xd2,0x20,0xc5,0xe0,0x8d,0xeb,0x55, |
0xff,0x01,0x09,0x6d,0x06,0xb2,0x91,0x24, |
0xb8,0xe6,0x6b,0x3d,0x7c,0x65,0x48,0x2f, |
0x73,0xc3,0x19,0x48,0xc7,0x7d,0xed,0xda, |
0x46,0x7d,0x66,0x15,0x05,0x27,0xa8,0x01, |
0x2a,0xfa,0x11,0x04,0xfc,0xbe,0x79,0xb9, |
0x86,0x54,0x24,0x3c,0x4f,0x00,0x09,0x2c, |
0xd0,0x53,0x55,0x20,0xa8,0x05,0x09,0x0c, |
0x60,0x80,0x17,0x72,0xf6,0x9d,0x21,0xa0, |
0x40,0x8e,0x3d,0x4a,0xc9,0x3c,0x0a,0xf4, |
0xbd,0xfa,0xac,0x01,0x09,0xa6,0x2a,0x61, |
0x9a,0x1a,0x80,0x06,0x4e,0xfe,0x2d,0x08, |
0x48,0xc0,0xce,0xf4,0x3e,0x3a,0xd2,0xcb, |
0x76,0x63,0x6a,0x03,0xf9,0x85,0x20,0xa0, |
0xb6,0xd9,0x13,0xce,0x40,0x3d,0xa7,0x5b, |
0x58,0x4f,0x7c,0x17,0xc1,0x06,0x68,0xb3, |
0x09,0x3a,0x80,0x8a,0x23,0x73,0xdb,0x13, |
0x1b,0x15,0xad,0x0d,0x50,0x01,0xcf,0x69, |
0xea,0x14,0x15,0x41,0x10,0x81,0x36,0xf1, |
0x0c,0x52,0xae,0x96,0x58,0x92,0xaa,0x4d, |
0x47,0xaf,0x91,0xdd,0x4d,0x90,0x7e,0xe1, |
0x91,0x5a,0x20,0xb4,0x1d,0x8f,0x9d,0x01, |
0x3e,0x24,0x9b,0xd9,0x03,0x67,0xa6,0xff, |
0x6a,0x59,0xe9,0x89,0x2e,0x1f,0xb3,0x16, |
0x06,0xd8,0x27,0xc3,0xf7,0x08,0x09,0x4f, |
0xd4,0xc0,0xa7,0x21,0x98,0xa7,0x1e,0x41, |
0x70,0x5a,0xc7,0xf6,0x83,0x04,0x20,0x98, |
0xee,0x67,0x6b,0x91,0x0e,0x46,0x56,0x34, |
0x04,0x47,0xac,0x01,0x05,0x9c,0x7a,0xe9, |
0x07,0x2a,0x54,0xc2,0x65,0x0d,0x64,0xab, |
0x3b,0x29,0xef,0xf7,0x42,0x16,0x04,0x9d, |
0x36,0xe6,0x39,0x2b,0x1a,0xd4,0x95,0xbb, |
0x55,0xd9,0x04,0xe7,0x79,0x73,0xdf,0x69, |
0x83,0x1a,0xa3,0xdc,0x82,0x3c,0xfd,0x47, |
0x51,0x4f,0x80,0x8a,0x5b,0x66,0xf7,0x9e, |
0x96,0x5c,0xf0,0x15,0x57,0xd8,0xeb,0x10, |
0x64,0x13,0xbb,0x14,0x0d,0x73,0x7e,0xbd, |
0xca,0x49,0x10,0x8c,0x38,0xbf,0x13,0xdc, |
0x6a,0x24,0xf9,0x08,0x47,0x56,0x22,0x17, |
0xaf,0xb0,0xac,0xe8,0x17,0x6a,0x70,0x61, |
0x8a,0x6e,0xf6,0x9c,0x8e,0xee,0xb9,0x5b, |
0x6b,0x8b,0x57,0xaf,0xc7,0x9c,0x8e,0x93, |
0x24,0x01,0x59,0x39,0x6c,0xdb,0x55,0x0e, |
0xf5,0xa2,0x8c,0xec,0x71,0x8d,0xf9,0xe0, |
0xdf,0x57,0x9b,0x40,0xcc,0x68,0x95,0x75, |
0x9e,0xc1,0xba,0xf5,0x9e,0x9e,0xe0,0x0b, |
0xb5,0x80,0x79,0x04,0xdf,0xde,0x5f,0xa5, |
0xd2,0xa0,0x1f,0xb5,0xf4,0x68,0x06,0xb4, |
0x50,0x8b,0x7e,0x68,0x95,0xea,0x35,0x28, |
0xa9,0xce,0xdb,0xde,0x56,0xaf,0xf7,0x31, |
0x03,0x7a,0x08,0xb8,0xdc,0xe7,0x18,0xdd, |
0xec,0x72,0x39,0xe7,0x8b,0x94,0x24,0x0a, |
0xe0,0x50,0x66,0x95,0xa3,0xa0,0xaf,0x78, |
0x1d,0x6c,0xb6,0xb1,0x00,0xe6,0x08,0x6f, |
0x15,0xe4,0x5a,0xf0,0x35,0xe2,0x19,0xff, |
0x09,0x89,0xd9,0xc2,0xf4,0xee,0xfa,0xd5, |
0x63,0x0d,0xfa,0x01,0xf4,0xc9,0x2b,0x98, |
0xeb,0x79,0x85,0x03,0x66,0xcb,0x09,0x76, |
0x38,0x80,0xf7,0xdd,0x1d,0xfe,0xfc,0x49, |
0xf7,0x18,0x0c,0x53,0xd8,0x62,0x12,0x93, |
0xb0,0x85,0x29,0xf2,0x91,0x01,0x5c,0x20, |
0x74,0x99,0x7d,0xb4,0x41,0x50,0xe5,0xb8, |
0x50,0x22,0xc2,0x41,0x9b,0x1b,0x06,0xe8, |
0x86,0x57,0x69,0xfc,0x7f,0x68,0x01,0xad, |
0x2a,0x97,0xa4,0x85,0x4d,0x50,0x03,0x12, |
0x37,0x70,0xa1,0x62,0x65,0xf9,0x04,0xa9, |
0xdb,0x0f,0xbf,0x8a,0xbe,0xf8,0x03,0x81, |
0x2f,0xd0,0x82,0x77,0xdb,0xa3,0x4d,0x53, |
0xa7,0xf5,0xdb,0x26,0x9a,0x52,0xbf,0xe9, |
0xa3,0xbe,0xea,0x1b,0xbf,0x5a,0xd0,0x87, |
0x2d,0xa8,0xc0,0x2d,0x88,0x86,0x3a,0x18, |
0x80,0x1f,0xf8,0x81,0x49,0x08,0x06,0x5d, |
0xc3,0xb4,0x7f,0x40,0x3d,0x12,0xa8,0xb1, |
0x07,0x2c,0xb0,0x28,0xba,0x3f,0x12,0x7b, |
0xa7,0x1a,0x20,0x83,0x44,0x8b,0xae,0x85, |
0x43,0x85,0xeb,0xd2,0xb1,0x12,0xeb,0x87, |
0x47,0xaa,0x01,0x42,0xd3,0x3f,0x9e,0x72, |
0x3d,0x1b,0xf8,0xc0,0x68,0x52,0x24,0x9f, |
0x6a,0x33,0xce,0xdb,0xb6,0x1a,0xb0,0x2a, |
0xae,0xdb,0xa7,0x2b,0x99,0x2d,0x81,0x0a, |
0x2e,0x13,0x78,0xa4,0x79,0x63,0xbb,0x08, |
0x9c,0xb6,0x96,0xc3,0x81,0x03,0xc0,0x01, |
0x38,0x38,0x80,0x03,0x80,0x03,0x1c,0xd8, |
0x04,0x45,0xd8,0x82,0x3a,0x68,0x05,0x74, |
0x70,0xb7,0x48,0x12,0x3a,0xc1,0xfa,0x02, |
0x25,0x8a,0xb0,0xb2,0x0a,0x43,0x58,0x7a, |
0xa7,0x78,0x4a,0x24,0x1a,0x78,0xa4,0xff, |
0x6d,0x82,0x23,0x36,0x03,0xaf,0x98,0xb2, |
0xb0,0x02,0x7c,0xc3,0x1d,0xc3,0x2c,0xfc, |
0xdb,0xba,0x02,0x23,0x81,0x1c,0xcb,0xa3, |
0xe8,0x2a,0x28,0x00,0x0c,0x01,0x61,0x83, |
0xa4,0x3d,0xf2,0xa5,0x4e,0xe2,0xb7,0xf1, |
0x92,0x24,0x38,0x12,0x2d,0xd0,0x42,0xb3, |
0xdc,0xb3,0xa5,0x7e,0xb8,0x41,0x81,0x7b, |
0x42,0x36,0xda,0x2a,0x3b,0x32,0x80,0x29, |
0xc4,0x01,0x4d,0x9c,0x42,0x4e,0xb4,0x42, |
0x77,0xb0,0x03,0x7d,0x40,0x87,0x73,0xe0, |
0x41,0x36,0xa2,0xa7,0x88,0x43,0xb0,0x37, |
0x0c,0xbd,0xe9,0xea,0x00,0x10,0x88,0x44, |
0x3d,0x62,0xa5,0xa9,0xe2,0x23,0xb8,0x5b, |
0xa5,0x3d,0x43,0x31,0x98,0xaa,0xac,0x94, |
0x82,0x04,0xdf,0xf2,0x28,0x54,0x80,0x30, |
0x13,0xa8,0xb8,0x5a,0x28,0xac,0xe3,0xca, |
0x35,0xae,0xa2,0x34,0x03,0x98,0x27,0x1e, |
0xeb,0x87,0x4b,0x83,0xbe,0xde,0x22,0x81, |
0x97,0x0a,0xc3,0xec,0x22,0xb0,0xf5,0xda, |
0x39,0x4a,0x4c,0xb9,0x6a,0xcb,0x44,0x4d, |
0xdc,0x44,0x29,0xdc,0x44,0x2b,0x3c,0x80, |
0x72,0xd0,0x07,0xc6,0x2b,0xc1,0x02,0x33, |
0x01,0x75,0xda,0xb8,0x73,0x43,0x45,0x54, |
0xa8,0x05,0xac,0xe2,0xc3,0x73,0xd3,0xb1, |
0x28,0x22,0x40,0x1a,0xe0,0x26,0x95,0x63, |
0x24,0xed,0xb2,0xc5,0xc6,0xc3,0x26,0x6d, |
0xb3,0xa0,0x8a,0x2a,0x2a,0x05,0x24,0x01, |
0xdd,0x3a,0x47,0x45,0xb4,0x2c,0x8b,0x9a, |
0x28,0x7a,0x3a,0xb6,0x7c,0x52,0x24,0x7f, |
0xfc,0x02,0x36,0x73,0x35,0x45,0x7a,0x27, |
0x97,0x13,0xc7,0x93,0xa2,0xc6,0x6a,0x94, |
0x37,0x54,0x58,0x04,0x6c,0xcc,0xc6,0xff, |
0x6c,0xcc,0xc4,0x4e,0x74,0x07,0x39,0xa8, |
0x81,0xa0,0x82,0xc8,0x0c,0xc0,0x83,0xe2, |
0x13,0xab,0xe6,0xd3,0x02,0x2d,0x80,0x83, |
0xf9,0xaa,0x3b,0x10,0x38,0xb7,0xaf,0x83, |
0x23,0x54,0x00,0x81,0x95,0xba,0x45,0x45, |
0x04,0x27,0x1b,0xc4,0x27,0x19,0xab,0x30, |
0x72,0xb2,0x20,0x1e,0x3b,0x01,0x38,0xa8, |
0xb4,0x31,0x63,0xa7,0x59,0xcc,0xc1,0x57, |
0x7b,0x3e,0x70,0xe2,0xc3,0x5a,0xd0,0x83, |
0x56,0x63,0xb4,0x8a,0x3a,0x81,0x56,0x43, |
0x2b,0x78,0xd2,0x82,0x7b,0x9b,0xc6,0x89, |
0xbc,0x20,0xbe,0x7b,0x01,0x1c,0x70,0x07, |
0x8c,0xcc,0xca,0x6d,0xb4,0x42,0x29,0x3c, |
0x00,0x50,0x34,0x01,0xb4,0x72,0x26,0xb1, |
0xc4,0xae,0xc1,0xaa,0x85,0x2f,0x58,0x3c, |
0x85,0x0c,0xb9,0x62,0xd4,0x3f,0x29,0x73, |
0x37,0x94,0xaa,0xb0,0x1a,0x38,0xc6,0x99, |
0x8a,0x26,0xed,0xda,0xa8,0x84,0x4b,0x39, |
0x46,0x5a,0xa7,0x2f,0x38,0x3c,0xf3,0xe2, |
0xae,0x7f,0x32,0x49,0x3d,0x9c,0xb1,0xb3, |
0x53,0x47,0xdf,0x7a,0x27,0x9e,0xdc,0x27, |
0x8e,0x3b,0x3b,0xc0,0x02,0x31,0x89,0xac, |
0x46,0x06,0xac,0x85,0x03,0xb0,0x4a,0xad, |
0xcc,0x4a,0x4e,0xdc,0x4a,0x1c,0x90,0x03, |
0x10,0x68,0xc1,0xf7,0xe2,0x2e,0xbc,0xbb, |
0xa5,0xce,0x53,0xc4,0xec,0x72,0x43,0x19, |
0x3b,0x27,0xc4,0x42,0x05,0xfa,0xb3,0x44, |
0x54,0x48,0xb3,0x70,0xd2,0x82,0x3f,0x24, |
0x29,0x0b,0x0b,0x3b,0x3d,0xa4,0xbf,0x7d, |
0xfc,0xad,0x3f,0xca,0x23,0xa5,0x7a,0x36, |
0x4f,0x98,0xa7,0x15,0xba,0xaa,0x3e,0xb2, |
0xb2,0xc6,0x9c,0xc8,0x74,0x30,0x81,0xff, |
0xc8,0x9c,0xcc,0xc9,0xac,0xcc,0x6e,0x34, |
0x80,0x45,0xf8,0x48,0xd5,0x82,0xc8,0xf3, |
0xcb,0x00,0x13,0x30,0x00,0x77,0x0a,0x48, |
0xba,0xf4,0x84,0x20,0x88,0x45,0x9e,0xf2, |
0x2a,0xa8,0xfc,0x2a,0x73,0xc3,0x33,0xd3, |
0x7a,0x28,0x86,0x33,0xbd,0x24,0xc3,0xaa, |
0xe8,0x74,0xa3,0xa5,0x2c,0xb5,0x89,0xfa, |
0x3a,0xc6,0x9c,0x4a,0x9d,0xbc,0x46,0xab, |
0x94,0x4c,0xe2,0xcc,0x48,0x8c,0xb4,0xc2, |
0x17,0x58,0x04,0x13,0xc0,0xb7,0xd7,0x12, |
0x36,0xda,0xe2,0xcc,0x67,0x1b,0xad,0x10, |
0x38,0xb6,0x21,0x04,0x4d,0x13,0x68,0x3e, |
0x38,0x58,0x49,0xf7,0xc2,0xc5,0x5a,0x78, |
0x81,0x74,0xe8,0x87,0x62,0xc0,0x05,0xfb, |
0x7c,0x27,0x56,0x34,0xc0,0xb4,0x22,0x4f, |
0x3e,0x24,0xca,0x0d,0x73,0xb6,0x0f,0xfb, |
0x4d,0x4a,0xa4,0x34,0x10,0x18,0x4e,0xf7, |
0x7c,0x4f,0xcb,0x9c,0xc2,0xc5,0xc1,0x81, |
0xa2,0x0a,0x4b,0xfb,0x34,0xa9,0x77,0xe2, |
0x31,0xb4,0x63,0x20,0xfd,0xb4,0x2f,0x9f, |
0x82,0xc9,0x2b,0xa0,0x41,0x04,0x5c,0x42, |
0x6a,0x3a,0xd1,0xb5,0xbb,0x3b,0x56,0x52, |
0x47,0x2d,0xc8,0x07,0x94,0xc3,0x03,0xb3, |
0xb3,0x28,0x5d,0x1b,0xbe,0x09,0x32,0xcd, |
0x30,0x54,0x39,0x3f,0xd2,0xcf,0x49,0x54, |
0xcf,0x37,0x0a,0x24,0x8b,0x6c,0x4f,0x0f, |
0x85,0x4f,0xe3,0xdc,0xc6,0x21,0xfb,0x02, |
0x7c,0x03,0xd2,0xbb,0x1a,0xb6,0x7f,0xa0, |
0x01,0xce,0x93,0x2e,0xb6,0x0c,0xa7,0x43, |
0x62,0x1a,0x9b,0x32,0x00,0x14,0xe5,0xbd, |
0xa8,0x74,0x3c,0x1e,0x83,0x83,0xf0,0xd2, |
0xbc,0x98,0x62,0xa5,0xef,0x02,0xca,0xff, |
0xf1,0x6b,0x3b,0x0c,0x8d,0x40,0x3e,0x5a, |
0x04,0x4d,0x64,0xd2,0x0e,0x25,0xce,0x27, |
0xed,0xc6,0xf9,0x94,0x3e,0x2a,0xc5,0xb4, |
0xd4,0x7c,0x1c,0x38,0x48,0x41,0x15,0x5d, |
0xa5,0x78,0xf2,0xad,0x13,0x08,0x22,0x1a, |
0x78,0x3d,0x38,0x88,0xbe,0xfb,0x0b,0x4c, |
0x1c,0xcc,0xbb,0x3d,0x03,0x81,0x74,0x88, |
0x2e,0x94,0x4a,0x27,0x76,0xda,0x53,0x24, |
0x65,0xa0,0x37,0x85,0xd3,0x7f,0x90,0x53, |
0x3a,0x6d,0x52,0xca,0xdc,0xc6,0x4d,0x7c, |
0x01,0x43,0x2b,0xd2,0x64,0x72,0xce,0x44, |
0x12,0xbc,0xdc,0xcc,0x27,0x6e,0xa2,0xa9, |
0x7e,0xa8,0x01,0x24,0xaa,0x4e,0xb9,0x9a, |
0xbc,0x1b,0x33,0xbf,0x09,0xd2,0x03,0x4a, |
0x62,0xa9,0x7e,0x78,0xc3,0x67,0x5a,0x28, |
0xc0,0x5c,0xbd,0x4b,0xc5,0xd4,0x5f,0x85, |
0x20,0x84,0x5a,0x52,0x1c,0xe8,0x54,0x4f, |
0xfd,0xd4,0xae,0x04,0xa3,0x05,0x2c,0xd5, |
0x1e,0x9a,0x2e,0x67,0x84,0x84,0x6b,0xd2, |
0x23,0x3d,0x58,0x42,0x21,0xba,0xa9,0x2b, |
0x28,0x35,0x1b,0x54,0x24,0x18,0xb4,0xd4, |
0x55,0xf2,0x25,0xbf,0xf2,0x2d,0x85,0x8a, |
0xae,0xeb,0x4c,0x46,0x46,0x95,0x37,0xe6, |
0x1c,0xb8,0x4c,0x85,0x53,0x10,0x28,0x56, |
0x76,0x65,0xd7,0x3a,0x3d,0x56,0x6e,0x2c, |
0x56,0x56,0x2b,0x57,0xaa,0x44,0x05,0x0a, |
0x03,0x3b,0x10,0x08,0x82,0xe7,0x92,0xb8, |
0x99,0xeb,0xa4,0x2f,0xc8,0x36,0x2e,0x0b, |
0x24,0x56,0x63,0x40,0x03,0xd8,0x45,0xc7, |
0x53,0xb2,0xc2,0x62,0x4a,0xda,0xec,0x3a, |
0x87,0xb2,0xb5,0x06,0xe2,0x03,0xf1,0xcb, |
0x87,0x47,0x30,0x85,0x64,0x70,0xa7,0xff, |
0x73,0xbd,0xb2,0x74,0xe5,0x29,0x04,0x44, |
0xc5,0xd1,0x63,0x40,0xd1,0x3b,0x51,0x4a, |
0x0b,0x59,0x81,0xf2,0xd5,0x37,0x72,0xce, |
0xc8,0x7c,0x01,0x94,0x75,0xd7,0x76,0x85, |
0x57,0x6d,0x94,0x4f,0xfa,0xa4,0x2d,0x39, |
0x4a,0xa9,0x79,0xb2,0x39,0x13,0xf0,0xab, |
0x87,0x52,0x2a,0x3d,0xf0,0x19,0x1e,0x1b, |
0x3d,0x54,0x30,0xd3,0x7f,0x72,0xb9,0xa7, |
0x9a,0xc7,0x1b,0x23,0x81,0x60,0x3c,0x2c, |
0x20,0xd3,0xb1,0xfd,0x32,0xbf,0xd4,0x0a, |
0x3f,0x53,0x98,0x04,0x67,0x78,0xda,0x01, |
0x88,0x5a,0x51,0xf0,0x05,0x53,0x10,0xbe, |
0x08,0x4c,0x57,0x3e,0x1a,0xac,0x47,0xad, |
0x81,0x73,0xb0,0xa4,0x73,0xca,0xa6,0x73, |
0xa0,0x01,0xb1,0x1d,0xdb,0xb0,0x0d,0x5b, |
0x1a,0xe0,0x03,0x92,0x2d,0xd9,0x2f,0x40, |
0x59,0xb6,0x55,0x59,0x77,0x7d,0x01,0x77, |
0x78,0x57,0x4f,0x1d,0xd1,0xcf,0x94,0x20, |
0x54,0x08,0xd0,0x0a,0x45,0x81,0x5e,0x3c, |
0x3a,0x04,0xa3,0x2f,0x5c,0xe8,0xb2,0xec, |
0xda,0xbb,0xe0,0xaa,0x01,0x38,0x28,0xcc, |
0x3e,0x6a,0x24,0x94,0xac,0xb6,0xde,0x8a, |
0xbe,0xc0,0x7c,0xa7,0x7e,0x70,0x38,0x3e, |
0xc0,0x85,0x7c,0x70,0x5a,0x67,0x58,0x03, |
0x1e,0x50,0x04,0x5d,0x88,0x03,0xcd,0xbd, |
0x00,0x5d,0x70,0x05,0x10,0x00,0x4f,0x9e, |
0x4b,0x57,0x5b,0xc2,0x83,0xfb,0xa2,0x00, |
0xd3,0xdd,0x14,0x5e,0x30,0x85,0x5b,0x05, |
0x35,0xd6,0xbd,0x02,0xd7,0x65,0xdd,0xbe, |
0xd9,0x87,0x12,0xb5,0xad,0x8a,0x2c,0xd6, |
0xb6,0x6d,0xcf,0xf6,0xbc,0x80,0x03,0xd0, |
0x5d,0xb9,0xf5,0xd0,0xb8,0xcd,0xcc,0xff, |
0x08,0xbd,0x20,0x87,0x02,0xa2,0x20,0x28, |
0x86,0x51,0x5a,0xa8,0x0c,0x78,0x1c,0x41, |
0x03,0x81,0xde,0x82,0xa9,0xe8,0xd2,0x83, |
0x75,0xd2,0xd5,0xbc,0x32,0x00,0x48,0x18, |
0xc2,0x2f,0x58,0xc2,0xcc,0xca,0x23,0xdd, |
0xc2,0x82,0x01,0xd5,0xc3,0xd1,0x1b,0x4a, |
0x80,0x33,0x85,0x1f,0xb0,0x00,0xcb,0xdd, |
0x82,0x0b,0xb8,0x80,0xcd,0x3d,0x5f,0xf4, |
0x45,0x5f,0x39,0xac,0x3e,0xac,0x65,0x33, |
0x0a,0x38,0x86,0x18,0xc8,0x82,0x2c,0x38, |
0x05,0xd3,0x65,0x02,0x5b,0xc0,0x82,0x38, |
0x78,0x87,0x78,0xe8,0xdf,0x78,0x30,0xdd, |
0x3b,0xf0,0xdf,0x77,0x88,0x81,0x14,0x68, |
0x21,0x66,0x5a,0x57,0xb6,0xed,0xd4,0x17, |
0x38,0x00,0x1f,0x23,0x03,0x50,0x68,0x82, |
0xde,0xf5,0xd0,0xf9,0xa4,0x55,0xe1,0xad, |
0x81,0x63,0x88,0x5f,0x67,0xd8,0x07,0xa2, |
0xdb,0x23,0x31,0x83,0x04,0x47,0x8c,0x3d, |
0x03,0xb8,0xb0,0x21,0x5d,0xa5,0x7f,0x40, |
0x31,0x3e,0x43,0xc4,0x9e,0xa2,0x25,0xe7, |
0x2c,0x2f,0x74,0x94,0x38,0xce,0xc3,0x05, |
0xf1,0x25,0xdf,0x68,0xd0,0x85,0xf5,0x55, |
0xdf,0x1a,0x3e,0xdf,0x38,0xe0,0xbc,0xab, |
0xa5,0xa3,0x74,0x88,0x03,0x0a,0x38,0x02, |
0x30,0x68,0x04,0x21,0x4e,0x01,0x67,0xd8, |
0x06,0x0a,0xc8,0x85,0x04,0x30,0x85,0x66, |
0x10,0xe2,0x46,0x00,0x03,0x23,0xf6,0x82, |
0x06,0x68,0x62,0x21,0xf6,0x03,0x0f,0x74, |
0x3c,0x95,0xe3,0xae,0x30,0x74,0x4e,0xdb, |
0x4d,0xe0,0x04,0x66,0x60,0xd3,0xfd,0x80, |
0x01,0x88,0xe0,0xab,0x24,0xce,0x17,0x90, |
0xcb,0x99,0x42,0xc3,0x8e,0xc2,0x05,0xff, |
0x40,0x20,0x03,0x0a,0x78,0x07,0x22,0xf0, |
0x05,0x14,0x28,0xbd,0x82,0x3a,0x01,0xcb, |
0x0b,0x2a,0xd4,0x43,0x2c,0xf7,0xa2,0xbf, |
0x12,0x43,0xb0,0x2e,0xdb,0xa3,0x13,0xe8, |
0xc3,0x41,0xd3,0x2e,0xed,0x32,0x01,0x3d, |
0x80,0xe1,0xf1,0x5d,0x83,0x68,0x60,0x85, |
0xf4,0xb5,0x61,0x46,0x46,0x5f,0x1d,0x76, |
0xdf,0x63,0x3a,0x87,0x20,0xa0,0x80,0x35, |
0x68,0x84,0x04,0x38,0x84,0x64,0x38,0x04, |
0x0f,0x18,0x83,0x1f,0xf6,0x80,0x47,0xd8, |
0x87,0x04,0x08,0xe5,0x49,0x10,0x01,0x0a, |
0xe0,0x00,0x3f,0x08,0xe5,0x50,0x7e,0x84, |
0x9c,0x9b,0x2e,0x2c,0x48,0xb5,0x2e,0x5b, |
0x28,0x1a,0x78,0xb5,0x04,0x36,0x00,0x39, |
0x68,0x25,0xeb,0x21,0x65,0x0a,0xf0,0x01, |
0x67,0x30,0x80,0x39,0x2d,0xd6,0x45,0x90, |
0x83,0x5f,0xee,0x50,0x94,0xb5,0x83,0xf6, |
0x04,0xe6,0x2c,0xe5,0xaa,0x1c,0xac,0xa4, |
0x3c,0x5a,0x41,0x0a,0xb8,0x03,0x0b,0x68, |
0x02,0xf9,0x43,0xb0,0x56,0x1e,0xc2,0x6a, |
0x12,0x28,0x1e,0xa3,0x5e,0xc2,0x8b,0x37, |
0xff,0xab,0x01,0x24,0xd4,0x27,0x75,0xc4, |
0x3f,0x7f,0x32,0x64,0x19,0xce,0x86,0x45, |
0x6e,0x64,0x46,0x8e,0x83,0xa3,0x0d,0x5d, |
0x2f,0x43,0x07,0x52,0xb6,0x00,0x0f,0xd0, |
0x03,0x78,0x66,0x24,0x5f,0x70,0x84,0x39, |
0x68,0x86,0x43,0xf8,0xb6,0x0e,0xc0,0x05, |
0x1a,0x60,0x63,0x77,0x3e,0xa7,0x6f,0xd3, |
0x66,0x90,0xaa,0x37,0x12,0xf0,0xab,0x38, |
0x40,0x87,0x43,0x08,0xb8,0x0e,0xd0,0x02, |
0x76,0xf0,0x19,0x52,0x40,0xd9,0x7e,0x68, |
0xaa,0x10,0xe0,0x85,0xc7,0x31,0x62,0xff, |
0x0a,0x88,0x01,0x24,0xe0,0x05,0x3b,0x88, |
0xdb,0x72,0xb0,0x81,0xd5,0xe8,0x2b,0x5d, |
0x90,0x83,0x39,0xed,0x19,0x86,0x8e,0x03, |
0x17,0xf0,0x04,0x17,0xc8,0x06,0xd5,0x2d, |
0xab,0xc1,0x02,0xbe,0x13,0xc8,0x06,0x74, |
0x40,0x07,0x36,0xbe,0x83,0x66,0x68,0x05, |
0x73,0x83,0x3a,0xd9,0xb2,0x81,0x62,0xa8, |
0x66,0x15,0xcd,0xa3,0x63,0x14,0xa1,0x5c, |
0x9b,0x3e,0x3b,0x5a,0xbf,0x2c,0x46,0x30, |
0x71,0x46,0x64,0x72,0x8e,0x03,0x73,0x4e, |
0xea,0xf3,0xf5,0xa7,0x8b,0x55,0xaf,0x4c, |
0xcd,0x00,0x53,0x98,0x64,0x4c,0x48,0x80, |
0x54,0x1b,0x3d,0x3d,0x78,0x04,0x3f,0x68, |
0x04,0x2a,0x96,0x54,0x3b,0xe2,0x67,0x0f, |
0xd8,0x2a,0xae,0x8e,0xa6,0x9a,0x62,0xe3, |
0xd3,0xdd,0x86,0x6e,0xd0,0x60,0x14,0xe0, |
0x05,0xd3,0x3d,0x86,0x5c,0x68,0x85,0x17, |
0xb8,0x02,0xd3,0x3d,0x82,0x35,0x70,0x84, |
0xd3,0x3d,0x5d,0x7a,0x18,0x00,0x52,0x80, |
0x03,0xf3,0xa9,0xeb,0x6d,0xc0,0x04,0x27, |
0x10,0x51,0x5a,0xa3,0x00,0x7a,0xc0,0x84, |
0xba,0xa6,0x00,0x71,0x98,0x04,0x77,0xa2, |
0x27,0xb8,0x3e,0x5d,0x11,0xc8,0x04,0x23, |
0x76,0x04,0x22,0x68,0x02,0x5c,0xb0,0x01, |
0xb2,0x66,0x6c,0x50,0xd8,0x87,0x84,0xa2, |
0x27,0xac,0x82,0x04,0x8b,0x62,0x53,0x82, |
0x0a,0xc3,0x80,0x1b,0xbd,0xa2,0x8e,0x86, |
0xa3,0x56,0xea,0xa4,0x8e,0x83,0x45,0xe8, |
0x3f,0x37,0xa5,0xa3,0x43,0xc8,0x84,0xf8, |
0xbd,0x82,0x70,0x00,0x84,0x60,0x48,0xb5, |
0x74,0x78,0x84,0x04,0x90,0xdd,0x12,0x4b, |
0x87,0x7d,0x3e,0x86,0x7e,0xb6,0xa0,0xff, |
0x74,0x38,0x01,0xbb,0x9e,0x83,0xd3,0x45, |
0xe2,0x0e,0xd8,0x07,0x26,0x30,0xdd,0x78, |
0x18,0x80,0x24,0x58,0x6b,0x1f,0xe0,0x00, |
0x26,0x38,0x02,0x7e,0x40,0xee,0x39,0x18, |
0x04,0x0e,0x20,0x85,0xc5,0x3e,0x06,0x7a, |
0x38,0x82,0xd3,0x7d,0xe0,0x72,0x08,0x6c, |
0x23,0xbe,0x83,0x39,0xb8,0x60,0xd3,0xe5, |
0x01,0x5f,0xe0,0xb1,0x49,0x36,0xdd,0x39, |
0x08,0xef,0xd3,0xfd,0x05,0x22,0x48,0x00, |
0x48,0x30,0xdd,0x6d,0x88,0x81,0x41,0xb0, |
0xdf,0xf8,0xfd,0x81,0x7d,0x10,0xd7,0x55, |
0xe2,0xbd,0x21,0x44,0xb1,0xc3,0x22,0xc5, |
0x12,0x4b,0x2d,0xd5,0x52,0xa8,0xc8,0x8d, |
0x61,0x44,0x56,0x64,0xd3,0x36,0xed,0x1c, |
0x36,0xc3,0xcf,0xc3,0xda,0x04,0xc8,0x85, |
0x3b,0x30,0x5d,0x32,0xb8,0x92,0x72,0x40, |
0x07,0x4b,0x42,0x05,0xae,0xee,0x6a,0x0a, |
0x70,0x67,0x03,0x86,0xa0,0xe0,0xaa,0xb3, |
0x1f,0x06,0x83,0x06,0x48,0x01,0x1e,0x80, |
0x6f,0xfb,0x4e,0x07,0x5f,0xa0,0xe8,0x53, |
0xa0,0x6b,0x0a,0xc8,0x82,0x25,0x88,0x86, |
0x2d,0x98,0x6b,0xd3,0x95,0x02,0x30,0xb0, |
0x80,0x01,0x68,0x03,0xf4,0xf6,0x82,0x19, |
0x47,0x82,0x0b,0x4e,0x6e,0x52,0x08,0x6c, |
0x0a,0x90,0x80,0x25,0xf0,0x02,0x22,0xa0, |
0xe8,0x18,0x70,0x86,0x70,0x32,0x5d,0x7e, |
0xf0,0x81,0x28,0x1e,0x00,0x15,0x67,0xef, |
0x04,0xd0,0x94,0x15,0x67,0x83,0x46,0x48, |
0x01,0x4c,0xb8,0xe0,0x2c,0xf0,0x03,0x3e, |
0x58,0xce,0x28,0xfa,0xce,0x77,0xfa,0x07, |
0x75,0x6a,0x47,0x0e,0x1b,0xbb,0x7f,0x18, |
0xf0,0x43,0x4e,0xe4,0x72,0x3e,0x70,0xff, |
0xf5,0x45,0xea,0xa5,0x9e,0x5d,0x82,0x13, |
0xdd,0x60,0xf0,0x80,0x66,0x20,0x82,0x53, |
0x88,0x07,0xf1,0xde,0x86,0x10,0xc8,0xdf, |
0x98,0xd3,0x6d,0x36,0xe6,0x80,0x77,0x76, |
0x3c,0x5b,0xd2,0x14,0x32,0xf0,0x81,0x46, |
0xf0,0x80,0x7d,0xf0,0x00,0x71,0x18,0xef, |
0x77,0x3e,0x04,0x45,0x28,0x6c,0x78,0x58, |
0x82,0x01,0x28,0x07,0x03,0x70,0x05,0x5c, |
0xf6,0x01,0x0b,0x20,0x05,0x77,0x98,0xe4, |
0x63,0xf0,0x01,0x30,0x88,0x06,0x27,0x88, |
0x86,0x32,0x30,0xdd,0x2c,0x10,0x05,0xef, |
0xf6,0x02,0x0e,0x68,0x85,0x56,0x38,0x6e, |
0x0a,0x38,0x05,0x0e,0x90,0x03,0x5c,0x26, |
0x82,0x06,0x20,0xf4,0x04,0xd8,0x02,0xd3, |
0x75,0xe3,0x27,0x37,0xdd,0x53,0xf8,0x01, |
0x53,0x38,0x84,0x56,0xc8,0x82,0x0f,0x30, |
0x65,0xaf,0xab,0xa8,0x48,0xfc,0xba,0x94, |
0xa2,0x38,0xda,0x2c,0xc6,0xf0,0x2d,0x73, |
0x72,0xb6,0x61,0x55,0x71,0x01,0x9f,0x41, |
0x73,0x1c,0x7e,0x01,0x80,0x5e,0xed,0xb9, |
0x2b,0x6e,0x3f,0x48,0x81,0x46,0xb0,0x00, |
0x1e,0xa0,0xef,0x32,0x40,0xec,0x55,0xdd, |
0xe7,0x0c,0xff,0xea,0x3a,0xea,0x31,0xd3, |
0x8d,0x01,0x4c,0xf0,0xab,0x42,0x1d,0x77, |
0x2a,0xce,0x80,0x7d,0x20,0x6c,0xe4,0x26, |
0x75,0x52,0x80,0x84,0x05,0x6e,0x75,0x67, |
0x80,0x84,0x0b,0x58,0x6b,0x09,0x10,0x07, |
0xd7,0xf5,0x04,0x5c,0x2e,0xf2,0xc0,0x06, |
0xe2,0x26,0x80,0x03,0x39,0x00,0xee,0x54, |
0x07,0x83,0x6c,0x60,0xe3,0x63,0x00,0x83, |
0x14,0x48,0x86,0xe8,0x2a,0x86,0x98,0x5e, |
0x83,0x56,0xc8,0x86,0xba,0x0e,0x82,0xff, |
0x92,0xc6,0x84,0x18,0x68,0x85,0xfb,0x4e, |
0xa9,0x41,0x0e,0x5a,0xc8,0xe2,0xe6,0xc7, |
0x02,0x29,0x3e,0x20,0x70,0x1e,0x50,0x64, |
0x35,0x3f,0x80,0x10,0x30,0x69,0x1b,0x40, |
0x6a,0xa2,0x71,0xf6,0x1c,0x46,0xcf,0x05, |
0x67,0x26,0x69,0xed,0x80,0x7c,0x28,0xf4, |
0x6a,0x1f,0x80,0x07,0x1f,0x83,0x04,0x78, |
0xaf,0x64,0xf0,0x76,0x3e,0x37,0xd2,0x06, |
0x0a,0xce,0xca,0x2e,0x6c,0xd3,0x95,0x80, |
0x84,0xd7,0x03,0x2c,0x70,0x82,0xd3,0x95, |
0x80,0x4d,0x87,0xf7,0x78,0x8f,0x5f,0x22, |
0xd8,0x65,0x1f,0x06,0xfa,0xba,0x96,0x80, |
0x66,0xe8,0xf7,0xea,0x86,0x04,0x39,0x58, |
0x92,0x81,0xef,0x06,0x00,0xf6,0x82,0x77, |
0x86,0xa3,0x73,0x20,0xe5,0x77,0x68,0x86, |
0x62,0x50,0x84,0x5c,0x50,0xf1,0xd3,0x3d, |
0x86,0x20,0xc0,0x04,0x8e,0xc3,0x3c,0x7c, |
0xe2,0xb7,0xb1,0x8b,0xb2,0x60,0x74,0xb8, |
0x40,0x2a,0xea,0x90,0x57,0x73,0x1c,0x36, |
0xac,0x4d,0x50,0xdf,0x66,0x3f,0xf0,0x38, |
0x70,0x07,0xd3,0x14,0x73,0x69,0x27,0x4f, |
0xde,0x52,0x84,0xfb,0x86,0xe7,0x73,0x4a, |
0x06,0x0f,0x00,0x85,0x54,0xf7,0x03,0xcf, |
0xf2,0x6a,0x2a,0x45,0x01,0x76,0x06,0x75, |
0x22,0x98,0x7c,0xca,0x27,0x02,0x0b,0x28, |
0x60,0xf3,0xae,0x6b,0x24,0x10,0x85,0xb6, |
0xc5,0x65,0x29,0x98,0xf7,0x38,0xb8,0x60, |
0x7e,0xe0,0x75,0xfa,0xfd,0x00,0xd2,0xd7, |
0x65,0x1b,0xff,0x61,0x0e,0x50,0x84,0x17, |
0x08,0x78,0x5b,0x07,0x83,0x6e,0x60,0x63, |
0x7e,0xb0,0x80,0x1f,0x70,0xb7,0x5a,0xf8, |
0xee,0x66,0x48,0x00,0x13,0x68,0x85,0xff, |
0x01,0x20,0x02,0x24,0x80,0x07,0xb3,0xc7, |
0x04,0x51,0xb8,0x38,0x52,0x1b,0x58,0x23, |
0x65,0x24,0x4f,0xeb,0x87,0x42,0x06,0xf9, |
0x4d,0xb0,0xfb,0xf3,0x2d,0xd4,0x13,0x68, |
0xe4,0x10,0x70,0xfe,0x46,0x46,0xea,0x1c, |
0xbe,0x25,0x4a,0xcc,0x54,0x14,0xf0,0x61, |
0x4c,0xf0,0x03,0x67,0x33,0x7c,0x2c,0x60, |
0x07,0xc1,0xc6,0x7c,0x5b,0xd2,0xf9,0x3e, |
0x4f,0xd2,0x47,0xc0,0x74,0x0b,0xd0,0x6a, |
0x3f,0x68,0xff,0x1f,0xf0,0x83,0x1f,0x48, |
0x00,0x46,0xf2,0x71,0xd3,0xfd,0x05,0x1e, |
0x70,0x02,0x94,0xf5,0x62,0x0a,0x68,0xfa, |
0x72,0x00,0x08,0x77,0x22,0x28,0xf0,0xf3, |
0xc1,0xc1,0xd9,0x00,0x84,0x03,0x78,0x0c, |
0x68,0x15,0x82,0x02,0x85,0x23,0x1c,0x48, |
0xc1,0x59,0xe4,0x02,0x22,0x3c,0x30,0xae, |
0x06,0x52,0xc8,0x32,0x00,0x04,0x2a,0x2c, |
0x5a,0x20,0xbe,0x6b,0x96,0x00,0x44,0xb9, |
0x6e,0xaf,0x7e,0xa4,0xe0,0x80,0x09,0xe2, |
0x91,0x14,0x8f,0x50,0xa0,0xc8,0x90,0xc1, |
0x84,0x16,0x14,0xff,0x76,0xf2,0xfc,0xd7, |
0x21,0x03,0x0a,0x2d,0x71,0x7e,0x58,0x58, |
0x53,0x47,0x15,0x89,0x0b,0x4a,0x2f,0x1c, |
0x08,0x11,0xc4,0x53,0x9c,0xa5,0x52,0x4f, |
0x48,0xad,0xba,0x34,0x8e,0x1c,0x3d,0x19, |
0x7a,0x72,0xed,0xea,0xf5,0x2b,0xd8,0xb0, |
0x3b,0xe1,0x88,0xe5,0x8a,0x02,0x10,0x85, |
0x63,0x03,0xf6,0xa1,0xd0,0xfa,0x0f,0x45, |
0x3a,0x4f,0x1d,0x53,0x74,0xd8,0x99,0x81, |
0x06,0x19,0x0a,0x16,0x3c,0xd4,0xed,0x5a, |
0x17,0x0b,0x2f,0x88,0xa7,0x3c,0xcc,0xa4, |
0x71,0x02,0xe2,0x98,0x04,0x41,0x21,0xff, |
0x52,0xf0,0x71,0x0a,0xe2,0x9c,0x3a,0x72, |
0x5e,0x08,0x84,0x98,0xc5,0xd9,0x0b,0x39, |
0x17,0x29,0x9c,0x1a,0x60,0xc0,0xc0,0x81, |
0x20,0x10,0x73,0x39,0x84,0xc9,0x41,0xd1, |
0x0b,0x03,0x9b,0x4f,0x81,0x21,0x25,0x97, |
0x42,0x3c,0x1e,0x4d,0x40,0x98,0xb8,0x02, |
0xf1,0x8e,0xc9,0xbc,0x64,0x5a,0x25,0x38, |
0x94,0xa0,0x09,0xe4,0x46,0xfb,0x3a,0x10, |
0xcf,0x80,0x0a,0x8e,0xce,0x9e,0xc4,0xf9, |
0xe0,0xca,0x37,0x89,0xc8,0x87,0x2c,0x3d, |
0x30,0xf5,0x93,0x1a,0xe7,0xca,0x95,0x10, |
0x07,0xac,0x5e,0x88,0x13,0x82,0xbb,0xf5, |
0x0b,0xb5,0x92,0x97,0x2d,0x6f,0x5e,0x2c, |
0xd9,0xf3,0x1d,0x1e,0xb5,0xa1,0xb0,0x2d, |
0x93,0xa9,0x64,0xe9,0xb0,0x98,0x78,0xf8, |
0x0e,0x0c,0x5f,0x3d,0xff,0xd2,0xe1,0xa5, |
0xc0,0xc1,0x83,0x7e,0x5e,0x11,0x67,0x8b, |
0x23,0x10,0x39,0x12,0x82,0x53,0x82,0x35, |
0xe2,0xc1,0x17,0xa2,0x51,0x80,0x04,0x1b, |
0x3c,0xe4,0x45,0x41,0x0c,0xa2,0xbc,0x50, |
0x0e,0x47,0xdb,0xcc,0x21,0x4e,0x2b,0x8a, |
0x6c,0x63,0xa0,0x0b,0x9e,0x70,0x24,0x01, |
0x18,0xa5,0x45,0x34,0x11,0x24,0x72,0x1c, |
0x46,0x01,0x3d,0xad,0x75,0xc3,0x0f,0x44, |
0xdb,0x30,0x21,0x22,0x63,0x25,0x25,0xf0, |
0x10,0x05,0x8e,0x64,0xb2,0x48,0x3f,0x1c, |
0x65,0xd1,0xc8,0x23,0x3b,0x75,0xa0,0x07, |
0x1e,0x5a,0xf4,0xc5,0x53,0x06,0x7c,0x9c, |
0x33,0x49,0x51,0x03,0x9c,0x20,0xc4,0x2a, |
0x18,0x60,0xf2,0xdd,0x01,0x36,0x04,0x41, |
0x15,0x78,0x9b,0x9c,0x60,0x03,0x78,0x57, |
0x81,0xb0,0xd5,0x79,0x61,0x8a,0xd9,0xff, |
0x53,0x7a,0xe7,0xa5,0x93,0xc0,0x4b,0x14, |
0x90,0xf1,0x94,0x83,0x8e,0x78,0x21,0x1c, |
0x92,0x34,0x40,0xb4,0xd7,0x91,0x5c,0xfd, |
0x84,0xc5,0x2b,0x65,0x30,0xc6,0x18,0x3d, |
0x0d,0xc8,0xb4,0x62,0x3c,0x7e,0xfa,0x92, |
0x26,0x05,0x63,0x34,0x61,0xd1,0x9e,0xa7, |
0x58,0xd0,0x44,0x2e,0x05,0xee,0xc9,0xd9, |
0x12,0x16,0xc8,0x81,0x63,0x3c,0xa7,0xa5, |
0xb6,0x59,0x8b,0xe1,0xc8,0x01,0xca,0x31, |
0x8f,0xc6,0x00,0xe3,0x31,0x26,0xd9,0xf2, |
0xd8,0xa3,0x14,0x48,0xd0,0x80,0x1f,0x58, |
0xd4,0x55,0x57,0x06,0x5a,0x98,0x40,0x9e, |
0x4d,0x93,0x38,0x63,0x01,0x0f,0xac,0x44, |
0x25,0x04,0x06,0x18,0x08,0xe1,0x89,0x0d, |
0x56,0x6a,0xd7,0x65,0x1c,0x27,0x44,0x05, |
0xac,0x3b,0xa8,0x64,0x50,0xe7,0x98,0xc9, |
0xa2,0x27,0x66,0x07,0xc9,0x78,0x30,0x40, |
0x0c,0x73,0xbc,0xf3,0xcb,0x11,0xa7,0x10, |
0xd1,0x40,0x23,0x09,0x74,0xc0,0x87,0x90, |
0xe7,0xb4,0x11,0x03,0x7e,0xfa,0x21,0xfb, |
0xcf,0xb1,0x7a,0xec,0x33,0x49,0x16,0xa7, |
0xcc,0x31,0x87,0xb5,0x7e,0xee,0x63,0x82, |
0x38,0x31,0xc4,0xf0,0x66,0x02,0x5f,0x38, |
0x71,0x8a,0xbc,0x83,0x0c,0x20,0x07,0x29, |
0x48,0xc4,0x70,0x0a,0x3d,0x1f,0x4c,0xa4, |
0x0f,0x0f,0xff,0x1e,0xc1,0xee,0x07,0x91, |
0x92,0xf2,0x02,0x2f,0xf8,0x0e,0x32,0x11, |
0x0e,0xe5,0xd8,0x80,0xaf,0xc0,0x76,0xe0, |
0x40,0x0a,0x0f,0xea,0x56,0x2b,0xc5,0x12, |
0xf2,0x22,0xc1,0x41,0x02,0xe9,0x78,0x50, |
0xf0,0xba,0x73,0x48,0x60,0x81,0xbb,0x66, |
0x81,0x50,0x43,0x4d,0x7c,0xf0,0x61,0xff, |
0xca,0xac,0x3c,0xe8,0x32,0x2c,0x2f,0x50, |
0xe6,0x2a,0x84,0x0b,0x22,0xd8,0xb0,0xdd, |
0x55,0x55,0x6d,0xa9,0xd4,0xb0,0xe1,0xc5, |
0xf1,0xaa,0x4f,0x60,0x2a,0x7b,0xf4,0x57, |
0x65,0x9a,0x37,0x64,0x07,0x09,0xf8,0xd1, |
0x12,0x07,0x8d,0x60,0xeb,0xc7,0x3e,0xc7, |
0x6e,0xb5,0x55,0xd3,0x29,0x50,0x3d,0x2e, |
0x57,0x7a,0x1c,0xe2,0x41,0x0a,0x29,0x34, |
0x32,0xb6,0x1f,0x8f,0x74,0x10,0x0c,0xd8, |
0x8d,0xa4,0xe0,0x41,0x3a,0x19,0xd4,0x50, |
0x87,0x05,0x1c,0x58,0x20,0x4a,0x39,0x06, |
0xb4,0xe2,0x0c,0x07,0x60,0x70,0x30,0x80, |
0xc5,0xa4,0x78,0x63,0x41,0xdc,0x7a,0x0f, |
0xb0,0xf0,0x0b,0x76,0x0c,0x20,0xf7,0x00, |
0xe1,0xbc,0x50,0xf8,0xe1,0x16,0x0c,0x50, |
0x0e,0x0e,0x2f,0x38,0x31,0x00,0xe0,0x82, |
0x0f,0x20,0xb6,0x1f,0xc9,0xe8,0xe1,0xec, |
0xd3,0x63,0xab,0xed,0xc7,0x21,0xc4,0xf5, |
0x84,0x42,0x0d,0x5f,0x1e,0xcb,0xe4,0x1a, |
0xd1,0x04,0xad,0x14,0xae,0x18,0x44,0xb9, |
0x4c,0x08,0x38,0x30,0x75,0x41,0x36,0xbc, |
0x00,0x0d,0x34,0x96,0x56,0x0d,0x1b,0xc7, |
0x22,0x42,0x22,0xfd,0x7b,0xd2,0xc9,0xda, |
0x14,0xcc,0x3e,0x09,0x18,0xbf,0x8f,0xd9, |
0xff,0x04,0x48,0xae,0x4f,0xc9,0xe4,0x13, |
0x4c,0x5f,0x46,0xfb,0x55,0xd7,0x39,0xfb, |
0x58,0xaf,0xb9,0x1e,0xfa,0x05,0x13,0x4c, |
0x3a,0xc1,0x14,0x5d,0x8b,0x01,0xe5,0xc8, |
0x21,0x87,0x1d,0x8b,0x53,0x26,0x47,0x38, |
0xa4,0x94,0x63,0x7e,0x39,0xe5,0x90,0xd2, |
0x84,0x22,0xeb,0x9b,0x7f,0x21,0xf9,0xf2, |
0x53,0x56,0x8e,0x1d,0x76,0xb8,0xf3,0xff, |
0x42,0xe4,0x8b,0xbf,0x1f,0xff,0x0b,0x0e, |
0x20,0x07,0x74,0xa4,0xa3,0x27,0xc1,0x78, |
0x84,0xf5,0xce,0xf5,0x0a,0x74,0x48,0xef, |
0x58,0xff,0xd0,0x02,0x2e,0x60,0x46,0x2b, |
0x5b,0x55,0xa5,0x1f,0x36,0xbb,0x59,0x2e, |
0x78,0x81,0x04,0x21,0x70,0x10,0x03,0x3d, |
0x58,0x8a,0x96,0xb8,0x74,0x3b,0xab,0x1c, |
0xe0,0x0b,0x57,0xe3,0x1a,0xf0,0x8e,0xa6, |
0xb4,0xf2,0x80,0x69,0x48,0xd9,0xd3,0xc3, |
0x90,0xb8,0x15,0x20,0xe9,0xb9,0x50,0x7a, |
0x65,0x79,0xa1,0x56,0xfa,0x32,0x24,0xbb, |
0x90,0xab,0x03,0x20,0xe8,0xdf,0xfc,0x82, |
0x28,0xc4,0x21,0x12,0xd1,0x7c,0x38,0x88, |
0xdc,0x11,0xfb,0xa7,0x44,0xfe,0x69,0x81, |
0x06,0x36,0x61,0x9e,0x1e,0x70,0x61,0x0b, |
0x67,0x8c,0x81,0x15,0x07,0x60,0x59,0x4f, |
0xb4,0xa2,0x85,0x62,0xcc,0x6a,0x0c,0xe1, |
0x59,0x4a,0x0c,0x5c,0x17,0x25,0x60,0x70, |
0x22,0x57,0xb9,0x8a,0x92,0x10,0xb2,0xa1, |
0x14,0x1b,0x9c,0x60,0x13,0xe0,0x89,0x4a, |
0x09,0x1d,0xe8,0x93,0x14,0xd2,0xf1,0x1f, |
0x2b,0xac,0xa3,0x0d,0xeb,0xe8,0x95,0x0c, |
0xd4,0xa2,0x88,0x7e,0x9c,0xdf,0xfe,0xfe, |
0x28,0x44,0x24,0xf2,0x8f,0x7f,0x38,0x38, |
0x00,0x08,0xfe,0xc1,0x87,0x00,0xe9,0xc1, |
0x16,0x16,0x88,0xc6,0x52,0xdc,0xe1,0xc4, |
0x9f,0x28,0x32,0x03,0xaf,0x90,0x02,0x11, |
0x5c,0xb1,0xba,0xa5,0xd4,0xcc,0x8c,0xab, |
0x00,0x06,0x02,0x80,0x71,0x46,0x33,0x22, |
0x41,0x29,0x21,0xac,0x4a,0xd0,0xa2,0x32, |
0x1e,0x3d,0xb2,0xf2,0x8e,0xac,0x7c,0xe5, |
0x1e,0x69,0xb0,0x08,0x41,0xd2,0xb2,0xff, |
0x96,0x46,0x2c,0xe4,0x11,0x0d,0x69,0x02, |
0x07,0xf2,0xa1,0x03,0xce,0xe0,0x81,0x75, |
0x6a,0x90,0x8e,0xba,0x28,0x89,0x28,0x3c, |
0x68,0xc3,0xcf,0xaa,0x72,0x80,0x30,0xea, |
0xca,0x8c,0xb1,0x58,0x05,0x34,0xcf,0xd8, |
0x03,0x12,0xc4,0xa1,0x4a,0x6d,0x7c,0xa3, |
0x78,0xd2,0x91,0x3d,0x58,0xa6,0xd0,0x95, |
0xdc,0xfc,0xe6,0x4f,0x7e,0x68,0xcb,0x71, |
0xfa,0x91,0x90,0x84,0x74,0x87,0x01,0x9c, |
0xa8,0x3c,0x26,0xb9,0xa2,0x1f,0x3c,0x8b, |
0x83,0xe9,0x5e,0xe6,0x0c,0x1f,0x40,0x32, |
0x04,0xc9,0x94,0x4a,0x3f,0x24,0xd0,0x4c, |
0x5c,0x19,0xc2,0x10,0x62,0xcc,0x55,0x0c, |
0x48,0xb0,0x1d,0x1b,0xb8,0x60,0x93,0xb7, |
0x8b,0x03,0x16,0x51,0xf8,0xcd,0x30,0x79, |
0x73,0xa1,0xaf,0xfc,0x49,0x2d,0x80,0x48, |
0xce,0x89,0xde,0xd2,0x9c,0xfc,0xbb,0xa2, |
0x36,0xf3,0x81,0x10,0x76,0x1c,0xe0,0x9d, |
0xfa,0xc8,0x80,0x14,0x67,0xb5,0x85,0x38, |
0xb8,0xe0,0x3b,0xac,0x20,0x21,0x28,0xcc, |
0xa8,0x2b,0x5c,0x75,0x50,0x08,0xa0,0xc8, |
0x46,0x36,0x10,0x24,0x2c,0x60,0xf5,0xae, |
0x85,0x0e,0x55,0xe1,0x4d,0xcb,0xa3,0xd0, |
0x39,0x86,0x25,0x40,0x8b,0x90,0x28,0x45, |
0xc7,0x99,0x4b,0x5c,0xe6,0xf2,0x62,0xb6, |
0xc0,0x05,0x93,0x9a,0x00,0x87,0x43,0x02, |
0x6d,0x11,0x52,0x2c,0x8a,0x22,0x6c,0xc0, |
0xab,0x2e,0x5d,0x80,0x04,0x98,0xe0,0xa0, |
0x04,0x00,0x10,0x03,0x96,0xe6,0x8a,0x3a, |
0x17,0xf0,0xc4,0x09,0x78,0xc6,0x9d,0x6a, |
0x4e,0x32,0x85,0xc8,0xda,0xa9,0x98,0x1a, |
0x9a,0x53,0x9e,0x14,0x47,0x74,0xa2,0xff, |
0xc3,0x1a,0x5a,0x21,0x5a,0x4b,0x48,0x7c, |
0xc6,0x00,0x74,0x0d,0x2a,0x11,0x73,0xe9, |
0x0e,0x6f,0xe0,0xe2,0x07,0x6b,0x48,0x4d, |
0x00,0xb7,0x03,0x4f,0x47,0xae,0x41,0x11, |
0x71,0x98,0x2a,0x55,0xd7,0x28,0x8e,0x7e, |
0x84,0x00,0x14,0xad,0xc3,0x55,0x0c,0xaa, |
0x73,0x81,0x82,0x02,0x6b,0x97,0x29,0xc4, |
0x1a,0x4f,0x7d,0x82,0xd6,0xf3,0xa8,0x75, |
0xad,0x6c,0xfd,0x89,0xe8,0xc8,0xc5,0xad, |
0xb8,0xd6,0xa5,0x06,0x40,0x0d,0x62,0xf8, |
0xc6,0x30,0x8b,0x2e,0xcc,0x62,0x16,0x5b, |
0xd0,0x87,0x01,0xcc,0x17,0x0e,0x45,0xd0, |
0xb6,0xb6,0xb6,0xb5,0x6d,0xfb,0x66,0x5b, |
0x5b,0xfd,0x2d,0x0e,0x0e,0xd1,0xf8,0x01, |
0x42,0x74,0xab,0x88,0x4c,0xe8,0xe2,0x02, |
0xad,0x28,0x8a,0x2e,0x18,0x6b,0x03,0x77, |
0x88,0xd5,0x2a,0xfd,0xa8,0x4e,0x1c,0x7a, |
0x75,0x02,0x38,0xe8,0xf3,0x66,0xb6,0xbb, |
0xc0,0x26,0x10,0xd4,0x5c,0x2f,0x25,0xe9, |
0xb2,0x6e,0x79,0x22,0x0f,0xbb,0xe9,0xd9, |
0xb0,0xb0,0xca,0x68,0xe2,0x62,0x1a,0x58, |
0x1c,0xa8,0x15,0x1a,0xc4,0x76,0x88,0xb1, |
0x9d,0x05,0x1d,0x10,0x20,0x5f,0xf9,0xc6, |
0x62,0x1e,0x3c,0x70,0x82,0x01,0xc2,0x41, |
0x87,0x58,0xf0,0xb7,0xbf,0xfe,0xf5,0x2f, |
0x0f,0x52,0xf1,0xdf,0x3c,0xb4,0xa2,0x7c, |
0x38,0x70,0xc5,0x1a,0x9c,0x21,0x60,0xff, |
0xe6,0xa1,0x0e,0x6b,0x58,0x83,0x2a,0xfa, |
0x81,0x04,0x41,0xd0,0x61,0x1e,0x9c,0x98, |
0x85,0x2b,0xdc,0x28,0x95,0x6e,0x74,0x81, |
0x13,0x74,0xe0,0x44,0x17,0x30,0xd1,0x0b, |
0xda,0xc5,0x40,0x02,0x12,0x00,0x45,0xff, |
0x52,0x96,0x72,0x82,0x24,0x64,0xe3,0xa4, |
0x57,0xa9,0xe9,0x66,0xcb,0x42,0x9c,0x19, |
0xcf,0x78,0x86,0xe2,0x1d,0x2f,0x58,0x3a, |
0x40,0x83,0x73,0x40,0xef,0x2d,0x3d,0xca, |
0x84,0xb6,0x7a,0xba,0x2a,0xb7,0x9d,0xf6, |
0x42,0xf3,0x98,0xaf,0x3f,0xe6,0x4b,0xdf, |
0x54,0x74,0x28,0x16,0x4a,0x7e,0xf2,0x93, |
0xcd,0xf0,0x84,0x24,0xcb,0xd7,0x1f,0x13, |
0xe0,0x40,0x13,0x22,0xe7,0x8a,0xa2,0x1c, |
0x59,0xc9,0x9f,0x00,0xc3,0x1a,0xd8,0xd1, |
0x0f,0x4e,0xc8,0x77,0x02,0x4e,0x46,0x00, |
0x1d,0x78,0xa0,0xe1,0x7e,0xe4,0xe2,0xcc, |
0x6e,0x4e,0x45,0x34,0xc4,0xdc,0x0f,0x31, |
0x83,0x30,0x04,0x03,0x21,0x03,0x12,0x46, |
0xda,0x1d,0x03,0x18,0x2b,0xc6,0x61,0xe1, |
0x63,0x10,0x98,0x30,0x89,0x43,0x7c,0xe1, |
0x0a,0x65,0x98,0xc4,0x23,0xf4,0x93,0xc7, |
0x64,0x75,0x76,0xad,0x28,0xa8,0x45,0xa0, |
0x09,0xd3,0x01,0x14,0xc4,0xa1,0x23,0x7e, |
0xd8,0x61,0x66,0x8b,0xa6,0x59,0x9b,0xb0, |
0x57,0x88,0x06,0x20,0xb3,0x92,0x27,0x00, |
0x65,0x0e,0xf0,0x20,0x16,0x49,0xf6,0x07, |
0x95,0x91,0x7c,0x6a,0x04,0x48,0xe3,0x09, |
0x50,0x36,0x43,0x1d,0xf8,0xd7,0x84,0xa2, |
0x9c,0xb9,0xca,0x4a,0x58,0xc2,0x16,0xc6, |
0x8c,0x80,0x4f,0x4c,0x61,0x0d,0x3c,0xe0, |
0xc1,0x91,0x3f,0x01,0xcc,0x0b,0xe4,0x42, |
0xbe,0x4f,0x20,0x75,0x0c,0x04,0x21,0x5f, |
0x2f,0xa8,0x59,0x8d,0xd6,0x81,0x11,0x3c, |
0x24,0x40,0x84,0x3a,0xc0,0x51,0x9d,0x60, |
0x72,0xe0,0x90,0x35,0xfd,0x59,0xd0,0x7e, |
0x8f,0x02,0xbf,0x48,0x41,0xbd,0xc8,0xff, |
0x70,0x87,0x6c,0xc1,0x50,0xa1,0x7e,0xb6, |
0x23,0x8e,0xbf,0x92,0x0e,0x13,0x44,0x44, |
0x38,0x7a,0x48,0x47,0xa5,0xb3,0x90,0x02, |
0x45,0x32,0x0f,0xb4,0x5b,0x29,0x37,0xb9, |
0x6c,0x62,0x82,0x20,0x42,0x62,0x0b,0x4a, |
0x86,0x86,0x19,0x38,0xe0,0x85,0x27,0x9c, |
0xd9,0x1f,0x4a,0xb0,0x00,0x27,0x3e,0xa1, |
0xf0,0x4f,0x88,0x7a,0xbe,0x4a,0x58,0xf8, |
0x27,0x96,0x30,0x65,0x25,0x1b,0xdc,0x19, |
0x76,0x80,0x03,0xdc,0x52,0x01,0xe5,0x5b, |
0x6f,0x21,0x17,0x56,0xb6,0x40,0x2e,0x32, |
0xbc,0x09,0x55,0xcc,0xc3,0x1f,0x4f,0x40, |
0x43,0x3f,0xe2,0x6b,0x06,0x67,0xe8,0x42, |
0x1c,0x21,0x28,0x83,0x04,0xac,0xcc,0x81, |
0x2d,0x54,0x25,0xbb,0xa6,0x8a,0x14,0x39, |
0x14,0xd1,0x1d,0xa2,0x51,0x92,0x5b,0x3c, |
0x09,0xd0,0x4f,0xca,0x25,0xa4,0x63,0x11, |
0x27,0x40,0x34,0xc8,0x04,0x11,0xb2,0xf5, |
0x05,0x11,0xc4,0x23,0x5c,0x3e,0x59,0x9e, |
0x5d,0x42,0x6b,0x9e,0x46,0xe7,0x14,0x0b, |
0x5f,0x20,0xc3,0x1c,0xb2,0x95,0x0e,0x4a, |
0xcf,0x85,0x26,0xe9,0xd8,0xfa,0xf2,0x14, |
0xed,0x75,0x2c,0xd4,0xa4,0x06,0xf3,0x33, |
0x40,0x17,0x6c,0x0d,0x86,0x01,0x38,0xc1, |
0x09,0x6f,0x48,0xc5,0xa9,0x27,0xe0,0x85, |
0x56,0x88,0x62,0x00,0x03,0xf0,0x46,0x1e, |
0x6c,0xdd,0x00,0x84,0x20,0xc4,0x1b,0x70, |
0xa7,0xf8,0x95,0xb7,0x00,0x09,0xca,0x75, |
0x19,0xc9,0xb7,0x76,0x02,0x99,0xcd,0x70, |
0xcc,0x14,0xf7,0x63,0x16,0xfe,0xf8,0x84, |
0x37,0x32,0x11,0x8b,0x09,0x80,0x61,0x0b, |
0x05,0x0d,0xc1,0x15,0x4e,0xb0,0x0a,0xff, |
0x04,0xc0,0xda,0xc5,0x4a,0xb1,0xc3,0x43, |
0x22,0x31,0x73,0xda,0xc1,0x93,0xec,0x5f, |
0x27,0xbb,0xa2,0x27,0x5d,0x13,0xa0,0x9c, |
0xfe,0x6a,0xa6,0xdf,0xfa,0xd0,0x9d,0x46, |
0x18,0x1a,0x88,0xe0,0x1d,0x0d,0x50,0x0c, |
0x16,0x32,0x00,0x75,0xa0,0xe4,0x9e,0xa1, |
0xe9,0xe6,0xca,0x5d,0x20,0x51,0xe9,0x78, |
0x10,0x41,0x11,0xe8,0x38,0x44,0xbc,0x53, |
0x60,0x00,0x7b,0xda,0x40,0x1f,0x87,0x78, |
0xa2,0x1e,0x50,0x40,0x03,0x48,0x84,0xc0, |
0x13,0xbc,0x28,0x06,0x5b,0x4c,0x60,0x00, |
0x1c,0x7c,0x26,0xed,0x08,0x30,0x38,0x07, |
0xf4,0xf1,0x02,0x48,0xf4,0x9b,0x0e,0x13, |
0x38,0xff,0x12,0x2c,0x34,0x3e,0x39,0x78, |
0x1f,0x01,0x94,0x6f,0x42,0xfb,0xca,0xa1, |
0x85,0xf6,0x57,0x99,0xf3,0xa2,0xb0,0xc3, |
0x1a,0x2c,0x50,0x6b,0x87,0x57,0x3e,0xbe, |
0x5e,0xd8,0x82,0x76,0x29,0x45,0xb1,0x7d, |
0x02,0x39,0xf4,0x80,0xc1,0x59,0x80,0xcb, |
0xb9,0x43,0x88,0x90,0x80,0x21,0x70,0xde, |
0x1a,0x78,0x5e,0xb0,0x30,0x01,0x8b,0x20, |
0x41,0x1b,0x14,0xd7,0x22,0xd4,0x02,0x1c, |
0xd8,0xd3,0x09,0x64,0x43,0x31,0x84,0x8e, |
0x4f,0x84,0xcf,0xbb,0x90,0xc0,0x09,0x9c, |
0x40,0x38,0x98,0x02,0x16,0xd0,0x40,0x3f, |
0x8c,0x60,0x1c,0x74,0xe0,0x7a,0xbd,0x40, |
0x09,0x26,0xc3,0xd2,0xbd,0xc3,0x82,0xc0, |
0xc1,0x01,0xc4,0x47,0xf4,0xd0,0xc0,0x52, |
0x99,0x42,0x01,0x4d,0xdd,0xef,0x8d,0x0e, |
0xbb,0x3d,0x0a,0x0f,0x78,0x00,0x09,0x3c, |
0xc8,0x4b,0xfc,0xc2,0x2f,0xa4,0x05,0x90, |
0xe9,0x07,0xe9,0x88,0xc6,0x31,0xbc,0xff, |
0x03,0x44,0x80,0x42,0xc8,0x7c,0xc1,0x0f, |
0x41,0x02,0xfd,0x3d,0x01,0x0f,0xc8,0xc1, |
0x22,0xd8,0xd5,0xe4,0x58,0x40,0x33,0x38, |
0x43,0x13,0x98,0x0f,0x15,0x56,0xd9,0xfb, |
0x81,0x61,0xfb,0x35,0x9c,0x3f,0x70,0x81, |
0x17,0xae,0xc1,0x14,0xcc,0x97,0x19,0x72, |
0x5c,0xc2,0x59,0x00,0x1a,0x5c,0x40,0x08, |
0xec,0x4c,0x3f,0xf4,0x00,0x02,0x30,0x80, |
0x37,0xcc,0xc2,0x1d,0xf2,0x40,0x08,0x6c, |
0xc2,0x01,0x80,0x15,0x0e,0xa8,0x9c,0x33, |
0xa8,0x82,0x52,0x34,0xc5,0xa3,0xdc,0x01, |
0x11,0xbc,0x01,0x24,0x0c,0xc4,0x31,0xc4, |
0x43,0xa7,0x6c,0x43,0x34,0xec,0x03,0x7f, |
0xd4,0x5e,0x34,0xe4,0x85,0x13,0x52,0x80, |
0x38,0xbc,0x82,0x68,0xbc,0x43,0xa7,0xf0, |
0x43,0x2b,0xb0,0x45,0x2d,0x50,0xc0,0x1d, |
0x50,0x4d,0x0c,0x36,0x80,0x07,0x0c,0x44, |
0x62,0xf4,0x05,0x0a,0x18,0x00,0x8b,0x94, |
0x0d,0x67,0xf5,0x60,0xd4,0x9d,0xc3,0x2b, |
0x10,0x01,0x3f,0xb8,0x89,0x05,0xac,0x4d, |
0xa5,0xf1,0xc3,0x11,0xf8,0x40,0x23,0x70, |
0x40,0x16,0x88,0xe2,0x0f,0x1c,0x02,0x0a, |
0x98,0x80,0x08,0x1c,0x03,0x11,0x80,0x01, |
0x98,0x39,0xc2,0x31,0x8c,0x01,0xdb,0xdc, |
0x84,0x16,0x28,0xc2,0xfe,0xa1,0x59,0x1e, |
0xcc,0x82,0x22,0x2c,0xc2,0x22,0xf0,0x8b, |
0x1c,0xd8,0x4f,0x39,0x78,0x9f,0xc1,0x81, |
0xc1,0x17,0x2e,0xce,0xfc,0xd9,0xda,0x04, |
0xa0,0xda,0x95,0x11,0xde,0x7c,0x71,0x01, |
0xff,0x6d,0xc1,0x0b,0x8c,0xc2,0x16,0xb8, |
0x51,0x0a,0xda,0x40,0x9b,0xc5,0xc2,0xff, |
0x65,0x02,0x0f,0x7c,0x40,0x2e,0xb8,0xff, |
0xd1,0x75,0x84,0x80,0xe4,0x4d,0xc0,0x12, |
0xd4,0xca,0x52,0x64,0x43,0x16,0x0c,0x82, |
0xa9,0x4c,0x81,0x41,0x14,0x03,0x19,0x18, |
0x23,0x18,0xf4,0x22,0x12,0x50,0xc0,0x1c, |
0x80,0x0e,0x0d,0x04,0xc1,0x31,0xfc,0x02, |
0x12,0x24,0xe4,0x1a,0xdc,0x01,0x41,0x9c, |
0x42,0xd4,0xb8,0x04,0x67,0x64,0x4e,0x2d, |
0x90,0xc1,0x11,0x28,0x1d,0xd3,0xe1,0x47, |
0x38,0x6c,0x64,0x30,0x68,0x05,0x0a,0x1c, |
0xc6,0x2d,0x7a,0x0f,0x0f,0xc2,0xa2,0x90, |
0x24,0xc0,0x24,0x60,0x9d,0x9f,0x24,0xc0, |
0x23,0x54,0xda,0x1d,0x24,0xa4,0x07,0x24, |
0x80,0x07,0x88,0x03,0x05,0x0c,0x80,0x62, |
0x1c,0xc6,0xb5,0xf8,0x01,0x4e,0xbe,0x82, |
0x47,0xa6,0xc0,0x3e,0x68,0x85,0x1e,0xd4, |
0x82,0xc6,0x41,0x19,0x02,0xd4,0xd7,0x2c, |
0x64,0x21,0xbf,0x71,0xe3,0x18,0x2e,0x0e, |
0xda,0x55,0x19,0x17,0x28,0x01,0x95,0x99, |
0x01,0xe0,0x38,0x99,0x95,0x41,0x83,0xad, |
0xe1,0xda,0xec,0x1c,0x40,0x26,0xf4,0x40, |
0x0f,0x08,0x02,0x7f,0x99,0x01,0x39,0xf0, |
0x42,0x08,0xb8,0x40,0x2f,0xb8,0x51,0x95, |
0x04,0x01,0x09,0x90,0xd9,0x27,0x58,0x00, |
0xcd,0x15,0xe2,0x26,0xe4,0x02,0x26,0x1c, |
0xc3,0x20,0xac,0x5d,0x02,0xc4,0x1b,0xaa, |
0x18,0xcf,0x24,0x14,0x63,0xb6,0xd0,0x80, |
0x6d,0xc4,0x40,0x4c,0x7a,0x40,0x12,0x44, |
0x84,0x9f,0xdc,0xe4,0x24,0x34,0x62,0x33, |
0xec,0x43,0x47,0x7e,0x64,0xbd,0xd4,0xde, |
0x82,0xa0,0x83,0x08,0xf0,0x43,0x63,0xfe, |
0xc4,0xd5,0xc5,0xc3,0x82,0x9c,0x1b,0xd5, |
0x39,0x54,0xf4,0x99,0x00,0xd6,0x65,0xff, |
0x4b,0x07,0xc0,0x1b,0x05,0x0c,0x02,0xb9, |
0x79,0xcd,0x61,0x12,0x81,0x07,0x3c,0x26, |
0xaa,0x60,0x01,0x2e,0xa0,0xc0,0x21,0x3c, |
0xc4,0x5e,0x88,0x4b,0x06,0x60,0x81,0x3d, |
0x44,0xa3,0x92,0xcd,0x43,0x34,0x4c,0x06, |
0xfb,0x94,0xa1,0x37,0x9a,0x8f,0x01,0xe8, |
0xe1,0xf7,0x71,0x81,0x19,0x50,0x25,0x18, |
0x78,0x41,0x95,0x01,0x9c,0xda,0x6d,0x01, |
0xcf,0x34,0x9e,0x97,0xf9,0x40,0x2e,0x20, |
0x48,0x35,0x15,0x22,0xe6,0x71,0xc2,0xe3, |
0x79,0xc1,0x20,0x88,0x50,0x74,0x6d,0x49, |
0x7b,0xc4,0x80,0x05,0xa0,0x03,0x2e,0x14, |
0x03,0x0f,0xa8,0x8d,0xe9,0x11,0xe3,0x31, |
0xdc,0xde,0x43,0x52,0xc0,0x12,0xa4,0x40, |
0x3e,0x44,0x1f,0x3b,0x74,0x44,0x03,0x14, |
0x65,0x07,0x98,0x02,0x19,0x68,0x66,0x02, |
0x3c,0x26,0x48,0xda,0x5e,0x6f,0x3c,0x44, |
0x10,0x46,0x1f,0x2b,0x9a,0x66,0xa2,0xbd, |
0x22,0x4b,0xee,0xc4,0x30,0x86,0x66,0x02, |
0xa0,0x02,0xd7,0xc9,0xdb,0x23,0xf0,0x41, |
0x06,0xa4,0xc3,0x43,0x10,0x81,0x1f,0x80, |
0x40,0x44,0xf0,0x40,0x26,0x50,0x53,0x1c, |
0x1c,0xd6,0x5c,0x88,0x0e,0x83,0xee,0x43, |
0x33,0x3c,0xc1,0x27,0xe0,0x26,0x02,0xcc, |
0x83,0x28,0xf0,0xe6,0xf8,0x71,0xa3,0x12, |
0xfc,0xa6,0x54,0x72,0x23,0x17,0x70,0x80, |
0x56,0xf2,0xe3,0xc4,0xb1,0x9a,0xab,0x7d, |
0x1f,0xc7,0x15,0xe2,0x05,0xa8,0x02,0x11, |
0x0c,0xdc,0x27,0x2c,0xe5,0xa2,0x68,0x98, |
0x52,0xc0,0x01,0x26,0x34,0x20,0x3f,0x5a, |
0x40,0x2f,0x9c,0x00,0x82,0xcc,0x61,0x1c, |
0xd8,0x5c,0x0c,0xa4,0x40,0x30,0xf0,0xff, |
0xc1,0xd7,0xf8,0x41,0x31,0x68,0x81,0x08, |
0xe6,0xc5,0x1d,0xa0,0x27,0x44,0x9a,0x62, |
0x49,0xa2,0x40,0x3f,0xcc,0x45,0xe8,0x64, |
0xc0,0x39,0xd4,0x27,0x18,0xdc,0xa7,0x47, |
0xe6,0xe7,0x82,0x64,0xc0,0x1b,0x90,0xe4, |
0x49,0xfa,0xc7,0xa5,0xf9,0xde,0x80,0xee, |
0x07,0xbb,0x65,0x5d,0x02,0xe8,0x01,0x16, |
0x24,0x5f,0x5f,0x60,0x81,0x0d,0x50,0x00, |
0x84,0xb2,0x62,0xa9,0x40,0x04,0x5e,0xca, |
0x84,0x5b,0xf8,0xc2,0x1b,0x90,0x82,0x3e, |
0x88,0xc2,0x1a,0x0c,0x5c,0xc3,0xcd,0xd7, |
0xdc,0xf5,0x26,0x1b,0xa2,0xe8,0x0b,0x84, |
0xa3,0x8c,0x36,0x43,0xde,0xc9,0x97,0x34, |
0x8c,0xa3,0xfb,0x35,0x40,0x52,0x76,0x63, |
0xae,0xf1,0xcc,0x01,0xb8,0x42,0x34,0x44, |
0x83,0x37,0xb8,0xda,0x04,0x58,0x80,0xce, |
0x29,0x45,0xe3,0x39,0x59,0xc4,0x15,0x16, |
0x76,0x6d,0xd7,0x43,0x0c,0x42,0x0a,0x24, |
0x03,0x83,0x6a,0x81,0x6d,0x78,0xdb,0x11, |
0xc4,0x80,0x32,0xa2,0xa7,0x6d,0x38,0x1d, |
0x96,0xce,0x45,0x49,0x72,0x29,0x19,0x38, |
0xc2,0x97,0xe2,0x67,0x64,0x36,0x9d,0x07, |
0xe0,0xc2,0x23,0xd8,0x86,0x49,0x74,0x24, |
0x3d,0x90,0x9b,0x9a,0x0e,0x68,0x81,0xba, |
0x69,0xf4,0x25,0x5f,0x80,0x60,0xc1,0x83, |
0x7a,0x80,0x84,0xd2,0x83,0xdc,0x00,0x8e, |
0xb5,0xc6,0x8d,0x92,0x66,0x00,0x3a,0xb4, |
0xd6,0x2c,0x8c,0x41,0x6c,0xc9,0x81,0x13, |
0x08,0x2a,0xc1,0x9d,0xa3,0x33,0xf0,0x66, |
0x18,0x7e,0x5f,0x54,0x96,0x28,0x55,0x36, |
0x83,0x70,0x22,0x80,0x12,0xcc,0x17,0x34, |
0x80,0xc1,0xdf,0x19,0x1c,0xae,0xb1,0xff, |
0xc3,0x57,0xce,0xce,0x05,0xa0,0x81,0xca, |
0x41,0xd2,0x9c,0x59,0x67,0x2c,0xc4,0x6b, |
0x61,0x79,0xde,0xed,0x80,0xc0,0x7b,0x26, |
0x69,0x32,0xa0,0x00,0x24,0x10,0x44,0x16, |
0x58,0x40,0x42,0xa6,0x80,0x23,0xf0,0xc3, |
0x82,0xa4,0xe7,0x66,0xfa,0xd8,0x5c,0x24, |
0x9a,0xae,0x6a,0xa6,0x63,0x86,0x69,0x64, |
0xea,0x27,0x9c,0x76,0xc3,0x83,0xf8,0x01, |
0x2b,0x12,0x01,0x9f,0x26,0x2b,0x4b,0xa6, |
0x43,0x28,0xba,0x29,0x1f,0x90,0xa6,0xbc, |
0xf5,0xc5,0x21,0xd4,0x29,0x84,0x82,0x66, |
0xd6,0xf9,0x81,0x07,0xcc,0xec,0xcc,0xbe, |
0xc2,0x24,0x48,0xa2,0x09,0xf8,0x1b,0x7d, |
0x8d,0xa8,0xf9,0x2c,0x82,0x35,0x74,0x19, |
0xf8,0x39,0x41,0x8a,0xaa,0xdd,0x37,0x7e, |
0x86,0x70,0x1a,0x5c,0x33,0x38,0x01,0x6e, |
0x4a,0x83,0x33,0x1c,0xed,0x89,0xc2,0x57, |
0x17,0x30,0x17,0xbe,0xba,0x53,0xda,0x31, |
0x00,0x39,0x80,0x65,0x7c,0x45,0x9c,0x05, |
0x1c,0x45,0xcf,0x5c,0x80,0x3b,0x80,0xc0, |
0x78,0x2c,0x42,0x69,0xae,0x2a,0x2a,0xd8, |
0x06,0xca,0xc8,0x6c,0x02,0xd8,0x42,0x31, |
0x52,0xe9,0x31,0x38,0x5d,0x3a,0x64,0xa9, |
0xbc,0xe5,0x6a,0x97,0xf2,0x2a,0x98,0x42, |
0x66,0x0c,0x2e,0xc8,0xbb,0xa1,0x83,0x86, |
0xf8,0xc1,0x09,0xb4,0x2d,0x80,0x2c,0x1a, |
0x58,0x74,0xa6,0x43,0x2d,0x6b,0xb6,0xbc, |
0x66,0xbc,0xf9,0x81,0x4a,0x42,0xab,0x9d, |
0x7a,0x40,0x32,0x5c,0x81,0x5a,0x78,0x80, |
0x4d,0xd0,0x84,0x6d,0xf0,0x24,0x08,0x40, |
0x02,0x34,0xce,0xd7,0x13,0xbc,0x41,0x7b, |
0xd9,0x15,0xa8,0x21,0xc0,0x8a,0x0a,0xff, |
0xad,0xba,0xa2,0xab,0xa2,0x4e,0xe5,0x70, |
0x72,0x80,0x1c,0x74,0x2e,0xba,0x36,0x80, |
0x28,0xd8,0xa1,0x8c,0xca,0xab,0x3f,0xcc, |
0xc3,0x28,0x6c,0x87,0xec,0x5e,0x00,0x1c, |
0xa4,0x1d,0x34,0x38,0x83,0x22,0xc4,0x17, |
0x17,0x2c,0xc1,0x1a,0xcc,0xa5,0x52,0x18, |
0xc0,0xca,0xd4,0x82,0xb1,0xd4,0xa6,0xd8, |
0x22,0x41,0x0a,0x58,0xdd,0x40,0x80,0x81, |
0x1f,0xa4,0x03,0x2e,0x88,0x84,0x28,0x52, |
0x29,0x05,0x4c,0xec,0xad,0x2a,0xa8,0x56, |
0x74,0x69,0xd3,0xd5,0x6d,0x7e,0xde,0x9e, |
0xb1,0xc4,0xa6,0x9d,0x8a,0x40,0x0c,0x20, |
0x2b,0xc9,0xc2,0xe2,0xba,0xd5,0xa7,0x05, |
0xf8,0x02,0x0d,0xc4,0x69,0x86,0xea,0x47, |
0xcb,0xda,0xe9,0xf2,0xea,0x83,0x28,0x46, |
0x83,0x2d,0x24,0x43,0x2d,0xd8,0x00,0x19, |
0x9c,0x8a,0x85,0x40,0x42,0x39,0x14,0x5e, |
0x2c,0xa4,0x82,0x13,0x68,0x81,0x16,0x84, |
0xc3,0x2c,0xd4,0x1a,0xd3,0x4e,0x46,0xf8, |
0x98,0xa8,0xa2,0x32,0xea,0x19,0x36,0xc3, |
0x22,0xb4,0xab,0x7c,0xc5,0x6b,0x13,0x38, |
0x2d,0x18,0xf0,0x80,0x95,0x0d,0x00,0xa6, |
0x32,0x05,0x09,0x1c,0x99,0x59,0x1e,0x19, |
0x03,0x2c,0x41,0xce,0x55,0xc5,0x0b,0x7c, |
0xc1,0xea,0x1d,0x0b,0x0a,0xc8,0xc1,0xd8, |
0x26,0x43,0x07,0x38,0x2e,0x12,0x4c,0x42, |
0x30,0x7c,0x81,0x01,0xe4,0x05,0x3f,0xe0, |
0x07,0x2a,0x40,0xa4,0xdb,0xc2,0xad,0x92, |
0x56,0x2f,0x19,0xc8,0x20,0xf6,0x6e,0x2c, |
0xde,0x7a,0x8d,0x3e,0xec,0xaa,0x5e,0xd4, |
0x70,0x5a,0xad,0x29,0xb9,0x04,0x83,0x04, |
0x42,0x44,0x34,0xec,0xe5,0x5c,0xbc,0xff, |
0x90,0xe2,0xaa,0x66,0x06,0x1c,0xc2,0x16, |
0x74,0x8a,0x08,0x5c,0x41,0x5e,0xd0,0xc3, |
0x12,0x80,0x01,0x7e,0xa5,0xc6,0x18,0x3c, |
0x59,0x2c,0xd0,0xc1,0x7e,0x21,0xd9,0x04, |
0x34,0x40,0x1d,0xac,0x8f,0x5d,0x41,0xa5, |
0xa2,0x9e,0x2b,0xd2,0xba,0x42,0x38,0xec, |
0x9f,0x34,0x48,0x0a,0xeb,0x76,0x63,0x34, |
0x94,0x5c,0x1e,0x38,0x41,0x47,0x5d,0x40, |
0x3f,0xc0,0x81,0xe3,0x7d,0x19,0xdc,0x7d, |
0x19,0x39,0xc8,0x01,0x1c,0xf4,0x71,0x1f, |
0x57,0xc7,0x01,0x58,0x16,0xb9,0xa0,0x40, |
0x39,0x50,0x88,0x92,0xa2,0x00,0x29,0x40, |
0xb1,0x14,0x3f,0xc8,0x63,0x1c,0xc1,0x2b, |
0xd8,0x82,0x68,0xe0,0xc7,0x22,0x4d,0x2f, |
0x9f,0x72,0xa9,0xb7,0xf5,0x2a,0x05,0xe0, |
0xf0,0xd5,0x9d,0xa7,0xb6,0xfc,0xc4,0xb0, |
0xb6,0x9b,0x07,0xa0,0xc2,0xaa,0x08,0xe8, |
0x80,0x36,0xa8,0x2f,0xf0,0x00,0x12,0x64, |
0xc1,0x7f,0xe8,0x03,0x12,0x58,0xc0,0xa5, |
0xe9,0x5e,0x3a,0x34,0xc1,0xc7,0xe4,0x47, |
0x02,0xfc,0x00,0x12,0xa8,0x4b,0x0c,0x10, |
0x41,0x15,0x47,0x83,0x18,0x1b,0x80,0x16, |
0x24,0xa5,0x52,0xa2,0xab,0x34,0x60,0x99, |
0x54,0x6e,0x63,0xa2,0x16,0x6d,0x70,0x52, |
0xa5,0xe9,0x6a,0x41,0xe7,0x7e,0xf1,0x00, |
0xe0,0x00,0x04,0xa3,0x41,0xa9,0x21,0x40, |
0x1e,0x8c,0x01,0x3b,0xb0,0x43,0x26,0x80, |
0x1a,0x56,0xe6,0x81,0xc1,0x3d,0x41,0x1e, |
0x74,0x01,0x38,0x87,0x73,0x17,0x8c,0x01, |
0x21,0xd6,0x82,0xd5,0xa4,0x43,0x0d,0x20, |
0xc1,0x1a,0x28,0x69,0x07,0xec,0x83,0x28, |
0x20,0x01,0x3d,0xd0,0xc3,0x20,0xa0,0xff, |
0xcc,0x00,0x9c,0x02,0x46,0x7a,0x40,0x26, |
0x20,0xc1,0x0e,0xa7,0x03,0x08,0xb4,0x72, |
0x0d,0x67,0x00,0x1e,0x80,0xc2,0x8f,0xec, |
0xc3,0x17,0x08,0xb4,0xd2,0xf1,0x42,0x16, |
0xdc,0x9e,0x7e,0x78,0x8d,0xc7,0xfe,0xc8, |
0x23,0x58,0x4d,0xf8,0xfe,0x1e,0x98,0x34, |
0xe9,0xda,0x20,0x8f,0x1f,0x00,0xa5,0xb1, |
0xec,0xc4,0x3e,0x5c,0xf4,0x3e,0xe0,0x01, |
0x71,0xec,0x83,0x07,0x74,0xce,0xde,0x34, |
0x41,0x5d,0xc5,0x96,0x01,0x2c,0x02,0x11, |
0xe4,0x68,0x95,0xad,0x9a,0x12,0xb0,0x01, |
0x18,0x88,0x42,0x38,0x7c,0xc6,0xf8,0x35, |
0x73,0x89,0x00,0xa7,0x89,0x36,0x83,0x1d, |
0x24,0xf3,0xf7,0xc5,0xab,0xe0,0xb5,0x31, |
0xc7,0xb9,0x03,0x0f,0x7c,0x42,0x92,0xf1, |
0x57,0x92,0x7d,0x42,0xc0,0xd5,0x41,0x7c, |
0xa1,0x5a,0x30,0x7b,0x41,0x1d,0xb0,0xc2, |
0x22,0x50,0x52,0x06,0xa0,0x0d,0x50,0x9e, |
0x03,0x0c,0x6d,0x74,0xd8,0xa8,0x8d,0x07, |
0x80,0x74,0xd8,0x24,0xc0,0x46,0x97,0x4d, |
0x5d,0xe8,0xc1,0x23,0x84,0x74,0x02,0x78, |
0x34,0xb7,0xc8,0x5e,0xa2,0x99,0x75,0xd3, |
0xc8,0xac,0x7c,0x36,0xe8,0x61,0x70,0x00, |
0xe2,0xb2,0x4a,0x44,0xff,0x1e,0x5c,0x3b, |
0x8f,0xf7,0xc0,0x50,0x8f,0xf5,0xd0,0xd9, |
0x40,0x0f,0x8d,0x1d,0x90,0x2d,0xe8,0x03, |
0x29,0x94,0x34,0x60,0x2f,0x82,0x28,0x58, |
0x00,0x03,0x7c,0x82,0x12,0x1c,0x36,0x34, |
0x34,0x00,0x18,0x38,0xc3,0x6e,0x6e,0xae, |
0x01,0x28,0x02,0x0f,0x98,0x81,0x64,0x5b, |
0x00,0xe8,0x7e,0x86,0x22,0x10,0x81,0x64, |
0x2f,0x41,0xb9,0x42,0x42,0x13,0x78,0xff, |
0x41,0x66,0x3b,0x83,0x2b,0x1c,0x40,0x38, |
0xdc,0xe8,0x64,0xe7,0x9a,0x2a,0xd4,0x41, |
0x2a,0x78,0xe8,0x27,0x30,0xc0,0xb1,0x31, |
0xb6,0x2a,0x8c,0xc1,0x14,0x48,0xb6,0x6c, |
0xcf,0xb6,0x19,0x78,0xc1,0x00,0x6c,0xc2, |
0xd0,0xe8,0x04,0x71,0x04,0x43,0x3e,0xb8, |
0x55,0x2f,0x3d,0x02,0x70,0x97,0xe4,0xd9, |
0x3c,0x42,0x6f,0x9f,0xcd,0x8c,0xf5,0x90, |
0xf3,0x70,0xdb,0xb1,0x6c,0xcf,0xaa,0x30, |
0xb7,0x5d,0xf7,0x18,0x5c,0xb0,0xdb,0x29, |
0x90,0x5b,0xf4,0x90,0xb2,0x10,0xef,0x04, |
0xd4,0x91,0x97,0x90,0xe8,0x01,0x1f,0x80, |
0xc0,0xf8,0x01,0x36,0x60,0x97,0x43,0x13, |
0x88,0x02,0xde,0x70,0x00,0x07,0x34,0xc3, |
0x00,0x34,0x76,0x7b,0x01,0x56,0x39,0xe8, |
0x03,0xdd,0x89,0x42,0x2b,0x64,0xa3,0x54, |
0x1a,0xc0,0x78,0x8b,0x82,0x28,0xa8,0x23, |
0x67,0x3b,0x8e,0x7d,0x2b,0xc2,0x21,0xb9, |
0x82,0xa6,0xd6,0x41,0x1d,0x34,0x81,0x1f, |
0x1e,0x80,0x3b,0x34,0x01,0x80,0x23,0x04, |
0x80,0x2b,0x82,0x15,0xa9,0x42,0x2b,0x00, |
0x78,0x1d,0x44,0x83,0x83,0x47,0xf8,0x5c, |
0xbe,0x80,0xb5,0x85,0x57,0x5f,0x6c,0x93, |
0x72,0x50,0x12,0x1e,0x49,0x21,0x08,0xd8, |
0x86,0x0f,0x28,0xa9,0xb2,0x08,0xee,0x75, |
0x7b,0x85,0x56,0x80,0x4f,0x6a,0x80,0x37, |
0x8a,0xf3,0x0b,0x29,0xac,0xb8,0x18,0x4b, |
0xa5,0x8b,0xcf,0xb7,0x7b,0xb5,0x17,0x24, |
0x2c,0x0e,0x24,0x44,0x83,0x05,0xc0,0xd6, |
0xe2,0x10,0x78,0x68,0x77,0x14,0x8f,0xf3, |
0x38,0x53,0x8c,0x9c,0x2a,0xb0,0x25,0x53, |
0xcc,0x6e,0x97,0xc8,0x2e,0x42,0xd5,0xff, |
0xc4,0xb9,0xc1,0xd2,0xf8,0x42,0x04,0x12, |
0x28,0x74,0x88,0x8f,0x38,0xd2,0x64,0x00, |
0x08,0xa0,0x38,0x8a,0x9f,0xb8,0x49,0x03, |
0xd6,0xe6,0xbe,0x38,0x60,0x69,0x39,0x11, |
0x71,0xf6,0x1a,0xe0,0x78,0x00,0xd9,0xc1, |
0x80,0xf7,0x38,0x99,0x97,0xf9,0xec,0xca, |
0xae,0x8f,0x9f,0xf9,0x57,0x9a,0x90,0xd4, |
0xa5,0xdb,0x5d,0x28,0x42,0x16,0xac,0x01, |
0xaa,0xc8,0xd1,0x98,0x88,0x38,0x94,0x9b, |
0x85,0x16,0x58,0x39,0x95,0x03,0xf6,0x89, |
0xf7,0xf9,0x96,0x67,0xf9,0xd9,0xb9,0xd7, |
0xfc,0x90,0xc2,0x97,0xaf,0x77,0x60,0x99, |
0x39,0xa2,0x27,0xfa,0x90,0xf7,0xf8,0xbd, |
0x7e,0x49,0xa6,0xe1,0x58,0x55,0x5f,0xb4, |
0x07,0xf4,0x36,0x4e,0xdd,0xb9,0xf0,0x78, |
0xf7,0x9e,0x97,0xb4,0x9e,0xd7,0x15,0x96, |
0xbf,0xf8,0x7a,0x03,0x3a,0x70,0x06,0x11, |
0xfe,0x39,0x65,0x8e,0x27,0xba,0xa9,0x2b, |
0x3a,0x9a,0x33,0xfa,0x22,0xa0,0xc2,0x80, |
0xae,0x4a,0xd1,0x89,0xcb,0x93,0x5b,0xfa, |
0x98,0x48,0xf9,0xa6,0x67,0x7a,0x95,0x03, |
0x3a,0xae,0x7b,0xfa,0x10,0x95,0xc3,0x00, |
0xcc,0x12,0x12,0x9d,0xba,0xa9,0x2f,0xfa, |
0xa2,0x2b,0x7a,0x3a,0x01,0xae,0xac,0x97, |
0x85,0x9d,0x5b,0xfa,0xd5,0x98,0x9d,0xad, |
0x37,0xfb,0x9f,0xeb,0xfa,0xb3,0x6f,0xf9, |
0xa0,0x7b,0xc6,0xf6,0x6d,0x81,0x1d,0x00, |
0x3b,0xb6,0xcf,0x71,0xaa,0x0f,0xfb,0x05, |
0xac,0x3a,0x9d,0x1f,0xbb,0x75,0x83,0xfb, |
0x9f,0x91,0x0b,0xb3,0x37,0xbb,0xad,0x47, |
0x7b,0xae,0x47,0xbb,0x54,0x16,0x83,0x28, |
0xc4,0x16,0x0e,0x0c,0xc0,0x16,0x2c,0xff, |
0x55,0xb6,0xcf,0xfb,0xb0,0xcf,0x71,0x4d, |
0x89,0x7b,0x10,0xe3,0x3b,0x0b,0x81,0x8f, |
0xb9,0x3b,0x3b,0xba,0x43,0x3b,0xa0,0xd7, |
0x82,0x2d,0x88,0x02,0x24,0x70,0xdf,0x0f, |
0xf0,0x00,0x0d,0x1e,0xd2,0x21,0xcd,0x3b, |
0xc3,0x77,0x14,0xcb,0x24,0x39,0xbe,0x27, |
0xbb,0xa5,0xaf,0x57,0x16,0xf6,0x7b,0xa6, |
0xf7,0x79,0xba,0x5f,0xb9,0xb4,0x9b,0x00, |
0x52,0x45,0x03,0x24,0x20,0x92,0x29,0xac, |
0x01,0x73,0x29,0x7c,0xc3,0x33,0x3c,0x9f, |
0x69,0x9b,0xbe,0x23,0x7b,0xca,0xb3,0xd0, |
0x94,0x5b,0xbc,0xb9,0xff,0xbb,0xba,0x9b, |
0xc0,0x3f,0x20,0x55,0x13,0x7c,0x7c,0x2d, |
0xa4,0x83,0x33,0xc4,0xfb,0x01,0x90,0x7c, |
0xc9,0x03,0xfb,0x05,0xd4,0xc0,0xb5,0xad, |
0xbc,0xca,0x0b,0xfd,0x57,0x58,0x0d,0xbf, |
0xbb,0xbc,0xb3,0xcb,0x34,0xcc,0xe3,0x00, |
0xd0,0x77,0x40,0x5f,0x2d,0x0c,0x9f,0xf5, |
0x15,0xc2,0xef,0x3c,0xd5,0xf7,0xfc,0xa9, |
0xf3,0x59,0xd0,0x13,0x7d,0xe0,0x6a,0xbd, |
0x80,0x90,0x0b,0x2a,0xe4,0x39,0xd2,0x5b, |
0xbc,0xae,0xb7,0x57,0x0d,0x44,0xcf,0x0f, |
0x5c,0x3b,0xd0,0xf3,0x81,0x2d,0xac,0x01, |
0xc9,0xb7,0x7d,0x47,0x2d,0xbc,0xd5,0x6f, |
0xc7,0x2e,0xb5,0x39,0xd7,0x77,0x85,0xc4, |
0xdf,0x39,0xd6,0x90,0x4e,0xad,0x87,0x3d, |
0x95,0x43,0xfb,0x0b,0x98,0x8e,0xf2,0xe4, |
0x03,0xdd,0x1c,0x80,0x39,0x2b,0x52,0xce, |
0x27,0x3c,0xd5,0xbb,0xbd,0xd5,0xcb,0x8e, |
0xa3,0xcf,0x11,0xc4,0x83,0xfb,0xdd,0xcb, |
0xba,0xee,0x61,0x3a,0xdf,0x9f,0xbb,0x4c, |
0x9b,0x34,0x0e,0x24,0xd2,0xbd,0xe9,0xff, |
0x81,0x29,0x10,0xfc,0xaa,0x2b,0x0f,0x1f, |
0x1c,0x7c,0x00,0x25,0x51,0xe2,0x97,0x3e, |
0xcf,0x67,0x3b,0xd6,0xd7,0xfd,0xd0,0xab, |
0x7e,0x57,0x18,0x47,0x0d,0x54,0x7e,0xbf, |
0x6f,0x39,0x08,0x68,0x78,0x92,0xd8,0x42, |
0x2b,0xc0,0x01,0xd0,0xdb,0x45,0xc8,0xbb, |
0x03,0xe9,0xbb,0xbd,0xef,0x67,0x3b,0x0e, |
0x98,0xb3,0xb1,0xb3,0x3e,0xba,0x11,0xbf, |
0x9d,0xe8,0x5b,0xc5,0xc3,0xfe,0xc5,0xff, |
0x3d,0xf3,0xf0,0x92,0x2d,0x28,0x55,0xe1, |
0x17,0xcd,0x0f,0x30,0xe7,0xef,0x57,0xbf, |
0xe9,0x27,0xfe,0xc2,0xcb,0x3c,0x78,0x19, |
0xbf,0xdd,0x73,0xbf,0x72,0xe4,0x1b,0x0d, |
0xbc,0xbe,0xf2,0xf7,0xfd,0x0b,0x00,0xbd, |
0x79,0x91,0xcb,0x2b,0xfc,0x75,0x46,0x7f, |
0xb5,0x2d,0x3c,0x73,0xef,0x5f,0xbf,0xf5, |
0x9f,0x7e,0x20,0x1b,0xcd,0xf0,0xab,0x7e, |
0xe4,0xe3,0xfb,0x56,0x88,0xff,0xf8,0x6b, |
0xfa,0x22,0x00,0x84,0x89,0x0c,0x19,0xfe, |
0x15,0x2c,0xa8,0x27,0xc3,0xab,0x72,0x20, |
0x50,0x74,0xe8,0x60,0x30,0xc3,0x8f,0x2d, |
0x70,0x70,0xb8,0x3b,0x80,0xe3,0x62,0x46, |
0x8c,0x1b,0x35,0x66,0xf4,0x78,0x60,0xd1, |
0x17,0x82,0x06,0x49,0x96,0x34,0x79,0x12, |
0x65,0x4a,0x95,0x2b,0x59,0x9e,0x84,0xd3, |
0x12,0x66,0x4c,0x99,0x33,0x4d,0x0e,0xac, |
0x05,0xc2,0x40,0x4e,0x03,0x5a,0x74,0xf6, |
0xf4,0xf9,0x33,0xe7,0x8b,0x17,0x20,0x44, |
0x8e,0x2c,0x19,0x4c,0xd4,0x0b,0x81,0x0f, |
0x49,0x3e,0x1a,0x10,0x0e,0x47,0x54,0xa9, |
0x1c,0xa9,0x76,0x8c,0x7a,0xe0,0x80,0x1c, |
0x13,0xff,0x8c,0xd2,0xf4,0xfa,0x15,0x62, |
0xac,0xc1,0x97,0x61,0xc9,0x96,0x5d,0xd9, |
0x61,0x20,0xaa,0x9b,0x06,0x5e,0x00,0x75, |
0xeb,0xb3,0x6d,0x0d,0xae,0x19,0x98,0x92, |
0xe4,0x63,0xab,0x95,0x01,0x54,0xff,0xea, |
0x16,0xbc,0x5b,0xc7,0xdd,0x54,0xc1,0x82, |
0xad,0x62,0xad,0x81,0x6a,0x64,0x5f,0xb3, |
0x8b,0x19,0xff,0x1b,0xdb,0x18,0x72,0xd8, |
0xae,0xff,0x6a,0xd5,0xe0,0x69,0x60,0xd1, |
0x5b,0xa0,0x35,0x68,0xa0,0x20,0x88,0xb6, |
0x6f,0x86,0xbb,0x4d,0x40,0x70,0x55,0x9c, |
0x01,0xd7,0xa4,0x68,0x83,0x59,0x13,0x1e, |
0x5a,0x6b,0x20,0x5f,0xd9,0x91,0x69,0x83, |
0x0d,0x08,0x00,0x3b,}; |
static const char data_STM32_LED_html[] = { |
0x2f,0x53,0x54,0x4d,0x33,0x32,0x5f,0x4c, |
0x45,0x44,0x2e,0x68,0x74,0x6d,0x6c,0x00,0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30, |
0x20,0x32,0x30,0x30,0x20,0x4f,0x4b,0x0d, |
0x0a,0x53,0x65,0x72,0x76,0x65,0x72,0x3a, |
0x20,0x75,0x49,0x50,0x2f,0x30,0x2e,0x39, |
0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f, |
0x2f,0x64,0x75,0x6e,0x6b,0x65,0x6c,0x73, |
0x2e,0x63,0x6f,0x6d,0x2f,0x61,0x64,0x61, |
0x6d,0x2f,0x75,0x69,0x70,0x2f,0x29,0x0d, |
0x0a,0x43,0x6f,0x6e,0x74,0x65,0x6e,0x74, |
0x2d,0x74,0x79,0x70,0x65,0x3a,0x20,0x74, |
0x65,0x78,0x74,0x2f,0x68,0x74,0x6d,0x6c, |
0x0d,0x0a,0x0d,0x0a,0x3c,0x21,0x44,0x4f, |
0x43,0x54,0x59,0x50,0x45,0x20,0x48,0x54, |
0x4d,0x4c,0x20,0x50,0x55,0x42,0x4c,0x49, |
0x43,0x20,0x22,0x2d,0x2f,0x2f,0x57,0x33, |
0x43,0x2f,0x2f,0x44,0x54,0x44,0x20,0x48, |
0x54,0x4d,0x4c,0x20,0x34,0x2e,0x30,0x20, |
0x54,0x72,0x61,0x6e,0x73,0x69,0x74,0x69, |
0x6f,0x6e,0x61,0x6c,0x2f,0x2f,0x45,0x4e, |
0x22,0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c, |
0x3e,0x3c,0x68,0x65,0x61,0x64,0x3e,0x3c, |
0x21,0x2d,0x2d,0x20,0x73,0x61,0x76,0x65, |
0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x75, |
0x72,0x6c,0x3d,0x28,0x30,0x30,0x33,0x33, |
0x29,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, |
0x31,0x39,0x32,0x2e,0x31,0x36,0x38,0x2e, |
0x30,0x2e,0x38,0x2f,0x53,0x54,0x4d,0x33, |
0x32,0x5f,0x4c,0x45,0x44,0x2e,0x68,0x74, |
0x6d,0x6c,0x20,0x2d,0x2d,0x3e,0x3c,0x74, |
0x69,0x74,0x6c,0x65,0x3e,0x53,0x54,0x4d, |
0x33,0x32,0x20,0x57,0x65,0x62,0x73,0x65, |
0x72,0x76,0x65,0x72,0x20,0x4c,0x45,0x44, |
0x73,0x20,0x43,0x6f,0x6e,0x74,0x72,0x6f, |
0x6c,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65, |
0x3e,0x0d,0x0a,0x3c,0x6d,0x65,0x74,0x61, |
0x20,0x68,0x74,0x74,0x70,0x2d,0x65,0x71, |
0x75,0x69,0x76,0x3d,0x22,0x43,0x6f,0x6e, |
0x74,0x65,0x6e,0x74,0x2d,0x54,0x79,0x70, |
0x65,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65, |
0x6e,0x74,0x3d,0x22,0x74,0x65,0x78,0x74, |
0x2f,0x68,0x74,0x6d,0x6c,0x3b,0x20,0x63, |
0x68,0x61,0x72,0x73,0x65,0x74,0x3d,0x77, |
0x69,0x6e,0x64,0x6f,0x77,0x73,0x2d,0x31, |
0x32,0x35,0x32,0x22,0x3e,0x0d,0x0a,0x3c, |
0x6d,0x65,0x74,0x61,0x20,0x63,0x6f,0x6e, |
0x74,0x65,0x6e,0x74,0x3d,0x22,0x4d,0x53, |
0x48,0x54,0x4d,0x4c,0x20,0x36,0x2e,0x30, |
0x30,0x2e,0x32,0x38,0x30,0x30,0x2e,0x31, |
0x35,0x36,0x31,0x22,0x20,0x6e,0x61,0x6d, |
0x65,0x3d,0x22,0x47,0x45,0x4e,0x45,0x52, |
0x41,0x54,0x4f,0x52,0x22,0x3e,0x3c,0x2f, |
0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a,0x0d, |
0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e,0x3c, |
0x73,0x6d,0x61,0x6c,0x6c,0x3e,0x3c,0x73, |
0x6d,0x61,0x6c,0x6c,0x3e,0x3c,0x62,0x69, |
0x67,0x3e,0x3c,0x62,0x69,0x67,0x3e,0x3c, |
0x62,0x69,0x67,0x20,0x73,0x74,0x79,0x6c, |
0x65,0x3d,0x22,0x66,0x6f,0x6e,0x74,0x2d, |
0x77,0x65,0x69,0x67,0x68,0x74,0x3a,0x20, |
0x62,0x6f,0x6c,0x64,0x3b,0x22,0x3e,0x3c, |
0x62,0x69,0x67,0x3e,0x3c,0x73,0x74,0x72, |
0x6f,0x6e,0x67,0x3e,0x3c,0x73,0x70,0x61, |
0x6e,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x66,0x6f,0x6e,0x74,0x2d,0x73,0x74, |
0x79,0x6c,0x65,0x3a,0x20,0x69,0x74,0x61, |
0x6c,0x69,0x63,0x3b,0x22,0x3e,0x53,0x54, |
0x4d,0x33,0x32,0x20,0x28,0x43,0x4f,0x52, |
0x54,0x45,0x58,0x20,0x4d,0x33,0x29,0x20, |
0x2d,0x20,0x33,0x32,0x2d,0x62,0x69,0x74, |
0x20,0x4d,0x69,0x63,0x72,0x6f,0x63,0x6f, |
0x6e,0x74,0x72,0x6f,0x6c,0x6c,0x65,0x72, |
0x73,0x3c,0x2f,0x73,0x70,0x61,0x6e,0x3e, |
0x20,0x0d,0x0a,0x3c,0x2f,0x73,0x74,0x72, |
0x6f,0x6e,0x67,0x3e,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x0d,0x0a,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x0d,0x0a,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x3c,0x2f,0x62,0x69,0x67, |
0x3e,0x3c,0x2f,0x62,0x69,0x67,0x3e,0x3c, |
0x2f,0x62,0x69,0x67,0x3e,0x3c,0x2f,0x62, |
0x69,0x67,0x3e,0x3c,0x2f,0x73,0x6d,0x61, |
0x6c,0x6c,0x3e,0x3c,0x2f,0x73,0x6d,0x61, |
0x6c,0x6c,0x3e,0x3c,0x62,0x72,0x3e,0x3c, |
0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e,0x54, |
0x68,0x69,0x73,0x20,0x70,0x61,0x67,0x65, |
0x20,0x61,0x6c,0x6c,0x6f,0x77,0x73,0x20, |
0x0d,0x0a,0x79,0x6f,0x75,0x20,0x74,0x6f, |
0x20,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c, |
0x20,0x74,0x68,0x65,0x20,0x66,0x6f,0x75, |
0x72,0x20,0x4c,0x45,0x44,0x73,0x3a,0x20, |
0x4c,0x45,0x44,0x31,0x2c,0x20,0x4c,0x45, |
0x44,0x32,0x2c,0x20,0x4c,0x45,0x44,0x33, |
0x20,0x61,0x6e,0x64,0x20,0x4c,0x45,0x44, |
0x34,0x20,0x6c,0x6f,0x63,0x61,0x74,0x65, |
0x64,0x20,0x69,0x6e,0x20,0x0d,0x0a,0x74, |
0x68,0x65,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x53,0x54,0x4d,0x33,0x32,0x31,0x30,0x43, |
0x2d,0x45,0x56,0x41,0x4c,0x20,0x62,0x6f, |
0x61,0x72,0x64,0x2e,0x20,0x54,0x6f,0x20, |
0x70,0x75,0x74,0x20,0x6f,0x6e,0x2f,0x6f, |
0x66,0x66,0x3c,0x62,0x72,0x3e,0x61,0x20, |
0x4c,0x45,0x44,0x20,0x79,0x6f,0x75,0x20, |
0x68,0x61,0x76,0x65,0x20,0x74,0x6f,0x20, |
0x63,0x68,0x65,0x63,0x6b,0x2f,0x75,0x6e, |
0x63,0x68,0x65,0x63,0x6b,0x20,0x0d,0x0a, |
0x69,0x74,0x73,0x20,0x63,0x6f,0x72,0x72, |
0x65,0x73,0x70,0x6f,0x6e,0x64,0x69,0x6e, |
0x67,0x20,0x63,0x68,0x65,0x63,0x6b,0x62, |
0x6f,0x78,0x2e,0x20,0x54,0x68,0x65,0x6e, |
0x20,0x79,0x6f,0x75,0x20,0x68,0x61,0x76, |
0x65,0x20,0x74,0x6f,0x20,0x63,0x6c,0x69, |
0x63,0x6b,0x20,0x6f,0x6e,0x20,0x22,0x53, |
0x65,0x6e,0x64,0x22,0x20,0x62,0x75,0x74, |
0x74,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x73, |
0x75,0x62,0x6d,0x69,0x74,0x20,0x0d,0x0a, |
0x74,0x68,0x65,0x20,0x6e,0x65,0x77,0x20, |
0x4c,0x45,0x44,0x73,0x3c,0x62,0x72,0x3e, |
0x63,0x6f,0x6e,0x66,0x69,0x67,0x75,0x72, |
0x61,0x74,0x69,0x6f,0x6e,0x2e,0x20,0x46, |
0x69,0x6e,0x61,0x6c,0x6c,0x79,0x20,0x63, |
0x68,0x65,0x63,0x6b,0x20,0x69,0x6e,0x20, |
0x74,0x68,0x65,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x53,0x54,0x4d,0x33,0x32,0x31,0x30, |
0x43,0x2d,0x45,0x56,0x41,0x4c,0x20,0x62, |
0x6f,0x61,0x72,0x64,0x20,0x0d,0x0a,0x74, |
0x68,0x61,0x74,0x20,0x79,0x6f,0x75,0x20, |
0x67,0x65,0x74,0x20,0x74,0x68,0x65,0x20, |
0x64,0x65,0x73,0x69,0x72,0x65,0x64,0x20, |
0x4c,0x45,0x44,0x73,0x20,0x61,0x72,0x65, |
0x20,0x70,0x75,0x74,0x74,0x65,0x64,0x20, |
0x6f,0x6e,0x2f,0x6f,0x66,0x66,0x2e,0x20, |
0x3c,0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e, |
0x3c,0x62,0x72,0x3e,0x0d,0x0a,0x3c,0x74, |
0x61,0x62,0x6c,0x65,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x77,0x69,0x64,0x74, |
0x68,0x3a,0x20,0x37,0x38,0x37,0x70,0x78, |
0x3b,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3a, |
0x20,0x77,0x68,0x69,0x74,0x65,0x3b,0x20, |
0x68,0x65,0x69,0x67,0x68,0x74,0x3a,0x20, |
0x33,0x31,0x70,0x78,0x3b,0x22,0x20,0x77, |
0x68,0x69,0x74,0x65,0x3d,0x22,0x22,0x20, |
0x63,0x6f,0x6c,0x6f,0x72,0x3d,0x22,0x22, |
0x20,0x3b,0x3d,0x22,0x22,0x20,0x31,0x30, |
0x30,0x3d,0x22,0x22,0x20,0x62,0x6f,0x72, |
0x64,0x65,0x72,0x3d,0x22,0x30,0x22,0x20, |
0x63,0x65,0x6c,0x6c,0x70,0x61,0x64,0x64, |
0x69,0x6e,0x67,0x3d,0x22,0x33,0x22,0x20, |
0x63,0x65,0x6c,0x6c,0x73,0x70,0x61,0x63, |
0x69,0x6e,0x67,0x3d,0x22,0x30,0x22,0x3e, |
0x0d,0x0a,0x20,0x20,0x3c,0x74,0x62,0x6f, |
0x64,0x79,0x3e,0x0d,0x0a,0x20,0x20,0x3c, |
0x74,0x72,0x3e,0x0d,0x0a,0x20,0x20,0x20, |
0x20,0x3c,0x74,0x64,0x20,0x63,0x6c,0x61, |
0x73,0x73,0x3d,0x22,0x74,0x61,0x62,0x74, |
0x69,0x74,0x6c,0x65,0x22,0x20,0x73,0x74, |
0x79,0x6c,0x65,0x3d,0x22,0x68,0x65,0x69, |
0x67,0x68,0x74,0x3a,0x20,0x31,0x35,0x70, |
0x78,0x3b,0x20,0x62,0x61,0x63,0x6b,0x67, |
0x72,0x6f,0x75,0x6e,0x64,0x2d,0x63,0x6f, |
0x6c,0x6f,0x72,0x3a,0x20,0x72,0x67,0x62, |
0x28,0x35,0x31,0x2c,0x20,0x35,0x31,0x2c, |
0x20,0x32,0x35,0x35,0x29,0x3b,0x22,0x3e, |
0x3c,0x62,0x69,0x67,0x3e,0x3c,0x62,0x69, |
0x67,0x3e,0x3c,0x66,0x6f,0x6e,0x74,0x20, |
0x73,0x69,0x7a,0x65,0x3d,0x22,0x2d,0x31, |
0x22,0x3e,0x3c,0x62,0x69,0x67,0x3e,0x3c, |
0x62,0x69,0x67,0x3e,0x3c,0x73,0x74,0x72, |
0x6f,0x6e,0x67,0x3e,0x53,0x54,0x4d,0x33, |
0x32,0x20,0x57,0x65,0x62,0x73,0x65,0x72, |
0x76,0x65,0x72,0x20,0x4c,0x45,0x44,0x73, |
0x20,0x0d,0x0a,0x20,0x20,0x20,0x20,0x20, |
0x20,0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c, |
0x3c,0x2f,0x73,0x74,0x72,0x6f,0x6e,0x67, |
0x3e,0x3c,0x2f,0x62,0x69,0x67,0x3e,0x3c, |
0x2f,0x62,0x69,0x67,0x3e,0x3c,0x2f,0x66, |
0x6f,0x6e,0x74,0x3e,0x3c,0x2f,0x62,0x69, |
0x67,0x3e,0x3c,0x2f,0x62,0x69,0x67,0x3e, |
0x3c,0x2f,0x74,0x64,0x3e,0x3c,0x2f,0x74, |
0x72,0x3e,0x3c,0x2f,0x74,0x62,0x6f,0x64, |
0x79,0x3e,0x3c,0x2f,0x74,0x61,0x62,0x6c, |
0x65,0x3e,0x3c,0x62,0x72,0x3e,0x0d,0x0a, |
0x3c,0x66,0x6f,0x72,0x6d,0x20,0x61,0x63, |
0x74,0x69,0x6f,0x6e,0x3d,0x22,0x6d,0x65, |
0x74,0x68,0x6f,0x64,0x3d,0x67,0x65,0x74, |
0x22,0x3e,0x3c,0x69,0x6e,0x70,0x75,0x74, |
0x20,0x76,0x61,0x6c,0x75,0x65,0x3d,0x22, |
0x31,0x22,0x20,0x6e,0x61,0x6d,0x65,0x3d, |
0x22,0x6c,0x65,0x64,0x22,0x20,0x74,0x79, |
0x70,0x65,0x3d,0x22,0x63,0x68,0x65,0x63, |
0x6b,0x62,0x6f,0x78,0x22,0x3e,0x4c,0x45, |
0x44,0x31,0x3c,0x62,0x72,0x3e,0x3c,0x69, |
0x6e,0x70,0x75,0x74,0x20,0x76,0x61,0x6c, |
0x75,0x65,0x3d,0x22,0x32,0x22,0x20,0x6e, |
0x61,0x6d,0x65,0x3d,0x22,0x6c,0x65,0x64, |
0x22,0x20,0x74,0x79,0x70,0x65,0x3d,0x22, |
0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78, |
0x22,0x3e,0x4c,0x45,0x44,0x32,0x3c,0x62, |
0x72,0x3e,0x3c,0x69,0x6e,0x70,0x75,0x74, |
0x20,0x76,0x61,0x6c,0x75,0x65,0x3d,0x22, |
0x33,0x22,0x20,0x6e,0x61,0x6d,0x65,0x3d, |
0x22,0x6c,0x65,0x64,0x22,0x20,0x74,0x79, |
0x70,0x65,0x3d,0x22,0x63,0x68,0x65,0x63, |
0x6b,0x62,0x6f,0x78,0x22,0x3e,0x4c,0x45, |
0x44,0x33,0x3c,0x62,0x72,0x3e,0x3c,0x69, |
0x6e,0x70,0x75,0x74,0x20,0x76,0x61,0x6c, |
0x75,0x65,0x3d,0x22,0x34,0x22,0x20,0x6e, |
0x61,0x6d,0x65,0x3d,0x22,0x6c,0x65,0x64, |
0x22,0x20,0x74,0x79,0x70,0x65,0x3d,0x22, |
0x63,0x68,0x65,0x63,0x6b,0x62,0x6f,0x78, |
0x22,0x3e,0x4c,0x45,0x44,0x34,0x20,0x3c, |
0x62,0x72,0x3e,0x3c,0x62,0x72,0x3e,0x3c, |
0x69,0x6e,0x70,0x75,0x74,0x20,0x76,0x61, |
0x6c,0x75,0x65,0x3d,0x22,0x53,0x65,0x6e, |
0x64,0x22,0x20,0x74,0x79,0x70,0x65,0x3d, |
0x22,0x73,0x75,0x62,0x6d,0x69,0x74,0x22, |
0x3e,0x20,0x3c,0x2f,0x66,0x6f,0x72,0x6d, |
0x3e,0x0d,0x0a,0x3c,0x68,0x33,0x3e,0x3c, |
0x66,0x6f,0x6e,0x74,0x20,0x73,0x69,0x7a, |
0x65,0x3d,0x22,0x2d,0x31,0x22,0x3e,0x3c, |
0x73,0x70,0x61,0x6e,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x63,0x6f,0x6c,0x6f, |
0x72,0x3a,0x20,0x62,0x6c,0x61,0x63,0x6b, |
0x3b,0x22,0x3e,0x3c,0x2f,0x73,0x70,0x61, |
0x6e,0x3e,0x0d,0x0a,0x3c,0x68,0x33,0x20, |
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x66, |
0x6f,0x6e,0x74,0x2d,0x77,0x65,0x69,0x67, |
0x68,0x74,0x3a,0x20,0x6e,0x6f,0x72,0x6d, |
0x61,0x6c,0x3b,0x22,0x3e,0x54,0x6f,0x20, |
0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74, |
0x6f,0x20,0x74,0x68,0x65,0x20,0x53,0x54, |
0x4d,0x33,0x32,0x20,0x57,0x65,0x62,0x73, |
0x65,0x72,0x76,0x65,0x72,0x20,0x44,0x65, |
0x6d,0x6f,0x20,0x68,0x6f,0x6d,0x65,0x20, |
0x70,0x61,0x67,0x65,0x20,0x0d,0x0a,0x70, |
0x6c,0x65,0x61,0x73,0x65,0x20,0x63,0x6c, |
0x69,0x63,0x6b,0x20,0x6f,0x6e,0x3a,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x3c,0x61, |
0x20,0x68,0x72,0x65,0x66,0x3d,0x22,0x68, |
0x74,0x74,0x70,0x3a,0x2f,0x2f,0x31,0x39, |
0x32,0x2e,0x31,0x36,0x38,0x2e,0x30,0x2e, |
0x38,0x2f,0x53,0x54,0x4d,0x33,0x32,0x5f, |
0x48,0x6f,0x6d,0x65,0x5f,0x57,0x65,0x62, |
0x73,0x65,0x72,0x76,0x65,0x72,0x5f,0x44, |
0x65,0x6d,0x6f,0x2e,0x68,0x74,0x6d,0x6c, |
0x22,0x3e,0x3c,0x62,0x69,0x67,0x3e,0x3c, |
0x73,0x70,0x61,0x6e,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x66,0x6f,0x6e,0x74, |
0x2d,0x77,0x65,0x69,0x67,0x68,0x74,0x3a, |
0x20,0x62,0x6f,0x6c,0x64,0x3b,0x22,0x3e, |
0x48,0x6f,0x6d,0x65,0x3c,0x2f,0x73,0x70, |
0x61,0x6e,0x3e,0x3c,0x2f,0x62,0x69,0x67, |
0x3e,0x3c,0x2f,0x61,0x3e,0x3c,0x2f,0x68, |
0x33,0x3e,0x3c,0x2f,0x66,0x6f,0x6e,0x74, |
0x3e,0x3c,0x2f,0x68,0x33,0x3e,0x0d,0x0a, |
0x3c,0x68,0x33,0x3e,0x3c,0x62,0x72,0x3e, |
0x3c,0x2f,0x68,0x33,0x3e,0x3c,0x66,0x6f, |
0x6e,0x74,0x20,0x73,0x69,0x7a,0x65,0x3d, |
0x22,0x2d,0x31,0x22,0x3e,0x3c,0x73,0x70, |
0x61,0x6e,0x20,0x73,0x74,0x79,0x6c,0x65, |
0x3d,0x22,0x63,0x6f,0x6c,0x6f,0x72,0x3a, |
0x20,0x62,0x6c,0x61,0x63,0x6b,0x3b,0x22, |
0x3e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x3c,0x62,0x72,0x3e,0x3c,0x2f,0x73,0x70, |
0x61,0x6e,0x3e,0x3c,0x2f,0x66,0x6f,0x6e, |
0x74,0x3e,0x3c,0x66,0x6f,0x6e,0x74,0x20, |
0x63,0x6c,0x61,0x73,0x73,0x3d,0x22,0x66, |
0x6f,0x6f,0x74,0x6d,0x73,0x67,0x22,0x3e, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x0d, |
0x0a,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x0d,0x0a, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x3c,0x63,0x6f,0x6d, |
0x6d,0x65,0x6e,0x74,0x20,0x74,0x69,0x74, |
0x6c,0x65,0x3d,0x22,0x23,0x63,0x6f,0x6e, |
0x66,0x69,0x67,0x20,0x74,0x69,0x6d,0x65, |
0x66,0x6d,0x74,0x3d,0x26,0x71,0x75,0x6f, |
0x74,0x3b,0x25,0x59,0x26,0x71,0x75,0x6f, |
0x74,0x3b,0x20,0x22,0x20,0x78,0x6d,0x6c, |
0x6e,0x73,0x3d,0x22,0x68,0x74,0x74,0x70, |
0x3a,0x2f,0x2f,0x64,0x69,0x73,0x72,0x75, |
0x70,0x74,0x69,0x76,0x65,0x2d,0x69,0x6e, |
0x6e,0x6f,0x76,0x61,0x74,0x69,0x6f,0x6e, |
0x73,0x2e,0x63,0x6f,0x6d,0x2f,0x7a,0x6f, |
0x6f,0x2f,0x6e,0x76,0x75,0x22,0x3e,0x3c, |
0x21,0x2d,0x2d,0x23,0x63,0x6f,0x6e,0x66, |
0x69,0x67,0x20,0x74,0x69,0x6d,0x65,0x66, |
0x6d,0x74,0x3d,0x22,0x25,0x59,0x22,0x20, |
0x2d,0x2d,0x3e,0x3c,0x2f,0x63,0x6f,0x6d, |
0x6d,0x65,0x6e,0x74,0x3e,0x3c,0x63,0x6f, |
0x6d,0x6d,0x65,0x6e,0x74,0x20,0x74,0x69, |
0x74,0x6c,0x65,0x3d,0x22,0x23,0x65,0x63, |
0x68,0x6f,0x20,0x76,0x61,0x72,0x3d,0x26, |
0x71,0x75,0x6f,0x74,0x3b,0x44,0x41,0x54, |
0x45,0x5f,0x47,0x4d,0x54,0x26,0x71,0x75, |
0x6f,0x74,0x3b,0x20,0x22,0x20,0x78,0x6d, |
0x6c,0x6e,0x73,0x3d,0x22,0x68,0x74,0x74, |
0x70,0x3a,0x2f,0x2f,0x64,0x69,0x73,0x72, |
0x75,0x70,0x74,0x69,0x76,0x65,0x2d,0x69, |
0x6e,0x6e,0x6f,0x76,0x61,0x74,0x69,0x6f, |
0x6e,0x73,0x2e,0x63,0x6f,0x6d,0x2f,0x7a, |
0x6f,0x6f,0x2f,0x6e,0x76,0x75,0x22,0x3e, |
0x3c,0x21,0x2d,0x2d,0x23,0x65,0x63,0x68, |
0x6f,0x20,0x76,0x61,0x72,0x3d,0x22,0x44, |
0x41,0x54,0x45,0x5f,0x47,0x4d,0x54,0x22, |
0x20,0x2d,0x2d,0x3e,0x3c,0x2f,0x63,0x6f, |
0x6d,0x6d,0x65,0x6e,0x74,0x3e,0x20,0x0d, |
0x0a,0x3c,0x73,0x70,0x61,0x6e,0x20,0x73, |
0x74,0x79,0x6c,0x65,0x3d,0x22,0x63,0x6f, |
0x6c,0x6f,0x72,0x3a,0x20,0x73,0x69,0x6c, |
0x76,0x65,0x72,0x3b,0x22,0x3e,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x41,0x6c, |
0x6c,0x20,0x0d,0x0a,0x72,0x69,0x67,0x68, |
0x74,0x73,0x20,0x72,0x65,0x73,0x65,0x72, |
0x76,0x65,0x64,0x20,0xa9,0x20,0x32,0x30, |
0x30,0x39,0x20,0x53,0x54,0x4d,0x69,0x63, |
0x72,0x6f,0x65,0x6c,0x65,0x63,0x74,0x72, |
0x6f,0x6e,0x69,0x63,0x73,0x3c,0x2f,0x73, |
0x70,0x61,0x6e,0x3e,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x3c,0x2f,0x66,0x6f,0x6e,0x74, |
0x3e,0x3c,0x2f,0x62,0x6f,0x64,0x79,0x3e, |
0x3c,0x2f,0x68,0x74,0x6d,0x6c,0x3e,}; |
static char data_STM32_StatusBar_html[] = { |
0x2f,0x53,0x54,0x4d,0x33,0x32,0x5f,0x53, |
0x74,0x61,0x74,0x75,0x73,0x42,0x61,0x72, |
0x2e,0x68,0x74,0x6d,0x6c,0x00,0x48,0x54, |
0x54,0x50,0x2f,0x31,0x2e,0x30,0x20,0x32, |
0x30,0x30,0x20,0x4f,0x4b,0x0d,0x0a,0x53, |
0x65,0x72,0x76,0x65,0x72,0x3a,0x20,0x75, |
0x49,0x50,0x2f,0x30,0x2e,0x39,0x20,0x28, |
0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x64, |
0x75,0x6e,0x6b,0x65,0x6c,0x73,0x2e,0x63, |
0x6f,0x6d,0x2f,0x61,0x64,0x61,0x6d,0x2f, |
0x75,0x69,0x70,0x2f,0x29,0x0d,0x0a,0x43, |
0x6f,0x6e,0x74,0x65,0x6e,0x74,0x2d,0x74, |
0x79,0x70,0x65,0x3a,0x20,0x74,0x65,0x78, |
0x74,0x2f,0x68,0x74,0x6d,0x6c,0x0d,0x0a, |
0x0d,0x0a,0x3c,0x21,0x44,0x4f,0x43,0x54, |
0x59,0x50,0x45,0x20,0x48,0x54,0x4d,0x4c, |
0x20,0x50,0x55,0x42,0x4c,0x49,0x43,0x20, |
0x22,0x2d,0x2f,0x2f,0x57,0x33,0x43,0x2f, |
0x2f,0x44,0x54,0x44,0x20,0x48,0x54,0x4d, |
0x4c,0x20,0x34,0x2e,0x30,0x31,0x20,0x54, |
0x72,0x61,0x6e,0x73,0x69,0x74,0x69,0x6f, |
0x6e,0x61,0x6c,0x2f,0x2f,0x45,0x4e,0x22, |
0x3e,0x0a,0x3c,0x68,0x74,0x6d,0x6c,0x3e, |
0x3c,0x68,0x65,0x61,0x64,0x3e,0x0d,0x0a, |
0x3c,0x6d,0x65,0x74,0x61,0x20,0x68,0x74, |
0x74,0x70,0x2d,0x65,0x71,0x75,0x69,0x76, |
0x3d,0x22,0x72,0x65,0x66,0x72,0x65,0x73, |
0x68,0x22,0x20,0x63,0x6f,0x6e,0x74,0x65, |
0x6e,0x74,0x3d,0x22,0x31,0x22,0x3e,0x0d, |
0x0a,0x3c,0x74,0x69,0x74,0x6c,0x65,0x3e, |
0x53,0x54,0x4d,0x33,0x32,0x20,0x57,0x65, |
0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x20, |
0x41,0x44,0x43,0x20,0x43,0x6f,0x6e,0x76, |
0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x53, |
0x74,0x61,0x74,0x75,0x73,0x20,0x42,0x61, |
0x72,0x3c,0x2f,0x74,0x69,0x74,0x6c,0x65, |
0x3e,0x3c,0x2f,0x68,0x65,0x61,0x64,0x3e, |
0x0d,0x0a,0x3c,0x62,0x6f,0x64,0x79,0x3e, |
0x3c,0x73,0x6d,0x61,0x6c,0x6c,0x3e,0x3c, |
0x73,0x6d,0x61,0x6c,0x6c,0x3e,0x3c,0x62, |
0x69,0x67,0x3e,0x3c,0x62,0x69,0x67,0x3e, |
0x3c,0x62,0x69,0x67,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x66,0x6f,0x6e,0x74, |
0x2d,0x77,0x65,0x69,0x67,0x68,0x74,0x3a, |
0x20,0x62,0x6f,0x6c,0x64,0x3b,0x22,0x3e, |
0x3c,0x62,0x69,0x67,0x3e,0x3c,0x73,0x74, |
0x72,0x6f,0x6e,0x67,0x3e,0x3c,0x65,0x6d, |
0x3e,0x3c,0x73,0x70,0x61,0x6e,0x20,0x73, |
0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x6f, |
0x6e,0x74,0x2d,0x73,0x74,0x79,0x6c,0x65, |
0x3a,0x20,0x69,0x74,0x61,0x6c,0x69,0x63, |
0x3b,0x22,0x3e,0x53,0x54,0x4d,0x33,0x32, |
0x0d,0x0a,0x28,0x43,0x4f,0x52,0x54,0x45, |
0x58,0x20,0x4d,0x33,0x29,0x20,0x2d,0x20, |
0x33,0x32,0x2d,0x62,0x69,0x74,0x20,0x4d, |
0x69,0x63,0x72,0x6f,0x63,0x6f,0x6e,0x74, |
0x72,0x6f,0x6c,0x6c,0x65,0x72,0x73,0x3c, |
0x2f,0x73,0x70,0x61,0x6e,0x3e,0x3c,0x2f, |
0x65,0x6d,0x3e,0x3c,0x2f,0x73,0x74,0x72, |
0x6f,0x6e,0x67,0x3e,0x0d,0x0a,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x0d,0x0a,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x3c,0x2f,0x62,0x69,0x67,0x3e, |
0x3c,0x2f,0x62,0x69,0x67,0x3e,0x3c,0x2f, |
0x62,0x69,0x67,0x3e,0x3c,0x2f,0x62,0x69, |
0x67,0x3e,0x3c,0x2f,0x73,0x6d,0x61,0x6c, |
0x6c,0x3e,0x3c,0x2f,0x73,0x6d,0x61,0x6c, |
0x6c,0x3e,0x3c,0x66,0x6f,0x6e,0x74,0x20, |
0x73,0x69,0x7a,0x65,0x3d,0x22,0x2d,0x31, |
0x22,0x3e,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x0d,0x0a,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x3c,0x2f,0x66,0x6f,0x6e,0x74, |
0x3e,0x3c,0x73,0x70,0x61,0x6e,0x20,0x73, |
0x74,0x79,0x6c,0x65,0x3d,0x22,0x66,0x6f, |
0x6e,0x74,0x2d,0x77,0x65,0x69,0x67,0x68, |
0x74,0x3a,0x20,0x62,0x6f,0x6c,0x64,0x3b, |
0x22,0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x62, |
0x72,0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x2f, |
0x73,0x70,0x61,0x6e,0x3e,0x54,0x68,0x69, |
0x73,0x20,0x70,0x61,0x67,0x65,0x20,0x61, |
0x6c,0x6c,0x6f,0x77,0x73,0x20,0x79,0x6f, |
0x75,0x20,0x74,0x6f,0x20,0x67,0x65,0x74, |
0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75, |
0x6f,0x75,0x73,0x6c,0x79,0x20,0x74,0x68, |
0x65,0x20,0x41,0x44,0x43,0x20,0x43,0x68, |
0x61,0x6e,0x6e,0x65,0x6c,0x20,0x31,0x34, |
0x20,0x61,0x6e,0x61,0x6c,0x6f,0x67,0x20, |
0x69,0x6e,0x70,0x75,0x74,0x20,0x63,0x6f, |
0x6e,0x76,0x65,0x72,0x74,0x65,0x64,0x20, |
0x76,0x61,0x6c,0x75,0x65,0x2e,0x20,0x54, |
0x68,0x69,0x73,0x20,0x41,0x44,0x43,0x20, |
0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20, |
0x69,0x73,0x20,0x63,0x6f,0x6e,0x6e,0x65, |
0x63,0x74,0x65,0x64,0x20,0x3c,0x62,0x72, |
0x3e,0x74,0x6f,0x0d,0x0a,0x74,0x68,0x65, |
0x20,0x52,0x56,0x31,0x20,0x70,0x6f,0x74, |
0x65,0x6e,0x74,0x69,0x6f,0x6d,0x65,0x74, |
0x65,0x72,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x6c,0x6f,0x63,0x61,0x74,0x65,0x64,0x20, |
0x69,0x6e,0x20,0x74,0x68,0x65,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x53,0x54,0x4d,0x33, |
0x32,0x31,0x30,0x43,0x2d,0x45,0x56,0x41, |
0x4c,0x20,0x62,0x6f,0x61,0x72,0x64,0x2e, |
0x0d,0x0a,0x54,0x68,0x69,0x73,0x20,0x73, |
0x74,0x61,0x74,0x75,0x73,0x20,0x62,0x61, |
0x72,0x20,0x69,0x73,0x20,0x75,0x70,0x64, |
0x61,0x74,0x65,0x64,0x2c,0x20,0x61,0x75, |
0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61, |
0x6c,0x6c,0x79,0x2c,0x20,0x65,0x61,0x63, |
0x68,0x20,0x31,0x73,0x20,0x77,0x69,0x74, |
0x68,0x20,0x74,0x68,0x65,0x20,0x3c,0x62, |
0x72,0x3e,0x6c,0x61,0x73,0x74,0x20,0x63, |
0x6f,0x6e,0x76,0x65,0x72,0x74,0x65,0x64, |
0x20,0x41,0x44,0x43,0x20,0x43,0x68,0x61, |
0x6e,0x6e,0x65,0x6c,0x20,0x31,0x34,0x20, |
0x76,0x61,0x6c,0x75,0x65,0x2e,0x20,0x59, |
0x6f,0x75,0x20,0x63,0x6f,0x75,0x6c,0x64, |
0x20,0x63,0x68,0x65,0x63,0x6b,0x20,0x74, |
0x68,0x69,0x73,0x20,0x62,0x79,0x20,0x63, |
0x68,0x61,0x6e,0x67,0x69,0x6e,0x67,0x20, |
0x74,0x68,0x65,0x20,0x52,0x56,0x31,0x20, |
0x70,0x6f,0x74,0x65,0x6e,0x74,0x69,0x6f, |
0x6d,0x65,0x74,0x65,0x72,0x20,0x70,0x6f, |
0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x61, |
0x6e,0x64,0x20,0x63,0x68,0x65,0x63,0x6b, |
0x20,0x74,0x68,0x61,0x74,0x20,0x74,0x68, |
0x65,0x20,0x3c,0x62,0x72,0x3e,0x73,0x74, |
0x61,0x74,0x75,0x73,0x20,0x62,0x61,0x72, |
0x20,0x69,0x73,0x20,0x75,0x70,0x64,0x61, |
0x74,0x65,0x64,0x2c,0x20,0x62,0x79,0x20, |
0x61,0x6e,0x20,0x61,0x75,0x74,0x6f,0x6d, |
0x61,0x74,0x69,0x63,0x20,0x72,0x65,0x66, |
0x72,0x65,0x73,0x68,0x20,0x6f,0x66,0x20, |
0x74,0x68,0x69,0x73,0x20,0x70,0x61,0x67, |
0x65,0x2c,0x20,0x77,0x69,0x74,0x68,0x20, |
0x74,0x68,0x65,0x20,0x6e,0x65,0x77,0x20, |
0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x65, |
0x64,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e, |
0x20,0x3c,0x62,0x72,0x3e,0x3c,0x62,0x72, |
0x3e,0x3c,0x74,0x61,0x62,0x6c,0x65,0x20, |
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x63, |
0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x77,0x68, |
0x69,0x74,0x65,0x3b,0x20,0x77,0x69,0x64, |
0x74,0x68,0x3a,0x20,0x37,0x38,0x31,0x70, |
0x78,0x3b,0x20,0x68,0x65,0x69,0x67,0x68, |
0x74,0x3a,0x20,0x33,0x31,0x70,0x78,0x3b, |
0x22,0x20,0x62,0x6f,0x72,0x64,0x65,0x72, |
0x3d,0x22,0x30,0x22,0x20,0x63,0x65,0x6c, |
0x6c,0x70,0x61,0x64,0x64,0x69,0x6e,0x67, |
0x3d,0x22,0x33,0x22,0x20,0x63,0x65,0x6c, |
0x6c,0x73,0x70,0x61,0x63,0x69,0x6e,0x67, |
0x3d,0x22,0x30,0x22,0x3e,0x3c,0x74,0x62, |
0x6f,0x64,0x79,0x3e,0x3c,0x74,0x72,0x3e, |
0x3c,0x74,0x64,0x20,0x63,0x6c,0x61,0x73, |
0x73,0x3d,0x22,0x74,0x61,0x62,0x74,0x69, |
0x74,0x6c,0x65,0x22,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x68,0x65,0x69,0x67, |
0x68,0x74,0x3a,0x20,0x31,0x35,0x70,0x78, |
0x3b,0x20,0x62,0x61,0x63,0x6b,0x67,0x72, |
0x6f,0x75,0x6e,0x64,0x2d,0x63,0x6f,0x6c, |
0x6f,0x72,0x3a,0x20,0x72,0x67,0x62,0x28, |
0x35,0x31,0x2c,0x20,0x35,0x31,0x2c,0x20, |
0x32,0x35,0x35,0x29,0x3b,0x22,0x3e,0x3c, |
0x62,0x69,0x67,0x3e,0x3c,0x62,0x69,0x67, |
0x3e,0x3c,0x66,0x6f,0x6e,0x74,0x20,0x73, |
0x69,0x7a,0x65,0x3d,0x22,0x2d,0x31,0x22, |
0x3e,0x3c,0x62,0x69,0x67,0x3e,0x3c,0x62, |
0x69,0x67,0x3e,0x3c,0x73,0x74,0x72,0x6f, |
0x6e,0x67,0x3e,0x53,0x54,0x4d,0x33,0x32, |
0x20,0x57,0x65,0x62,0x73,0x65,0x72,0x76, |
0x65,0x72,0x20,0x41,0x44,0x43,0x20,0x43, |
0x6f,0x6e,0x76,0x65,0x72,0x73,0x69,0x6f, |
0x6e,0x20,0x53,0x74,0x61,0x74,0x75,0x73, |
0x20,0x42,0x61,0x72,0x3a,0x20,0x49,0x6e, |
0x70,0x75,0x74,0x20,0x43,0x68,0x61,0x6e, |
0x6e,0x65,0x6c,0x20,0x31,0x34,0x20,0x28, |
0x50,0x6f,0x74,0x65,0x6e,0x74,0x69,0x6f, |
0x6d,0x65,0x74,0x65,0x72,0x20,0x52,0x56, |
0x31,0x29,0x20,0x3a,0x3c,0x2f,0x73,0x74, |
0x72,0x6f,0x6e,0x67,0x3e,0x3c,0x2f,0x62, |
0x69,0x67,0x3e,0x3c,0x2f,0x62,0x69,0x67, |
0x3e,0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e, |
0x3c,0x2f,0x62,0x69,0x67,0x3e,0x3c,0x2f, |
0x62,0x69,0x67,0x3e,0x3c,0x2f,0x74,0x64, |
0x3e,0x3c,0x2f,0x74,0x72,0x3e,0x3c,0x2f, |
0x74,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f, |
0x74,0x61,0x62,0x6c,0x65,0x3e,0x3c,0x62, |
0x72,0x3e,0x3c,0x74,0x61,0x62,0x6c,0x65, |
0x20,0x62,0x67,0x63,0x6f,0x6c,0x6f,0x72, |
0x3d,0x22,0x23,0x63,0x63,0x63,0x63,0x63, |
0x63,0x22,0x20,0x62,0x6f,0x72,0x64,0x65, |
0x72,0x3d,0x22,0x33,0x22,0x20,0x63,0x65, |
0x6c,0x6c,0x70,0x61,0x64,0x64,0x69,0x6e, |
0x67,0x3d,0x22,0x30,0x22,0x20,0x63,0x65, |
0x6c,0x6c,0x73,0x70,0x61,0x63,0x69,0x6e, |
0x67,0x3d,0x22,0x30,0x22,0x20,0x77,0x69, |
0x64,0x74,0x68,0x3d,0x22,0x35,0x32,0x30, |
0x22,0x3e,0x0d,0x0a,0x3c,0x74,0x62,0x6f, |
0x64,0x79,0x3e,0x3c,0x74,0x72,0x3e,0x0d, |
0x0a,0x3c,0x74,0x64,0x3e,0x0d,0x0a,0x3c, |
0x74,0x61,0x62,0x6c,0x65,0x20,0x62,0x6f, |
0x72,0x64,0x65,0x72,0x3d,0x22,0x30,0x22, |
0x20,0x63,0x65,0x6c,0x6c,0x70,0x61,0x64, |
0x64,0x69,0x6e,0x67,0x3d,0x22,0x30,0x22, |
0x20,0x63,0x65,0x6c,0x6c,0x73,0x70,0x61, |
0x63,0x69,0x6e,0x67,0x3d,0x22,0x30,0x22, |
0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22, |
0x56,0x41,0x4c,0x22,0x3e,0x0d,0x0a,0x3c, |
0x74,0x62,0x6f,0x64,0x79,0x3e,0x3c,0x74, |
0x72,0x3e,0x3c,0x74,0x64,0x20,0x62,0x67, |
0x63,0x6f,0x6c,0x6f,0x72,0x3d,0x22,0x23, |
0x33,0x33,0x66,0x66,0x30,0x30,0x22,0x3e, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x3c,0x2f, |
0x74,0x64,0x3e,0x3c,0x2f,0x74,0x72,0x3e, |
0x0d,0x0a,0x3c,0x2f,0x74,0x62,0x6f,0x64, |
0x79,0x3e,0x3c,0x2f,0x74,0x61,0x62,0x6c, |
0x65,0x3e,0x0d,0x0a,0x3c,0x2f,0x74,0x64, |
0x3e,0x0d,0x0a,0x3c,0x2f,0x74,0x72,0x3e, |
0x0d,0x0a,0x3c,0x2f,0x74,0x62,0x6f,0x64, |
0x79,0x3e,0x3c,0x2f,0x74,0x61,0x62,0x6c, |
0x65,0x3e,0x0d,0x0a,0x0d,0x0a,0x3c,0x74, |
0x61,0x62,0x6c,0x65,0x20,0x62,0x6f,0x72, |
0x64,0x65,0x72,0x3d,0x22,0x30,0x22,0x20, |
0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x35, |
0x32,0x30,0x22,0x3e,0x0d,0x0a,0x3c,0x74, |
0x62,0x6f,0x64,0x79,0x3e,0x3c,0x74,0x72, |
0x3e,0x0d,0x0a,0x3c,0x74,0x64,0x20,0x73, |
0x74,0x79,0x6c,0x65,0x3d,0x22,0x63,0x6f, |
0x6c,0x6f,0x72,0x3a,0x20,0x72,0x67,0x62, |
0x28,0x35,0x31,0x2c,0x20,0x35,0x31,0x2c, |
0x20,0x31,0x35,0x33,0x29,0x3b,0x22,0x20, |
0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31, |
0x34,0x25,0x22,0x3e,0x30,0x56,0x3c,0x2f, |
0x74,0x64,0x3e,0x0d,0x0a,0x3c,0x74,0x64, |
0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22, |
0x31,0x34,0x25,0x22,0x3e,0x30,0x2e,0x35, |
0x56,0x3c,0x2f,0x74,0x64,0x3e,0x0d,0x0a, |
0x3c,0x74,0x64,0x20,0x77,0x69,0x64,0x74, |
0x68,0x3d,0x22,0x31,0x34,0x25,0x22,0x3e, |
0x31,0x56,0x3c,0x2f,0x74,0x64,0x3e,0x0d, |
0x0a,0x3c,0x74,0x64,0x20,0x77,0x69,0x64, |
0x74,0x68,0x3d,0x22,0x31,0x34,0x25,0x22, |
0x3e,0x31,0x2e,0x35,0x56,0x3c,0x2f,0x74, |
0x64,0x3e,0x0d,0x0a,0x3c,0x74,0x64,0x20, |
0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x31, |
0x34,0x25,0x22,0x3e,0x32,0x56,0x3c,0x2f, |
0x74,0x64,0x3e,0x0d,0x0a,0x3c,0x74,0x64, |
0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22, |
0x31,0x34,0x25,0x22,0x3e,0x32,0x2e,0x35, |
0x56,0x3c,0x2f,0x74,0x64,0x3e,0x0d,0x0a, |
0x3c,0x74,0x64,0x20,0x77,0x69,0x64,0x74, |
0x68,0x3d,0x22,0x31,0x34,0x25,0x22,0x3e, |
0x33,0x56,0x3c,0x2f,0x74,0x64,0x3e,0x0d, |
0x0a,0x3c,0x2f,0x74,0x72,0x3e,0x0d,0x0a, |
0x3c,0x2f,0x74,0x62,0x6f,0x64,0x79,0x3e, |
0x3c,0x2f,0x74,0x61,0x62,0x6c,0x65,0x3e, |
0x0d,0x0a,0x20,0x20,0x3c,0x66,0x6f,0x6e, |
0x74,0x20,0x73,0x69,0x7a,0x65,0x3d,0x22, |
0x2d,0x31,0x22,0x3e,0x3c,0x73,0x70,0x61, |
0x6e,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x63,0x6f,0x6c,0x6f,0x72,0x3a,0x20, |
0x62,0x6c,0x61,0x63,0x6b,0x3b,0x22,0x3e, |
0x20,0x3c,0x68,0x33,0x20,0x73,0x74,0x79, |
0x6c,0x65,0x3d,0x22,0x66,0x6f,0x6e,0x74, |
0x2d,0x77,0x65,0x69,0x67,0x68,0x74,0x3a, |
0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, |
0x22,0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x2f, |
0x68,0x33,0x3e,0x3c,0x2f,0x73,0x70,0x61, |
0x6e,0x3e,0x3c,0x2f,0x66,0x6f,0x6e,0x74, |
0x3e,0x3c,0x66,0x6f,0x6e,0x74,0x20,0x73, |
0x69,0x7a,0x65,0x3d,0x22,0x2d,0x31,0x22, |
0x3e,0x3c,0x73,0x70,0x61,0x6e,0x20,0x73, |
0x74,0x79,0x6c,0x65,0x3d,0x22,0x63,0x6f, |
0x6c,0x6f,0x72,0x3a,0x20,0x62,0x6c,0x61, |
0x63,0x6b,0x3b,0x22,0x3e,0x3c,0x68,0x33, |
0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22, |
0x66,0x6f,0x6e,0x74,0x2d,0x77,0x65,0x69, |
0x67,0x68,0x74,0x3a,0x20,0x6e,0x6f,0x72, |
0x6d,0x61,0x6c,0x3b,0x22,0x3e,0x54,0x6f, |
0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, |
0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x53, |
0x54,0x4d,0x33,0x32,0x20,0x57,0x65,0x62, |
0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x44, |
0x65,0x6d,0x6f,0x20,0x68,0x6f,0x6d,0x65, |
0x20,0x70,0x61,0x67,0x65,0x20,0x70,0x6c, |
0x65,0x61,0x73,0x65,0x20,0x63,0x6c,0x69, |
0x63,0x6b,0x20,0x6f,0x6e,0x3a,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x3c,0x73,0x70,0x61, |
0x6e,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x66,0x6f,0x6e,0x74,0x2d,0x77,0x65, |
0x69,0x67,0x68,0x74,0x3a,0x20,0x62,0x6f, |
0x6c,0x64,0x3b,0x22,0x3e,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x3c,0x2f,0x73,0x70,0x61, |
0x6e,0x3e,0x3c,0x62,0x69,0x67,0x3e,0x3c, |
0x61,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, |
0x22,0x66,0x6f,0x6e,0x74,0x2d,0x77,0x65, |
0x69,0x67,0x68,0x74,0x3a,0x20,0x62,0x6f, |
0x6c,0x64,0x3b,0x22,0x20,0x68,0x72,0x65, |
0x66,0x3d,0x22,0x53,0x54,0x4d,0x33,0x32, |
0x5f,0x48,0x6f,0x6d,0x65,0x5f,0x57,0x65, |
0x62,0x73,0x65,0x72,0x76,0x65,0x72,0x5f, |
0x44,0x65,0x6d,0x6f,0x2e,0x68,0x74,0x6d, |
0x6c,0x22,0x3e,0x48,0x6f,0x6d,0x65,0x3c, |
0x2f,0x61,0x3e,0x3c,0x2f,0x62,0x69,0x67, |
0x3e,0x3c,0x2f,0x68,0x33,0x3e,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x3c,0x62,0x72,0x3e,0x3c,0x62, |
0x72,0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x62, |
0x72,0x3e,0x3c,0x62,0x72,0x3e,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, |
0x5f,0x5f,0x5f,0x5f,0x5f,0x3c,0x62,0x72, |
0x3e,0x3c,0x2f,0x73,0x70,0x61,0x6e,0x3e, |
0x3c,0x2f,0x66,0x6f,0x6e,0x74,0x3e,0x3c, |
0x66,0x6f,0x6e,0x74,0x20,0x63,0x6c,0x61, |
0x73,0x73,0x3d,0x22,0x66,0x6f,0x6f,0x74, |
0x6d,0x73,0x67,0x22,0x3e,0x0d,0x0a,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x0d,0x0a,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x0d,0x0a,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x20,0x26,0x6e,0x62,0x73,0x70, |
0x3b,0x20,0x3c,0x73,0x70,0x61,0x6e,0x20, |
0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x63, |
0x6f,0x6c,0x6f,0x72,0x3a,0x20,0x73,0x69, |
0x6c,0x76,0x65,0x72,0x3b,0x22,0x3e,0x20, |
0x26,0x6e,0x62,0x73,0x70,0x3b,0x20,0x26, |
0x6e,0x62,0x73,0x70,0x3b,0x20,0x26,0x6e, |
0x62,0x73,0x70,0x3b,0x20,0x26,0x6e,0x62, |
0x73,0x70,0x3b,0x20,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x26,0x6e,0x62,0x73,0x70,0x3b, |
0x20,0x26,0x6e,0x62,0x73,0x70,0x3b,0x41, |
0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74, |
0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76, |
0x65,0x64,0x20,0xa9,0x20,0x20,0x32,0x30, |
0x30,0x39,0x20,0x53,0x54,0x4d,0x69,0x63, |
0x72,0x6f,0x65,0x6c,0x65,0x63,0x74,0x72, |
0x6f,0x6e,0x69,0x63,0x73,0x3c,0x2f,0x73, |
0x70,0x61,0x6e,0x3e,0x26,0x6e,0x62,0x73, |
0x70,0x3b,0x3c,0x2f,0x66,0x6f,0x6e,0x74, |
0x3e,0x0d,0x0a,0x3c,0x66,0x6f,0x6e,0x74, |
0x20,0x63,0x6c,0x61,0x73,0x73,0x3d,0x22, |
0x66,0x6f,0x6f,0x74,0x6d,0x73,0x67,0x22, |
0x3e,0x3c,0x62,0x72,0x3e,0x3c,0x2f,0x66, |
0x6f,0x6e,0x74,0x3e,0x3c,0x62,0x72,0x3e, |
0x3c,0x66,0x6f,0x6e,0x74,0x20,0x73,0x69, |
0x7a,0x65,0x3d,0x22,0x2d,0x31,0x22,0x3e, |
0x3c,0x73,0x70,0x61,0x6e,0x20,0x73,0x74, |
0x79,0x6c,0x65,0x3d,0x22,0x63,0x6f,0x6c, |
0x6f,0x72,0x3a,0x20,0x62,0x6c,0x61,0x63, |
0x6b,0x3b,0x22,0x3e,0x3c,0x2f,0x73,0x70, |
0x61,0x6e,0x3e,0x3c,0x2f,0x66,0x6f,0x6e, |
0x74,0x3e,0x0d,0x0a,0x0d,0x0a,0x3c,0x2f, |
0x62,0x6f,0x64,0x79,0x3e,0x3c,0x2f,0x68, |
0x74,0x6d,0x6c,0x3e,}; |
const struct fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; |
const struct fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 32, sizeof(data_index_html) - 32}}; |
const struct fsdata_file file_STM32_Home_Webserver_Demo_files_st766_gif[] = {{file_index_html, data_STM32_Home_Webserver_Demo_files_st766_gif, data_STM32_Home_Webserver_Demo_files_st766_gif + 43, sizeof(data_STM32_Home_Webserver_Demo_files_st766_gif) - 43}}; |
const struct fsdata_file file_STM32_Home_Webserver_Demo_files_stm32_extends_gif[] = {{file_STM32_Home_Webserver_Demo_files_st766_gif, data_STM32_Home_Webserver_Demo_files_stm32_extends_gif, data_STM32_Home_Webserver_Demo_files_stm32_extends_gif + 51, sizeof(data_STM32_Home_Webserver_Demo_files_stm32_extends_gif) - 51}}; |
const struct fsdata_file file_STM32_LED_html[] = {{file_STM32_Home_Webserver_Demo_files_stm32_extends_gif, data_STM32_LED_html, data_STM32_LED_html + 16, sizeof(data_STM32_LED_html) - 16}}; |
const struct fsdata_file file_STM32_StatusBar_html[] = {{file_STM32_LED_html, data_STM32_StatusBar_html, data_STM32_StatusBar_html + 22, sizeof(data_STM32_StatusBar_html) - 22}}; |
#define FS_ROOT file_STM32_StatusBar_html |
#define FS_NUMFILES 8 |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/fsdata.d |
---|
0,0 → 1,2 |
Utilities/uip/fsdata.o: Utilities/uip/fsdata.c Utilities/uip/fsdata.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/fsdata.h |
---|
0,0 → 1,64 |
/* |
* Copyright (c) 2001, Swedish Institute of Computer Science. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. Neither the name of the Institute nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* This file is part of the lwIP TCP/IP stack. |
* |
* Author: Adam Dunkels <adam@sics.se> |
* |
* $Id: fsdata.h,v 1.4.2.1 2003/10/04 22:54:06 adam Exp $ |
*/ |
#ifndef __FSDATA_H__ |
#define __FSDATA_H__ |
#include "uipopt.h" |
struct fsdata_file { |
const struct fsdata_file *next; |
const char *name; |
const char *data; |
const int len; |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
u16_t count; |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
}; |
struct fsdata_file_noconst { |
struct fsdata_file *next; |
char *name; |
char *data; |
int len; |
#ifdef FS_STATISTICS |
#if FS_STATISTICS == 1 |
u16_t count; |
#endif /* FS_STATISTICS */ |
#endif /* FS_STATISTICS */ |
}; |
#endif /* __FSDATA_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/httpd.c |
---|
0,0 → 1,455 |
/** |
* \addtogroup exampleapps |
* @{ |
*/ |
/** |
* \defgroup httpd Web server |
* @{ |
* |
* The uIP web server is a very simplistic implementation of an HTTP |
* server. It can serve web pages and files from a read-only ROM |
* filesystem, and provides a very small scripting language. |
* |
* The script language is very simple and works as follows. Each |
* script line starts with a command character, either "i", "t", "c", |
* "#" or ".". The "i" command tells the script interpreter to |
* "include" a file from the virtual file system and output it to the |
* web browser. The "t" command should be followed by a line of text |
* that is to be output to the browser. The "c" command is used to |
* call one of the C functions from the httpd-cgi.c file. A line that |
* starts with a "#" is ignored (i.e., the "#" denotes a comment), and |
* the "." denotes the last script line. |
* |
* The script that produces the file statistics page looks somewhat |
* like this: |
* |
\code |
i /header.html |
t <h1>File statistics</h1><br><table width="100%"> |
t <tr><td><a href="/index.html">/index.html</a></td><td> |
c a /index.html |
t </td></tr> <tr><td><a href="/cgi/files">/cgi/files</a></td><td> |
c a /cgi/files |
t </td></tr> <tr><td><a href="/cgi/tcp">/cgi/tcp</a></td><td> |
c a /cgi/tcp |
t </td></tr> <tr><td><a href="/404.html">/404.html</a></td><td> |
c a /404.html |
t </td></tr></table> |
i /footer.plain |
. |
\endcode |
* |
*/ |
/** |
* \file |
* HTTP server. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: httpd.c,v 1.28.2.6 2003/10/07 13:22:27 adam Exp $ |
* |
*/ |
#include "stm32f10x.h" |
#include "stm32_eval.h" |
#include "uip.h" |
#include "httpd.h" |
#include "fs.h" |
#include "fsdata.h" |
#include "cgi.h" |
#define NULL (void *)0 |
/* The HTTP server states: */ |
#define HTTP_NOGET 0 |
#define HTTP_FILE 1 |
#define HTTP_TEXT 2 |
#define HTTP_FUNC 3 |
#define HTTP_END 4 |
#ifdef UIP_DEBUG |
#include <stdio.h> |
#define PRINT(x) printf("%s", x) |
#define PRINTLN(x) printf("%s\n", x) |
#else /* UIP_DEBUG */ |
#define PRINT(x) |
#define PRINTLN(x) |
#endif /* DEBUG */ |
struct httpd_state *hs; |
extern const struct fsdata_file file_index_html; |
extern const struct fsdata_file file_404_html; |
extern const struct fsdata_file_noconst file_STM32_LED_html; |
extern const struct fsdata_file_noconst file_STM32_StatusBar_html; |
static void next_scriptline(void); |
static void next_scriptstate(void); |
#define ISO_G 0x47 |
#define ISO_E 0x45 |
#define ISO_T 0x54 |
#define ISO_slash 0x2f |
#define ISO_c 0x63 |
#define ISO_g 0x67 |
#define ISO_i 0x69 |
#define ISO_space 0x20 |
#define ISO_nl 0x0a |
#define ISO_cr 0x0d |
#define ISO_a 0x61 |
#define ISO_t 0x74 |
#define ISO_hash 0x23 |
#define ISO_period 0x2e |
char dataPresent; |
char Digit1=0, Digit2=0, Digit3=0; |
int ADCVal = 0; |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Initialize the web server. |
* |
* Starts to listen for incoming connection requests on TCP port 80. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
httpd_init(void) |
{ |
fs_init(); |
/* Listen to port 80. */ |
uip_listen(HTONS(80)); |
dataPresent = 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
void |
httpd_appcall(void) |
{ |
struct fs_file fsfile; |
u8_t i; |
switch(uip_conn->lport) { |
/* This is the web server: */ |
case HTONS(80): |
/* Pick out the application state from the uip_conn structure. */ |
hs = (struct httpd_state *)(uip_conn->appstate); |
/* We use the uip_ test functions to deduce why we were |
called. If uip_connected() is non-zero, we were called |
because a remote host has connected to us. If |
uip_newdata() is non-zero, we were called because the |
remote host has sent us new data, and if uip_acked() is |
non-zero, the remote host has acknowledged the data we |
previously sent to it. */ |
if(uip_connected()) { |
/* Since we have just been connected with the remote host, we |
reset the state for this connection. The ->count variable |
contains the amount of data that is yet to be sent to the |
remote host, and the ->state is set to HTTP_NOGET to signal |
that we haven't received any HTTP GET request for this |
connection yet. */ |
hs->state = HTTP_NOGET; |
hs->count = 0; |
return; |
} else if(uip_poll()) { |
/* If we are polled 200 times, we abort the connection. This is |
because we don't want connections lingering indefinately in |
the system. */ |
if(hs->count++ >= 200) { |
// uip_abort(); |
} |
return; |
} |
else |
if(uip_newdata() && hs->state == HTTP_NOGET) |
{ |
/* This is the first data we receive, and it should contain a |
GET. */ |
/* Check for GET. */ |
if(uip_appdata[0] != ISO_G || |
uip_appdata[1] != ISO_E || |
uip_appdata[2] != ISO_T || |
uip_appdata[3] != ISO_space) { |
/* If it isn't a GET, we abort the connection. */ |
uip_abort(); |
return; |
} |
/* Find the file we are looking for. */ |
for(i = 4; i < 40; ++i) { |
if(uip_appdata[i] == ISO_space || |
uip_appdata[i] == ISO_cr || |
uip_appdata[i] == ISO_nl) { |
uip_appdata[i] = 0; |
break; |
} |
} |
PRINT("request for file "); |
PRINTLN(&uip_appdata[4]); |
/* Check for a request for "/". */ |
if(uip_appdata[4] == ISO_slash && |
uip_appdata[5] == 0) { |
fs_open(file_index_html.name, &fsfile); |
} |
else |
{ |
if(!fs_open((const char *)&uip_appdata[4], &fsfile)) { |
PRINTLN("couldn't open file"); |
fs_open(file_404_html.name, &fsfile); |
} |
} |
/* LED command -------------------------------------------*/ |
if(uip_appdata[4] == ISO_slash && |
uip_appdata[5] == 0x6D /*m*/ && |
uip_appdata[12] == 0x67 /*g*/) |
{ |
i = 16; |
STM_EVAL_LEDOff(LED1); |
STM_EVAL_LEDOff(LED2); |
STM_EVAL_LEDOff(LED3); |
STM_EVAL_LEDOff(LED4); |
while(uip_appdata[i]!=0x48/*H*/) |
{ |
if(uip_appdata[i]==0x31 /*LED1*/) |
{ |
STM_EVAL_LEDOn(LED1); |
} |
if(uip_appdata[i]==0x32 /*LED2*/) |
{ |
STM_EVAL_LEDOn(LED2); |
} |
if(uip_appdata[i]==0x33 /*LED3*/) |
{ |
STM_EVAL_LEDOn(LED3); |
} |
if(uip_appdata[i]==0x34 /*LED4*/) |
{ |
STM_EVAL_LEDOn(LED4); |
} |
i++; |
} |
fs_open(file_STM32_LED_html.name, &fsfile); |
} |
/* ADC Status Bar -------------------------------------------*/ |
if(uip_appdata[4] == ISO_slash && |
uip_appdata[5] == 0x53 /*S*/ && |
uip_appdata[11] == 0x53 /*S*/ && |
uip_appdata[12] == 0x74 /*t*/) |
{ |
ADCVal = ADC_GetConversionValue(ADC1); |
ADCVal = ADCVal/8; |
Digit1= ADCVal/100; |
Digit2= (ADCVal-(Digit1*100))/10; |
Digit3= ADCVal-(Digit1*100)-(Digit2*10); |
/* These are the "VAL" characters positions in the STM32_StatusBar.html |
starting from file_STM32_StatusBar_html.name position */ |
*((file_STM32_StatusBar_html.name)+1768) = 0x30 + Digit1; /* ADC value */ |
*((file_STM32_StatusBar_html.name)+1769) = 0x30 + Digit2; /* ADC value */ |
*((file_STM32_StatusBar_html.name)+1770) = 0x30 + Digit3; /* ADC value */ |
fs_open(file_STM32_StatusBar_html.name, &fsfile); |
} |
if(uip_appdata[4] == ISO_slash && |
uip_appdata[5] == ISO_c && |
uip_appdata[6] == ISO_g && |
uip_appdata[7] == ISO_i && |
uip_appdata[8] == ISO_slash) |
{ |
/* If the request is for a file that starts with "/cgi/", we |
prepare for invoking a script. */ |
hs->script = fsfile.data; |
next_scriptstate(); |
} |
else |
{ |
hs->script = NULL; |
/* The web server is now no longer in the HTTP_NOGET state, but |
in the HTTP_FILE state since is has now got the GET from |
the client and will start transmitting the file. */ |
hs->state = HTTP_FILE; |
/* Point the file pointers in the connection state to point to |
the first byte of the file. */ |
hs->dataptr = fsfile.data; |
hs->count = fsfile.len; |
} |
} |
if(hs->state != HTTP_FUNC) { |
/* Check if the client (remote end) has acknowledged any data that |
we've previously sent. If so, we move the file pointer further |
into the file and send back more data. If we are out of data to |
send, we close the connection. */ |
if(uip_acked()) { |
if(hs->count >= uip_conn->len) { |
hs->count -= uip_conn->len; |
hs->dataptr += uip_conn->len; |
} else { |
hs->count = 0; |
} |
if(hs->count == 0) { |
if(hs->script != NULL) { |
next_scriptline(); |
next_scriptstate(); |
} else { |
uip_close(); |
} |
} |
} |
} else |
{ |
/* Call the CGI function. */ |
if(cgitab[hs->script[2] - ISO_a](uip_acked())) { |
/* If the function returns non-zero, we jump to the next line |
in the script. */ |
next_scriptline(); |
next_scriptstate(); |
} |
} |
if(hs->state != HTTP_FUNC && !uip_poll()) { |
/* Send a piece of data, but not more than the MSS of the |
connection. */ |
uip_send((u8_t*)hs->dataptr, hs->count); |
dataPresent = 1; |
} |
/* Finally, return to uIP. Our outgoing packet will soon be on its |
way... */ |
return; |
default: |
/* Should never happen. */ |
uip_abort(); |
break; |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/* next_scriptline(): |
* |
* Reads the script until it finds a newline. */ |
static void |
next_scriptline(void) |
{ |
/* Loop until we find a newline character. */ |
do { |
++(hs->script); |
} while(hs->script[0] != ISO_nl); |
/* Eat up the newline as well. */ |
++(hs->script); |
} |
/*-----------------------------------------------------------------------------------*/ |
/* next_sciptstate: |
* |
* Reads one line of script and decides what to do next. |
*/ |
static void |
next_scriptstate(void) |
{ |
struct fs_file fsfile; |
u8_t i; |
again: |
switch(hs->script[0]) { |
case ISO_t: |
/* Send a text string. */ |
hs->state = HTTP_TEXT; |
hs->dataptr = &hs->script[2]; |
/* Calculate length of string. */ |
for(i = 0; hs->dataptr[i] != ISO_nl; ++i); |
hs->count = i; |
break; |
case ISO_c: |
/* Call a function. */ |
hs->state = HTTP_FUNC; |
hs->dataptr = NULL; |
hs->count = 0; |
cgitab[hs->script[2] - ISO_a](0); |
break; |
case ISO_i: |
/* Include a file. */ |
hs->state = HTTP_FILE; |
if(!fs_open(&hs->script[2], &fsfile)) { |
uip_abort(); |
} |
hs->dataptr = fsfile.data; |
hs->count = fsfile.len; |
break; |
case ISO_hash: |
/* Comment line. */ |
next_scriptline(); |
goto again; |
//break; |
case ISO_period: |
/* End of script. */ |
hs->state = HTTP_END; |
uip_close(); |
break; |
default: |
uip_abort(); |
break; |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/** @} */ |
/** @} */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/httpd.d |
---|
0,0 → 1,22 |
Utilities/uip/httpd.o: Utilities/uip/httpd.c \ |
Libraries/CMSIS/Core/CM3/stm32f10x.h Libraries/CMSIS/Core/CM3/core_cm3.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
Libraries/CMSIS/Core/CM3/system_stm32f10x.h \ |
Project/Webserver_Demo_uIP/stm32f10x_conf.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/misc.h \ |
Utilities/STM32_EVAL/stm32_eval.h Utilities/uip/uip.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h Utilities/uip/fs.h \ |
Utilities/uip/fsdata.h Utilities/uip/cgi.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/httpd.h |
---|
0,0 → 1,77 |
/** |
* \addtogroup httpd |
* @{ |
*/ |
/** |
* \file |
* HTTP server header file. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: httpd.h,v 1.4.2.3 2003/10/06 22:56:44 adam Exp $ |
* |
*/ |
#ifndef __HTTPD_H__ |
#define __HTTPD_H__ |
void httpd_init(void); |
void httpd_appcall(void); |
/* UIP_APPCALL: the name of the application function. This function |
must return void and take no arguments (i.e., C type "void |
appfunc(void)"). */ |
#ifndef UIP_APPCALL |
#define UIP_APPCALL httpd_appcall |
#endif |
struct httpd_state { |
u8_t state; |
u16_t count; |
char *dataptr; |
char *script; |
}; |
/* UIP_APPSTATE_SIZE: The size of the application-specific state |
stored in the uip_conn structure. */ |
#ifndef UIP_APPSTATE_SIZE |
#define UIP_APPSTATE_SIZE (sizeof(struct httpd_state)) |
#endif |
#define FS_STATISTICS 1 |
extern struct httpd_state *hs; |
#endif /* __HTTPD_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/memb.c |
---|
0,0 → 1,152 |
/** |
* \addtogroup exampleapps |
* @{ |
*/ |
/** |
* \file |
* Memory block allocation routines. |
* \author Adam Dunkels <adam@sics.se> |
* |
* The memory block allocation routines provide a simple yet powerful |
* set of functions for managing a set of memory blocks of fixed |
* size. A set of memory blocks is statically declared with the |
* MEMB() macro. Memory blocks are allocated from the declared |
* memory by the memb_alloc() function, and are deallocated with the |
* memb_free() function. |
* |
* \note Because of namespace clashes only one MEMB() can be |
* declared per C module, and the name scope of a MEMB() memory |
* block is local to each C module. |
* |
* The following example shows how to declare and use a memory block |
* called "cmem" which has 8 chunks of memory with each memory chunk |
* being 20 bytes large. |
* |
\code |
MEMB(cmem, 20, 8); |
int main(int argc, char *argv[]) { |
char *ptr; |
memb_init(&cmem); |
ptr = memb_alloc(&cmem); |
if(ptr != NULL) { |
do_something(ptr); |
} else { |
printf("Could not allocate memory.\n"); |
} |
if(memb_free(ptr) == 0) { |
printf("Deallocation succeeded.\n"); |
} |
} |
\endcode |
* |
*/ |
#include <string.h> |
#include "memb.h" |
/*------------------------------------------------------------------------------*/ |
/** |
* Initialize a memory block that was declared with MEMB(). |
* |
* \param m A memory block previosly declared with MEMB(). |
*/ |
/*------------------------------------------------------------------------------*/ |
void |
memb_init(struct memb_blocks *m) |
{ |
memset(m->mem, (m->size + 1) * m->num, 0); |
} |
/*------------------------------------------------------------------------------*/ |
/** |
* Allocate a memory block from a block of memory declared with MEMB(). |
* |
* \param m A memory block previosly declared with MEMB(). |
*/ |
/*------------------------------------------------------------------------------*/ |
char * |
memb_alloc(struct memb_blocks *m) |
{ |
int i; |
char *ptr; |
ptr = m->mem; |
for(i = 0; i < m->num; ++i) { |
if(*ptr == 0) { |
/* If this block was unused, we increase the reference count to |
indicate that it now is used and return a pointer to the |
first byte following the reference counter. */ |
++*ptr; |
return ptr + 1; |
} |
ptr += m->size + 1; |
} |
/* No free block was found, so we return NULL to indicate failure to |
allocate block. */ |
return NULL; |
} |
/*------------------------------------------------------------------------------*/ |
/** |
* Deallocate a memory block from a memory block previously declared |
* with MEMB(). |
* |
* \param m m A memory block previosly declared with MEMB(). |
* |
* \param ptr A pointer to the memory block that is to be deallocated. |
* |
* \return The new reference count for the memory block (should be 0 |
* if successfully deallocated) or -1 if the pointer "ptr" did not |
* point to a legal memory block. |
*/ |
/*------------------------------------------------------------------------------*/ |
char |
memb_free(struct memb_blocks *m, char *ptr) |
{ |
int i; |
char *ptr2; |
/* Walk through the list of blocks and try to find the block to |
which the pointer "ptr" points to. */ |
ptr2 = m->mem; |
for(i = 0; i < m->num; ++i) { |
if(ptr2 == ptr - 1) { |
/* We've found to block to which "ptr" points so we decrease the |
reference count and return the new value of it. */ |
return --*ptr2; |
} |
ptr2 += m->size + 1; |
} |
return -1; |
} |
/*------------------------------------------------------------------------------*/ |
/** |
* Increase the reference count for a memory chunk. |
* |
* \note No sanity checks are currently made. |
* |
* \param m m A memory block previosly declared with MEMB(). |
* |
* \param ptr A pointer to the memory chunk for which the reference |
* count should be increased. |
* |
* \return The new reference count. |
*/ |
/*------------------------------------------------------------------------------*/ |
char |
memb_ref(struct memb_blocks *m, char *ptr) |
{ |
return ++*(ptr - 1); |
} |
/*------------------------------------------------------------------------------*/ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/memb.d |
---|
0,0 → 1,16 |
Utilities/uip/memb.o: Utilities/uip/memb.c \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/string.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/string.h \ |
Utilities/uip/memb.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/memb.h |
---|
0,0 → 1,43 |
/** |
* \addtogroup exampleapps |
* @{ |
*/ |
/** |
* \file |
* Memory block allocation routines. |
* \author Adam Dunkels <adam@sics.se> |
* |
*/ |
#ifndef __MEMB_H__ |
#define __MEMB_H__ |
/** |
* Declare a memory block. |
* |
* \param name The name of the memory block (later used with |
* memb_init(), memb_alloc() and memb_free()). |
* |
* \param size The size of each memory chunk, in bytes. |
* |
* \param num The total number of memory chunks in the block. |
* |
*/ |
#define MEMB(name, size, num) \ |
static char memb_mem[(size + 1) * num]; \ |
static struct memb_blocks name = {size, num, memb_mem} |
struct memb_blocks { |
unsigned short size; |
unsigned short num; |
char *mem; |
}; |
void memb_init(struct memb_blocks *m); |
char *memb_alloc(struct memb_blocks *m); |
char memb_ref(struct memb_blocks *m, char *ptr); |
char memb_free(struct memb_blocks *m, char *ptr); |
#endif /* __MEMB_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/slipdev.c |
---|
0,0 → 1,202 |
/** |
* \addtogroup uip |
* @{ |
*/ |
/** |
* \defgroup slip Serial Line IP (SLIP) protocol |
* @{ |
* |
* The SLIP protocol is a very simple way to transmit IP packets over |
* a serial line. It does not provide any framing or error control, |
* and is therefore not very widely used today. |
* |
* This SLIP implementation requires two functions for accessing the |
* serial device: slipdev_char_poll() and slipdev_char_put(). These |
* must be implemented specifically for the system on which the SLIP |
* protocol is to be run. |
*/ |
/** |
* \file |
* SLIP protocol implementation |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: slipdev.c,v 1.1.2.3 2003/10/07 13:23:01 adam Exp $ |
* |
*/ |
/* |
* This is a generic implementation of the SLIP protocol over an RS232 |
* (serial) device. |
* |
* Huge thanks to Ullrich von Bassewitz <uz@cc65.org> of cc65 fame for |
* and endless supply of bugfixes, insightsful comments and |
* suggestions, and improvements to this code! |
*/ |
#include "uip.h" |
#define SLIP_END 0300 |
#define SLIP_ESC 0333 |
#define SLIP_ESC_END 0334 |
#define SLIP_ESC_ESC 0335 |
static u8_t slip_buf[UIP_BUFSIZE]; |
static u16_t len, tmplen; |
static u8_t lastc; |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Send the packet in the uip_buf and uip_appdata buffers using the |
* SLIP protocol. |
* |
* The first 40 bytes of the packet (the IP and TCP headers) are read |
* from the uip_buf buffer, and the following bytes (the application |
* data) are read from the uip_appdata buffer. |
* |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
slipdev_send(void) |
{ |
u16_t i; |
u8_t *ptr; |
u8_t c; |
slipdev_char_put(SLIP_END); |
ptr = uip_buf; |
for(i = 0; i < uip_len; ++i) { |
if(i == 40) { |
ptr = (u8_t *)uip_appdata; |
} |
c = *ptr++; |
switch(c) { |
case SLIP_END: |
slipdev_char_put(SLIP_ESC); |
slipdev_char_put(SLIP_ESC_END); |
break; |
case SLIP_ESC: |
slipdev_char_put(SLIP_ESC); |
slipdev_char_put(SLIP_ESC_ESC); |
break; |
default: |
slipdev_char_put(c); |
break; |
} |
} |
slipdev_char_put(SLIP_END); |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Poll the SLIP device for an available packet. |
* |
* This function will poll the SLIP device to see if a packet is |
* available. It uses a buffer in which all avaliable bytes from the |
* RS232 interface are read into. When a full packet has been read |
* into the buffer, the packet is copied into the uip_buf buffer and |
* the length of the packet is returned. |
* |
* \return The length of the packet placed in the uip_buf buffer, or |
* zero if no packet is available. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
u16_t |
slipdev_poll(void) |
{ |
u8_t c; |
while(slipdev_char_poll(c)) { |
switch(c) { |
case SLIP_ESC: |
lastc = c; |
break; |
case SLIP_END: |
lastc = c; |
/* End marker found, we copy our input buffer to the uip_buf |
buffer and return the size of the packet we copied. */ |
memcpy(uip_buf, slip_buf, len); |
tmplen = len; |
len = 0; |
return tmplen; |
default: |
if(lastc == SLIP_ESC) { |
lastc = c; |
/* Previous read byte was an escape byte, so this byte will be |
interpreted differently from others. */ |
switch(c) { |
case SLIP_ESC_END: |
c = SLIP_END; |
break; |
case SLIP_ESC_ESC: |
c = SLIP_ESC; |
break; |
} |
} else { |
lastc = c; |
} |
slip_buf[len] = c; |
++len; |
if(len > UIP_BUFSIZE) { |
len = 0; |
} |
break; |
} |
} |
return 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Initialize the SLIP module. |
* |
* This function does not initialize the underlying RS232 device, but |
* only the SLIP part. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
slipdev_init(void) |
{ |
lastc = len = 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
/** @} */ |
/** @} */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/slipdev.d |
---|
0,0 → 1,2 |
Utilities/uip/slipdev.o: Utilities/uip/slipdev.c Utilities/uip/uip.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/slipdev.h |
---|
0,0 → 1,88 |
/** |
* \addtogroup slip |
* @{ |
*/ |
/** |
* \file |
* SLIP header file. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: slipdev.h,v 1.1.2.3 2003/10/06 22:42:51 adam Exp $ |
* |
*/ |
#ifndef __SLIPDEV_H__ |
#define __SLIPDEV_H__ |
#include "uip.h" |
/** |
* Put a character on the serial device. |
* |
* This function is used by the SLIP implementation to put a character |
* on the serial device. It must be implemented specifically for the |
* system on which the SLIP implementation is to be run. |
* |
* \param c The character to be put on the serial device. |
*/ |
void slipdev_char_put(u8_t c); |
/** |
* Poll the serial device for a character. |
* |
* This function is used by the SLIP implementation to poll the serial |
* device for a character. It must be implemented specifically for the |
* system on which the SLIP implementation is to be run. |
* |
* The function should return immediately regardless if a character is |
* available or not. If a character is available it should be placed |
* at the memory location pointed to by the pointer supplied by the |
* arguement c. |
* |
* \param c A pointer to a byte that is filled in by the function with |
* the received character, if available. |
* |
* \retval 0 If no character is available. |
* \retval Non-zero If a character is available. |
*/ |
u8_t slipdev_char_poll(u8_t *c); |
void slipdev_init(void); |
void slipdev_send(void); |
u16_t slipdev_poll(void); |
#endif /* __SLIPDEV_H__ */ |
/** @} */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/tapdev.c |
---|
0,0 → 1,171 |
/* |
* Copyright (c) 2001, Swedish Institute of Computer Science. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* |
* 3. Neither the name of the Institute nor the names of its contributors |
* may be used to endorse or promote products derived from this software |
* without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* |
* Author: Adam Dunkels <adam@sics.se> |
* |
* $Id: tapdev.c,v 1.7.2.1 2003/10/07 13:23:19 adam Exp $ |
*/ |
#include <fcntl.h> |
#include <stdlib.h> |
#include <stdio.h> |
#include <unistd.h> |
#include <string.h> |
#include <sys/ioctl.h> |
#include <sys/socket.h> |
#include <sys/types.h> |
#include <sys/time.h> |
#include <sys/uio.h> |
#include <sys/socket.h> |
#ifdef linux |
#include <sys/ioctl.h> |
#include <linux/if.h> |
#include <linux/if_tun.h> |
#define DEVTAP "/dev/net/tun" |
#else /* linux */ |
#define DEVTAP "/dev/tap0" |
#endif /* linux */ |
#include "uip.h" |
static int fd; |
static unsigned long lasttime; |
static struct timezone tz; |
/*-----------------------------------------------------------------------------------*/ |
void |
tapdev_init(void) |
{ |
char buf[1024]; |
fd = open(DEVTAP, O_RDWR); |
if(fd == -1) { |
perror("tapdev: tapdev_init: open"); |
exit(1); |
} |
#ifdef linux |
{ |
struct ifreq ifr; |
memset(&ifr, 0, sizeof(ifr)); |
ifr.ifr_flags = IFF_TAP|IFF_NO_PI; |
if (ioctl(fd, TUNSETIFF, (void *) &ifr) < 0) { |
perror(buf); |
exit(1); |
} |
} |
#endif /* Linux */ |
snprintf(buf, sizeof(buf), "ifconfig tap0 inet %d.%d.%d.%d", |
UIP_DRIPADDR0, UIP_DRIPADDR1, UIP_DRIPADDR2, UIP_DRIPADDR3); |
system(buf); |
lasttime = 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
unsigned int |
tapdev_read(void) |
{ |
fd_set fdset; |
struct timeval tv, now; |
int ret; |
if(lasttime >= 500000) { |
lasttime = 0; |
return 0; |
} |
tv.tv_sec = 0; |
tv.tv_usec = 500000 - lasttime; |
FD_ZERO(&fdset); |
FD_SET(fd, &fdset); |
gettimeofday(&now, &tz); |
ret = select(fd + 1, &fdset, NULL, NULL, &tv); |
if(ret == 0) { |
lasttime = 0; |
return 0; |
} |
ret = read(fd, uip_buf, UIP_BUFSIZE); |
if(ret == -1) { |
perror("tap_dev: tapdev_read: read"); |
} |
gettimeofday(&tv, &tz); |
lasttime += (tv.tv_sec - now.tv_sec) * 1000000 + (tv.tv_usec - now.tv_usec); |
return ret; |
} |
/*-----------------------------------------------------------------------------------*/ |
void |
tapdev_send(void) |
{ |
int ret; |
struct iovec iov[2]; |
#ifdef linux |
{ |
char tmpbuf[UIP_BUFSIZE]; |
int i; |
for(i = 0; i < 40 + UIP_LLH_LEN; i++) { |
tmpbuf[i] = uip_buf[i]; |
} |
for(; i < uip_len; i++) { |
tmpbuf[i] = uip_appdata[i - 40 - UIP_LLH_LEN]; |
} |
ret = write(fd, tmpbuf, uip_len); |
} |
#else |
if(uip_len < 40 + UIP_LLH_LEN) { |
ret = write(fd, uip_buf, uip_len + UIP_LLH_LEN); |
} else { |
iov[0].iov_base = uip_buf; |
iov[0].iov_len = 40 + UIP_LLH_LEN; |
iov[1].iov_base = (char *)uip_appdata; |
iov[1].iov_len = uip_len - (40 + UIP_LLH_LEN); |
ret = writev(fd, iov, 2); |
} |
#endif |
if(ret == -1) { |
perror("tap_dev: tapdev_send: writev"); |
exit(1); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/tapdev.h |
---|
0,0 → 1,42 |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: tapdev.h,v 1.1.2.1 2003/10/04 22:54:17 adam Exp $ |
* |
*/ |
#ifndef __TAPDEV_H__ |
#define __TAPDEV_H__ |
void tapdev_init(void); |
unsigned int tapdev_read(void); |
void tapdev_send(void); |
#endif /* __TAPDEV_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/telnetd-shell.c |
---|
0,0 → 1,181 |
/** |
* \addtogroup telnetd |
* @{ |
*/ |
/** |
* \file |
* An example telnet server shell |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the Contiki desktop OS. |
* |
* $Id: telnetd-shell.c,v 1.1.2.1 2003/10/06 22:56:22 adam Exp $ |
* |
*/ |
#include "uip.h" |
#include "telnetd.h" |
#include <string.h> |
struct ptentry { |
char c; |
void (* pfunc)(struct telnetd_state *s, char *str); |
}; |
/*-----------------------------------------------------------------------------------*/ |
static void |
parse(struct telnetd_state *s, register char *str, struct ptentry *t) |
{ |
register struct ptentry *p; |
char *sstr; |
sstr = str; |
/* Loop over the parse table entries in t in order to find one that |
matches the first character in str. */ |
for(p = t; p->c != 0; ++p) { |
if(*str == p->c) { |
/* Skip rest of the characters up to the first space. */ |
while(*str != ' ') { |
++str; |
} |
/* Skip all spaces.*/ |
while(*str == ' ') { |
++str; |
} |
/* Call parse table entry function and return. */ |
p->pfunc(s, str); |
return; |
} |
} |
/* Did not find matching entry in parse table. We just call the |
default handler supplied by the caller and return. */ |
p->pfunc(s, str); |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
exitt(struct telnetd_state *s, char *str) |
{ |
telnetd_close(s); |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
inttostr(register char *str, unsigned int i) |
{ |
str[0] = '0' + i / 100; |
if(str[0] == '0') { |
str[0] = ' '; |
} |
str[1] = '0' + (i / 10) % 10; |
if(str[1] == '0') { |
str[1] = ' '; |
} |
str[2] = '0' + i % 10; |
str[3] = ' '; |
str[4] = 0; |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
stats(struct telnetd_state *s, char *strr) |
{ |
char str[10]; |
inttostr(str, uip_stat.ip.recv); |
telnetd_output(s, "IP packets received ", str); |
inttostr(str, uip_stat.ip.sent); |
telnetd_output(s, "IP packets sent ", str); |
inttostr(str, uip_stat.ip.drop); |
telnetd_output(s, "IP packets dropped ", str); |
inttostr(str, uip_stat.icmp.recv); |
telnetd_output(s, "ICMP packets received ", str); |
inttostr(str, uip_stat.icmp.sent); |
telnetd_output(s, "ICMP packets sent ", str); |
inttostr(str, uip_stat.icmp.drop); |
telnetd_output(s, "ICMP packets dropped ", str); |
inttostr(str, uip_stat.tcp.recv); |
telnetd_output(s, "TCP packets received ", str); |
inttostr(str, uip_stat.tcp.sent); |
telnetd_output(s, "TCP packets sent ", str); |
inttostr(str, uip_stat.tcp.drop); |
telnetd_output(s, "TCP packets dropped ", str); |
inttostr(str, uip_stat.tcp.rexmit); |
telnetd_output(s, "TCP packets retransmitted ", str); |
inttostr(str, uip_stat.tcp.synrst); |
telnetd_output(s, "TCP connection attempts ", str); |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
help(struct telnetd_state *s, char *str) |
{ |
telnetd_output(s, "Available commands:", ""); |
telnetd_output(s, "stats - show uIP statistics", ""); |
telnetd_output(s, "exit - exit shell", ""); |
telnetd_output(s, "? - show this help", ""); |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
none(struct telnetd_state *s, char *str) |
{ |
if(strlen(str) > 0) { |
telnetd_output(s, "Unknown command", ""); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
static struct ptentry configparsetab[] = |
{{'s', stats}, |
{'e', exitt}, |
{'?', help}, |
/* Default action */ |
{0, none}}; |
/*-----------------------------------------------------------------------------------*/ |
void |
telnetd_connected(struct telnetd_state *s) |
{ |
telnetd_output(s, "uIP command shell", ""); |
telnetd_output(s, "Type '?' for help", ""); |
telnetd_prompt(s, "uIP-0.9> "); |
} |
/*-----------------------------------------------------------------------------------*/ |
void |
telnetd_input(struct telnetd_state *s, char *cmd) |
{ |
parse(s, cmd, configparsetab); |
telnetd_prompt(s, "uIP-0.9> "); |
} |
/*-----------------------------------------------------------------------------------*/ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/telnetd-shell.d |
---|
0,0 → 1,17 |
Utilities/uip/telnetd-shell.o: Utilities/uip/telnetd-shell.c \ |
Utilities/uip/uip.h Utilities/uip/uipopt.h Utilities/uip/httpd.h \ |
Utilities/uip/telnetd.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/string.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/string.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/telnetd.c |
---|
0,0 → 1,392 |
/** |
* \addtogroup exampleapps |
* @{ |
*/ |
/** |
* \defgroup telnetd Telnet server |
* @{ |
* |
* The uIP telnet server provides a command based interface to uIP. It |
* allows using the "telnet" application to access uIP, and implements |
* the required telnet option negotiation. |
* |
* The code is structured in a way which makes it possible to add |
* commands without having to rewrite the main telnet code. The main |
* telnet code calls two callback functions, telnetd_connected() and |
* telnetd_input(), when a telnet connection has been established and |
* when a line of text arrives on a telnet connection. These two |
* functions can be implemented in a way which suits the particular |
* application or environment in which the uIP system is intended to |
* be run. |
* |
* The uIP distribution contains an example telnet shell |
* implementation that provides a basic set of commands. |
*/ |
/** |
* \file |
* Implementation of the Telnet server. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: telnetd.c,v 1.1.2.2 2003/10/07 13:47:50 adam Exp $ |
* |
*/ |
#include "uip.h" |
#include "memb.h" |
#include "telnetd.h" |
#include <string.h> |
#define ISO_nl 0x0a |
#define ISO_cr 0x0d |
MEMB(linemem, TELNETD_LINELEN, TELNETD_NUMLINES); |
static u8_t i; |
#define STATE_NORMAL 0 |
#define STATE_IAC 1 |
#define STATE_WILL 2 |
#define STATE_WONT 3 |
#define STATE_DO 4 |
#define STATE_DONT 5 |
#define STATE_CLOSE 6 |
#define TELNET_IAC 255 |
#define TELNET_WILL 251 |
#define TELNET_WONT 252 |
#define TELNET_DO 253 |
#define TELNET_DONT 254 |
/*-----------------------------------------------------------------------------------*/ |
static char * |
alloc_line(void) |
{ |
return memb_alloc(&linemem); |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
dealloc_line(char *line) |
{ |
memb_free(&linemem, line); |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
sendline(struct telnetd_state *s, char *line) |
{ |
static unsigned int i; |
for(i = 0; i < TELNETD_NUMLINES; ++i) { |
if(s->lines[i] == NULL) { |
s->lines[i] = line; |
break; |
} |
} |
if(i == TELNETD_NUMLINES) { |
dealloc_line(line); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Close a telnet session. |
* |
* This function can be called from a telnet command in order to close |
* the connection. |
* |
* \param s The connection which is to be closed. |
* |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
telnetd_close(struct telnetd_state *s) |
{ |
s->state = STATE_CLOSE; |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Print a prompt on a telnet connection. |
* |
* This function can be called by the telnet command shell in order to |
* print out a command prompt. |
* |
* \param s A telnet connection. |
* |
* \param str The command prompt. |
* |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
telnetd_prompt(struct telnetd_state *s, char *str) |
{ |
char *line; |
line = alloc_line(); |
if(line != NULL) { |
strncpy(line, str, TELNETD_LINELEN); |
sendline(s, line); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Print out a string on a telnet connection. |
* |
* This function can be called from a telnet command parser in order |
* to print out a string of text on the connection. The two strings |
* given as arguments to the function will be concatenated, a carrige |
* return and a new line character will be added, and the line is |
* sent. |
* |
* \param s The telnet connection. |
* |
* \param str1 The first string. |
* |
* \param str2 The second string. |
* |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
telnetd_output(struct telnetd_state *s, char *str1, char *str2) |
{ |
static unsigned len; |
char *line; |
line = alloc_line(); |
if(line != NULL) { |
len = strlen(str1); |
strncpy(line, str1, TELNETD_LINELEN); |
if(len < TELNETD_LINELEN) { |
strncpy(line + len, str2, TELNETD_LINELEN - len); |
} |
len = strlen(line); |
if(len < TELNETD_LINELEN - 2) { |
line[len] = ISO_cr; |
line[len+1] = ISO_nl; |
line[len+2] = 0; |
} |
sendline(s, line); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Initialize the telnet server. |
* |
* This function will perform the necessary initializations and start |
* listening on TCP port 23. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
telnetd_init(void) |
{ |
memb_init(&linemem); |
uip_listen(HTONS(23)); |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
acked(struct telnetd_state *s) |
{ |
dealloc_line(s->lines[0]); |
for(i = 1; i < TELNETD_NUMLINES; ++i) { |
s->lines[i - 1] = s->lines[i]; |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
senddata(struct telnetd_state *s) |
{ |
if(s->lines[0] != NULL) { |
uip_send(s->lines[0], strlen(s->lines[0])); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
getchar(struct telnetd_state *s, u8_t c) |
{ |
if(c == ISO_cr) { |
return; |
} |
s->buf[(int)s->bufptr] = c; |
if(s->buf[(int)s->bufptr] == ISO_nl || |
s->bufptr == sizeof(s->buf) - 1) { |
if(s->bufptr > 0) { |
s->buf[(int)s->bufptr] = 0; |
} |
telnetd_input(s, s->buf); |
s->bufptr = 0; |
} else { |
++s->bufptr; |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
sendopt(struct telnetd_state *s, u8_t option, u8_t value) |
{ |
char *line; |
line = alloc_line(); |
if(line != NULL) { |
line[0] = TELNET_IAC; |
line[1] = option; |
line[2] = value; |
line[3] = 0; |
sendline(s, line); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
newdata(struct telnetd_state *s) |
{ |
u16_t len; |
u8_t c; |
len = uip_datalen(); |
while(len > 0 && s->bufptr < sizeof(s->buf)) { |
c = *uip_appdata; |
++uip_appdata; |
--len; |
switch(s->state) { |
case STATE_IAC: |
if(c == TELNET_IAC) { |
getchar(s, c); |
s->state = STATE_NORMAL; |
} else { |
switch(c) { |
case TELNET_WILL: |
s->state = STATE_WILL; |
break; |
case TELNET_WONT: |
s->state = STATE_WONT; |
break; |
case TELNET_DO: |
s->state = STATE_DO; |
break; |
case TELNET_DONT: |
s->state = STATE_DONT; |
break; |
default: |
s->state = STATE_NORMAL; |
break; |
} |
} |
break; |
case STATE_WILL: |
/* Reply with a DONT */ |
sendopt(s, TELNET_DONT, c); |
s->state = STATE_NORMAL; |
break; |
case STATE_WONT: |
/* Reply with a DONT */ |
sendopt(s, TELNET_DONT, c); |
s->state = STATE_NORMAL; |
break; |
case STATE_DO: |
/* Reply with a WONT */ |
sendopt(s, TELNET_WONT, c); |
s->state = STATE_NORMAL; |
break; |
case STATE_DONT: |
/* Reply with a WONT */ |
sendopt(s, TELNET_WONT, c); |
s->state = STATE_NORMAL; |
break; |
case STATE_NORMAL: |
if(c == TELNET_IAC) { |
s->state = STATE_IAC; |
} else { |
getchar(s, c); |
} |
break; |
} |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
void |
telnetd_app(void) |
{ |
struct telnetd_state *s; |
s = (struct telnetd_state *)uip_conn->appstate; |
if(uip_connected()) { |
for(i = 0; i < TELNETD_NUMLINES; ++i) { |
s->lines[i] = NULL; |
} |
s->bufptr = 0; |
s->state = STATE_NORMAL; |
telnetd_connected(s); |
senddata(s); |
return; |
} |
if(s->state == STATE_CLOSE) { |
s->state = STATE_NORMAL; |
uip_close(); |
return; |
} |
if(uip_closed()) { |
telnetd_output(s, "Connection closed", ""); |
} |
if(uip_aborted()) { |
telnetd_output(s, "Connection reset", ""); |
} |
if(uip_timedout()) { |
telnetd_output(s, "Connection timed out", ""); |
} |
if(uip_acked()) { |
acked(s); |
} |
if(uip_newdata()) { |
newdata(s); |
} |
if(uip_rexmit() || |
uip_newdata() || |
uip_acked()) { |
senddata(s); |
} else if(uip_poll()) { |
senddata(s); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/telnetd.d |
---|
0,0 → 1,17 |
Utilities/uip/telnetd.o: Utilities/uip/telnetd.c Utilities/uip/uip.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h Utilities/uip/memb.h \ |
Utilities/uip/telnetd.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/string.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/string.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/telnetd.h |
---|
0,0 → 1,114 |
/** |
* \addtogroup telnetd |
* @{ |
*/ |
/** |
* \file |
* Header file for the telnet server. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2002, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: telnetd.h,v 1.1.2.2 2003/10/07 13:22:27 adam Exp $ |
* |
*/ |
#ifndef __TELNETD_H__ |
#define __TELNETD_H__ |
#include "uip.h" |
/** |
* The maximum length of a telnet line. |
* |
* \hideinitializer |
*/ |
#define TELNETD_LINELEN 36 |
/** |
* The number of output lines being buffered for all telnet |
* connections. |
* |
* \hideinitializer |
*/ |
#define TELNETD_NUMLINES 2 |
/** |
* A telnet connection structure. |
*/ |
struct telnetd_state { |
char *lines[TELNETD_NUMLINES]; |
char buf[TELNETD_LINELEN]; |
char bufptr; |
u8_t state; |
}; |
/** |
* Callback function that is called when a telnet connection has been |
* established. |
* |
* \param s The telnet connection. |
*/ |
void telnetd_connected(struct telnetd_state *s); |
/** |
* Callback function that is called when a line of text has arrived on |
* a telnet connection. |
* |
* \param s The telnet connection. |
* |
* \param cmd The line of text. |
*/ |
void telnetd_input(struct telnetd_state *s, char *cmd); |
void telnetd_close(struct telnetd_state *s); |
void telnetd_output(struct telnetd_state *s, char *s1, char *s2); |
void telnetd_prompt(struct telnetd_state *s, char *str); |
void telnetd_app(void); |
#ifndef UIP_APPCALL |
#define UIP_APPCALL telnetd_app |
#endif |
#ifndef UIP_APPSTATE_SIZE |
#define UIP_APPSTATE_SIZE (sizeof(struct telnetd_state)) |
#endif |
void telnetd_init(void); |
#endif /* __TELNET_H__ */ |
/** @} */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uIPMain.c |
---|
0,0 → 1,200 |
/* |
* Copyright (c) 2001-2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: main.c,v 1.10.2.1 2003/10/04 22:54:17 adam Exp $ |
* |
*/ |
#include <stdio.h> |
#include "uip.h" |
#include "uip_arp.h" |
#include "httpd.h" |
#include "stm32_eth.h" |
// Define NULL |
#ifndef NULL |
#define NULL (void *)0 |
#endif |
// Globals |
extern char gPacketReceived; |
/* The start of the uIP buffer, which will contain the frame headers. */ |
#define pucUIP_Buffer ( ( struct uip_eth_hdr * ) &uip_buf[ 0 ] ) |
/* uIP update frequencies. */ |
#define RT_CLOCK_SECOND ( configTICK_RATE_HZ ) |
#define uipARP_FREQUENCY ( 20 ) |
#define uipMAX_BLOCK_TIME ( RT_CLOCK_SECOND / 4 ) |
// Define Prototypes |
void TransmitPacket(void); |
/*-----------------------------------------------------------------------------------*/ |
void uIPMain(void) |
{ |
u8_t i, arptimer; |
uip_eth_hdr *BUF = (uip_eth_hdr*)uip_buf; |
u32 size; |
/* Initialize the uIP TCP/IP stack. */ |
uip_init(); |
/* Initialize the HTTP server. */ |
httpd_init(); |
arptimer = 0; |
while(1) |
{ |
/* Let the tapdev network device driver read an entire IP packet |
into the uip_buf. If it must wait for more than 0.5 seconds, it |
will return with the return value 0. If so, we know that it is |
time to call upon the uip_periodic(). Otherwise, the tapdev has |
received an IP packet that is to be processed by uIP. */ |
size = ETH_HandleRxPkt(uip_buf); |
if (size > 0) { |
//printf("Packet! len: %x\r\n", size); |
uip_len = size; |
} |
if(uip_len <= 0x0) |
{ |
for(i = 0; i < UIP_CONNS; i++) |
{ |
uip_periodic(i); |
/* If the above function invocation resulted in data that |
should be sent out on the network, the global variable |
uip_len is set to a value > 0. */ |
if(uip_len > 0) |
{ |
uip_arp_out(); |
//printf("Reply! len: %x\r\n", uip_len); |
TransmitPacket(); |
} |
} |
#if UIP_UDP |
for(i = 0; i < UIP_UDP_CONNS; i++) |
{ |
uip_udp_periodic(i); |
/* If the above function invocation resulted in data that |
should be sent out on the network, the global variable |
uip_len is set to a value > 0. */ |
if(uip_len > 0) |
{ |
uip_arp_out(); |
//printf("Reply! len: %x\r\n", uip_len); |
TransmitPacket(); |
} |
} |
#endif /* UIP_UDP */ |
/* Call the ARP timer function every 10 seconds. */ |
if(++arptimer == 20) |
{ |
uip_arp_timer(); |
arptimer = 0; |
} |
} |
else |
{ |
if(BUF->type == htons(UIP_ETHTYPE_IP)) |
{ |
uip_arp_ipin(); |
uip_input(); |
/* If the above function invocation resulted in data that |
should be sent out on the network, the global variable |
uip_len is set to a value > 0. */ |
if(uip_len > 0) |
{ |
uip_arp_out(); |
//printf("Reply! len: %x\r\n", uip_len); |
TransmitPacket(); |
} |
} |
else if(BUF->type == htons(UIP_ETHTYPE_ARP)) |
{ |
uip_arp_arpin(); |
/* If the above function invocation resulted in data that |
should be sent out on the network, the global variable |
uip_len is set to a value > 0. */ |
if(uip_len > 0) |
{ |
//printf("Reply! len: %x\r\n", uip_len); |
TransmitPacket(); |
} |
} |
} |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
void TransmitPacket(void) |
{ |
int i; |
u8 data[1500]; |
// Copy the header portion part |
for(i=0; i < (UIP_LLH_LEN + 40); ++i) { |
data[i] = uip_buf[i]; |
} |
// Copy the data portion part |
for(; i < uip_len; ++i) { |
data[i] = uip_appdata[i - UIP_LLH_LEN - 40 ]; |
} |
ETH_HandleTxPkt(data,uip_len); |
} |
/*-----------------------------------------------------------------------------------*/ |
void uip_log(char *m) |
{ |
//printf("uIP log message: %s\n", m); |
} |
void udp_appcall(void) |
{ |
} |
/*-----------------------------------------------------------------------------------*/ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uIPMain.d |
---|
0,0 → 1,33 |
Utilities/uip/uIPMain.o: Utilities/uip/uIPMain.c \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdio.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/stdio.h \ |
Utilities/uip/uip.h Utilities/uip/uipopt.h Utilities/uip/httpd.h \ |
Utilities/uip/uip_arp.h Libraries/STM32_ETH_Driver/inc/stm32_eth.h \ |
Libraries/CMSIS/Core/CM3/stm32f10x.h Libraries/CMSIS/Core/CM3/core_cm3.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ |
Libraries/CMSIS/Core/CM3/system_stm32f10x.h \ |
Project/Webserver_Demo_uIP/stm32f10x_conf.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h \ |
Libraries/STM32F10x_StdPeriph_Driver/inc/misc.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip.c |
---|
0,0 → 1,1513 |
/** |
* \addtogroup uip |
* @{ |
*/ |
/** |
* \file |
* The uIP TCP/IP stack code. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001-2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: uip.c,v 1.62.2.10 2003/10/07 13:23:01 adam Exp $ |
* |
*/ |
/* |
This is a small implementation of the IP and TCP protocols (as well as |
some basic ICMP stuff). The implementation couples the IP, TCP and the |
application layers very tightly. To keep the size of the compiled code |
down, this code also features heavy usage of the goto statement. |
The principle is that we have a small buffer, called the uip_buf, in |
which the device driver puts an incoming packet. The TCP/IP stack |
parses the headers in the packet, and calls upon the application. If |
the remote host has sent data to the application, this data is present |
in the uip_buf and the application read the data from there. It is up |
to the application to put this data into a byte stream if needed. The |
application will not be fed with data that is out of sequence. |
If the application whishes to send data to the peer, it should put its |
data into the uip_buf, 40 bytes from the start of the buffer. The |
TCP/IP stack will calculate the checksums, and fill in the necessary |
header fields and finally send the packet back to the peer. |
*/ |
#include "uip.h" |
#include "uipopt.h" |
#include "uip_arch.h" |
#include "string.h" |
/*-----------------------------------------------------------------------------------*/ |
/* Variable definitions. */ |
/* The IP address of this host. If it is defined to be fixed (by setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set here. Otherwise, the address */ |
#if UIP_FIXEDADDR > 0 |
const u16_t uip_hostaddr[2] = |
{HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1), |
HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)}; |
const u16_t uip_arp_draddr[2] = |
{HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1), |
HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)}; |
const u16_t uip_arp_netmask[2] = |
{HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1), |
HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)}; |
#else |
u16_t uip_hostaddr[2]; |
u16_t uip_arp_draddr[2], uip_arp_netmask[2]; |
#endif /* UIP_FIXEDADDR */ |
u8_t uip_buf[UIP_BUFSIZE+2]; /* The packet buffer that contains |
incoming packets. */ |
volatile u8_t *uip_appdata; /* The uip_appdata pointer points to |
application data. */ |
volatile u8_t *uip_sappdata; /* The uip_appdata pointer points to the |
application data which is to be sent. */ |
#if UIP_URGDATA > 0 |
volatile u8_t *uip_urgdata; /* The uip_urgdata pointer points to |
urgent data (out-of-band data), if |
present. */ |
u8_t uip_urglen, uip_surglen; |
#endif /* UIP_URGDATA > 0 */ |
u16_t uip_len, uip_slen; |
/* The uip_len is either 8 or 16 bits, |
depending on the maximum packet |
size. */ |
volatile u8_t uip_flags; /* The uip_flags variable is used for |
communication between the TCP/IP stack |
and the application program. */ |
struct uip_conn *uip_conn; /* uip_conn always points to the current |
connection. */ |
struct uip_conn uip_conns[UIP_CONNS]; |
/* The uip_conns array holds all TCP |
connections. */ |
u16_t uip_listenports[UIP_LISTENPORTS]; |
/* The uip_listenports list all currently |
listning ports. */ |
#if UIP_UDP |
struct uip_udp_conn *uip_udp_conn; |
struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; |
#endif /* UIP_UDP */ |
static u16_t ipid; /* Ths ipid variable is an increasing |
number that is used for the IP ID |
field. */ |
static u8_t iss[4]; /* The iss variable is used for the TCP |
initial sequence number. */ |
#if UIP_ACTIVE_OPEN |
static u16_t lastport; /* Keeps track of the last port used for |
a new connection. */ |
#endif /* UIP_ACTIVE_OPEN */ |
/* Temporary variables. */ |
volatile u8_t uip_acc32[4]; |
static u8_t c, opt; |
static u16_t tmp16; |
/* Structures and definitions. */ |
#define TCP_FIN 0x01 |
#define TCP_SYN 0x02 |
#define TCP_RST 0x04 |
#define TCP_PSH 0x08 |
#define TCP_ACK 0x10 |
#define TCP_URG 0x20 |
#define TCP_CTL 0x3f |
#define ICMP_ECHO_REPLY 0 |
#define ICMP_ECHO 8 |
/* Macros. */ |
#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) |
#define FBUF ((uip_tcpip_hdr *)&uip_reassbuf[0]) |
#define ICMPBUF ((uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) |
#define UDPBUF ((uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN]) |
#if UIP_STATISTICS == 1 |
struct uip_stats uip_stat; |
#define UIP_STAT(s) s |
#else |
#define UIP_STAT(s) |
#endif /* UIP_STATISTICS == 1 */ |
#if UIP_LOGGING == 1 |
#include <stdio.h> |
void uip_log(char *msg); |
#define UIP_LOG(m) uip_log(m) |
#else |
#define UIP_LOG(m) |
#endif /* UIP_LOGGING == 1 */ |
/*-----------------------------------------------------------------------------------*/ |
void uip_init(void) |
{ |
for(c = 0; c < UIP_LISTENPORTS; ++c) { |
uip_listenports[c] = 0; |
} |
for(c = 0; c < UIP_CONNS; ++c) { |
uip_conns[c].tcpstateflags = CLOSED; |
} |
#if UIP_ACTIVE_OPEN |
lastport = 1024; |
#endif /* UIP_ACTIVE_OPEN */ |
#if UIP_UDP |
for(c = 0; c < UIP_UDP_CONNS; ++c) { |
uip_udp_conns[c].lport = 0; |
} |
#endif /* UIP_UDP */ |
/* IPv4 initialization. */ |
#if UIP_FIXEDADDR == 0 |
uip_hostaddr[0] = uip_hostaddr[1] = 0; |
#endif /* UIP_FIXEDADDR */ |
} |
/*-----------------------------------------------------------------------------------*/ |
#if UIP_ACTIVE_OPEN |
struct uip_conn * uip_connect(u16_t *ripaddr, u16_t rport) |
{ |
register struct uip_conn *conn, *cconn; |
/* Find an unused local port. */ |
again: |
++lastport; |
if(lastport >= 32000) { |
lastport = 4096; |
} |
/* Check if this port is already in use, and if so try to find |
another one. */ |
for(c = 0; c < UIP_CONNS; ++c) { |
conn = &uip_conns[c]; |
if(conn->tcpstateflags != CLOSED && |
conn->lport == htons(lastport)) { |
goto again; |
} |
} |
conn = 0; |
for(c = 0; c < UIP_CONNS; ++c) { |
cconn = &uip_conns[c]; |
if(cconn->tcpstateflags == CLOSED) { |
conn = cconn; |
break; |
} |
if(cconn->tcpstateflags == TIME_WAIT) { |
if(conn == 0 || |
cconn->timer > uip_conn->timer) { |
conn = cconn; |
} |
} |
} |
if(conn == 0) { |
return 0; |
} |
conn->tcpstateflags = SYN_SENT; |
conn->snd_nxt[0] = iss[0]; |
conn->snd_nxt[1] = iss[1]; |
conn->snd_nxt[2] = iss[2]; |
conn->snd_nxt[3] = iss[3]; |
conn->initialmss = conn->mss = UIP_TCP_MSS; |
conn->len = 1; /* TCP length of the SYN is one. */ |
conn->nrtx = 0; |
conn->timer = 1; /* Send the SYN next time around. */ |
conn->rto = UIP_RTO; |
conn->sa = 0; |
conn->sv = 16; |
conn->lport = htons(lastport); |
conn->rport = rport; |
conn->ripaddr[0] = ripaddr[0]; |
conn->ripaddr[1] = ripaddr[1]; |
return conn; |
} |
#endif /* UIP_ACTIVE_OPEN */ |
/*-----------------------------------------------------------------------------------*/ |
#if UIP_UDP |
struct uip_udp_conn * |
uip_udp_new(u16_t *ripaddr, u16_t rport) |
{ |
register struct uip_udp_conn *conn; |
/* Find an unused local port. */ |
again: |
++lastport; |
if(lastport >= 32000) { |
lastport = 4096; |
} |
for(c = 0; c < UIP_UDP_CONNS; ++c) { |
if(uip_udp_conns[c].lport == lastport) { |
goto again; |
} |
} |
conn = 0; |
for(c = 0; c < UIP_UDP_CONNS; ++c) { |
if(uip_udp_conns[c].lport == 0) { |
conn = &uip_udp_conns[c]; |
break; |
} |
} |
if(conn == 0) { |
return 0; |
} |
conn->lport = HTONS(lastport); |
conn->rport = HTONS(rport); |
conn->ripaddr[0] = ripaddr[0]; |
conn->ripaddr[1] = ripaddr[1]; |
return conn; |
} |
#endif /* UIP_UDP */ |
/*-----------------------------------------------------------------------------------*/ |
void |
uip_unlisten(u16_t port) |
{ |
for(c = 0; c < UIP_LISTENPORTS; ++c) { |
if(uip_listenports[c] == port) { |
uip_listenports[c] = 0; |
return; |
} |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
void |
uip_listen(u16_t port) |
{ |
for(c = 0; c < UIP_LISTENPORTS; ++c) { |
if(uip_listenports[c] == 0) { |
uip_listenports[c] = port; |
return; |
} |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/* XXX: IP fragment reassembly: not well-tested. */ |
#if UIP_REASSEMBLY |
#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) |
static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; |
static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; |
static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f, |
0x0f, 0x07, 0x03, 0x01}; |
static u16_t uip_reasslen; |
static u8_t uip_reassflags; |
#define UIP_REASS_FLAG_LASTFRAG 0x01 |
static u8_t uip_reasstmr; |
#define IP_HLEN 20 |
#define IP_MF 0x20 |
static u8_t |
uip_reass(void) |
{ |
u16_t offset, len; |
u16_t i; |
/* If ip_reasstmr is zero, no packet is present in the buffer, so we |
write the IP header of the fragment into the reassembly |
buffer. The timer is updated with the maximum age. */ |
if(uip_reasstmr == 0) { |
memcpy(uip_reassbuf, &BUF->vhl, IP_HLEN); |
uip_reasstmr = UIP_REASS_MAXAGE; |
uip_reassflags = 0; |
/* Clear the bitmap. */ |
memset(uip_reassbitmap, sizeof(uip_reassbitmap), 0); |
} |
/* Check if the incoming fragment matches the one currently present |
in the reasembly buffer. If so, we proceed with copying the |
fragment into the buffer. */ |
if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] && |
BUF->srcipaddr[1] == FBUF->srcipaddr[1] && |
BUF->destipaddr[0] == FBUF->destipaddr[0] && |
BUF->destipaddr[1] == FBUF->destipaddr[1] && |
BUF->ipid[0] == FBUF->ipid[0] && |
BUF->ipid[1] == FBUF->ipid[1]) { |
len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4; |
offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8; |
/* If the offset or the offset + fragment length overflows the |
reassembly buffer, we discard the entire packet. */ |
if(offset > UIP_REASS_BUFSIZE || |
offset + len > UIP_REASS_BUFSIZE) { |
uip_reasstmr = 0; |
goto nullreturn; |
} |
/* Copy the fragment into the reassembly buffer, at the right |
offset. */ |
memcpy(&uip_reassbuf[IP_HLEN + offset], |
(char *)BUF + (int)((BUF->vhl & 0x0f) * 4), |
len); |
/* Update the bitmap. */ |
if(offset / (8 * 8) == (offset + len) / (8 * 8)) { |
/* If the two endpoints are in the same byte, we only update |
that byte. */ |
uip_reassbitmap[offset / (8 * 8)] |= |
bitmap_bits[(offset / 8 ) & 7] & |
~bitmap_bits[((offset + len) / 8 ) & 7]; |
} else { |
/* If the two endpoints are in different bytes, we update the |
bytes in the endpoints and fill the stuff inbetween with |
0xff. */ |
uip_reassbitmap[offset / (8 * 8)] |= |
bitmap_bits[(offset / 8 ) & 7]; |
for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) { |
uip_reassbitmap[i] = 0xff; |
} |
uip_reassbitmap[(offset + len) / (8 * 8)] |= |
~bitmap_bits[((offset + len) / 8 ) & 7]; |
} |
/* If this fragment has the More Fragments flag set to zero, we |
know that this is the last fragment, so we can calculate the |
size of the entire packet. We also set the |
IP_REASS_FLAG_LASTFRAG flag to indicate that we have received |
the final fragment. */ |
if((BUF->ipoffset[0] & IP_MF) == 0) { |
uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; |
uip_reasslen = offset + len; |
} |
/* Finally, we check if we have a full packet in the buffer. We do |
this by checking if we have the last fragment and if all bits |
in the bitmap are set. */ |
if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { |
/* Check all bytes up to and including all but the last byte in |
the bitmap. */ |
for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { |
if(uip_reassbitmap[i] != 0xff) { |
goto nullreturn; |
} |
} |
/* Check the last byte in the bitmap. It should contain just the |
right amount of bits. */ |
if(uip_reassbitmap[uip_reasslen / (8 * 8)] != |
(u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) { |
goto nullreturn; |
} |
/* If we have come this far, we have a full packet in the |
buffer, so we allocate a pbuf and copy the packet into it. We |
also reset the timer. */ |
uip_reasstmr = 0; |
memcpy(BUF, FBUF, uip_reasslen); |
/* Pretend to be a "normal" (i.e., not fragmented) IP packet |
from now on. */ |
BUF->ipoffset[0] = BUF->ipoffset[1] = 0; |
BUF->len[0] = uip_reasslen >> 8; |
BUF->len[1] = uip_reasslen & 0xff; |
BUF->ipchksum = 0; |
BUF->ipchksum = ~(uip_ipchksum()); |
return uip_reasslen; |
} |
} |
nullreturn: |
return 0; |
} |
#endif /* UIP_REASSEMBL */ |
/*-----------------------------------------------------------------------------------*/ |
static void |
uip_add_rcv_nxt(u16_t n) |
{ |
uip_add32(uip_conn->rcv_nxt, n); |
uip_conn->rcv_nxt[0] = uip_acc32[0]; |
uip_conn->rcv_nxt[1] = uip_acc32[1]; |
uip_conn->rcv_nxt[2] = uip_acc32[2]; |
uip_conn->rcv_nxt[3] = uip_acc32[3]; |
} |
/*-----------------------------------------------------------------------------------*/ |
void |
uip_process(u8_t flag) |
{ |
register struct uip_conn *uip_connr = uip_conn; |
uip_appdata = &uip_buf[40 + UIP_LLH_LEN]; |
/* Check if we were invoked because of the perodic timer fireing. */ |
if(flag == UIP_TIMER) { |
#if UIP_REASSEMBLY |
if(uip_reasstmr != 0) { |
--uip_reasstmr; |
} |
#endif /* UIP_REASSEMBLY */ |
/* Increase the initial sequence number. */ |
if(++iss[3] == 0) { |
if(++iss[2] == 0) { |
if(++iss[1] == 0) { |
++iss[0]; |
} |
} |
} |
uip_len = 0; |
if(uip_connr->tcpstateflags == TIME_WAIT || |
uip_connr->tcpstateflags == FIN_WAIT_2) { |
++(uip_connr->timer); |
if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { |
uip_connr->tcpstateflags = CLOSED; |
} |
} else if(uip_connr->tcpstateflags != CLOSED) { |
/* If the connection has outstanding data, we increase the |
connection's timer and see if it has reached the RTO value |
in which case we retransmit. */ |
if(uip_outstanding(uip_connr)) { |
if(uip_connr->timer-- == 0) { |
if(uip_connr->nrtx == UIP_MAXRTX || |
((uip_connr->tcpstateflags == SYN_SENT || |
uip_connr->tcpstateflags == SYN_RCVD) && |
uip_connr->nrtx == UIP_MAXSYNRTX)) { |
uip_connr->tcpstateflags = CLOSED; |
/* We call UIP_APPCALL() with uip_flags set to |
UIP_TIMEDOUT to inform the application that the |
connection has timed out. */ |
uip_flags = UIP_TIMEDOUT; |
UIP_APPCALL(); |
/* We also send a reset packet to the remote host. */ |
BUF->flags = TCP_RST | TCP_ACK; |
goto tcp_send_nodata; |
} |
/* Exponential backoff. */ |
uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4? |
4: |
uip_connr->nrtx); |
++(uip_connr->nrtx); |
/* Ok, so we need to retransmit. We do this differently |
depending on which state we are in. In ESTABLISHED, we |
call upon the application so that it may prepare the |
data for the retransmit. In SYN_RCVD, we resend the |
SYNACK that we sent earlier and in LAST_ACK we have to |
retransmit our FINACK. */ |
UIP_STAT(++uip_stat.tcp.rexmit); |
switch(uip_connr->tcpstateflags & TS_MASK) { |
case SYN_RCVD: |
/* In the SYN_RCVD state, we should retransmit our |
SYNACK. */ |
goto tcp_send_synack; |
#if UIP_ACTIVE_OPEN |
case SYN_SENT: |
/* In the SYN_SENT state, we retransmit out SYN. */ |
BUF->flags = 0; |
goto tcp_send_syn; |
#endif /* UIP_ACTIVE_OPEN */ |
case ESTABLISHED: |
/* In the ESTABLISHED state, we call upon the application |
to do the actual retransmit after which we jump into |
the code for sending out the packet (the apprexmit |
label). */ |
uip_len = 0; |
uip_slen = 0; |
uip_flags = UIP_REXMIT; |
UIP_APPCALL(); |
goto apprexmit; |
case FIN_WAIT_1: |
case CLOSING: |
case LAST_ACK: |
/* In all these states we should retransmit a FINACK. */ |
goto tcp_send_finack; |
} |
} |
} else if((uip_connr->tcpstateflags & TS_MASK) == ESTABLISHED) { |
/* If there was no need for a retransmission, we poll the |
application for new data. */ |
uip_len = 0; |
uip_slen = 0; |
uip_flags = UIP_POLL; |
UIP_APPCALL(); |
goto appsend; |
} |
} |
goto drop; |
} |
#if UIP_UDP |
if(flag == UIP_UDP_TIMER) { |
if(uip_udp_conn->lport != 0) { |
uip_appdata = &uip_buf[UIP_LLH_LEN + 28]; |
uip_len = uip_slen = 0; |
uip_flags = UIP_POLL; |
UIP_UDP_APPCALL(); |
goto udp_send; |
} else { |
goto drop; |
} |
} |
#endif |
/* This is where the input processing starts. */ |
UIP_STAT(++uip_stat.ip.recv); |
/* Start of IPv4 input header processing code. */ |
/* Check validity of the IP header. */ |
if(BUF->vhl != 0x45) { /* IP version and header length. */ |
UIP_STAT(++uip_stat.ip.drop); |
UIP_STAT(++uip_stat.ip.vhlerr); |
UIP_LOG("ip: invalid version or header length."); |
goto drop; |
} |
/* Check the size of the packet. If the size reported to us in |
uip_len doesn't match the size reported in the IP header, there |
has been a transmission error and we drop the packet. */ |
if(BUF->len[0] != (uip_len >> 8)) { /* IP length, high byte. */ |
uip_len = (uip_len & 0xff) | (BUF->len[0] << 8); |
} |
if(BUF->len[1] != (uip_len & 0xff)) { /* IP length, low byte. */ |
uip_len = (uip_len & 0xff00) | BUF->len[1]; |
} |
/* Check the fragment flag. */ |
if((BUF->ipoffset[0] & 0x3f) != 0 || |
BUF->ipoffset[1] != 0) { |
#if UIP_REASSEMBLY |
uip_len = uip_reass(); |
if(uip_len == 0) { |
goto drop; |
} |
#else |
UIP_STAT(++uip_stat.ip.drop); |
UIP_STAT(++uip_stat.ip.fragerr); |
UIP_LOG("ip: fragment dropped."); |
goto drop; |
#endif /* UIP_REASSEMBLY */ |
} |
/* If we are configured to use ping IP address configuration and |
hasn't been assigned an IP address yet, we accept all ICMP |
packets. */ |
#if UIP_PINGADDRCONF |
if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { |
if(BUF->proto == UIP_PROTO_ICMP) { |
UIP_LOG("ip: possible ping config packet received."); |
goto icmp_input; |
} else { |
UIP_LOG("ip: packet dropped since no address assigned."); |
goto drop; |
} |
} |
#endif /* UIP_PINGADDRCONF */ |
/* Check if the packet is destined for our IP address. */ |
if(BUF->destipaddr[0] != uip_hostaddr[0]) { |
UIP_STAT(++uip_stat.ip.drop); |
UIP_LOG("ip: packet not for us."); |
goto drop; |
} |
if(BUF->destipaddr[1] != uip_hostaddr[1]) { |
UIP_STAT(++uip_stat.ip.drop); |
UIP_LOG("ip: packet not for us."); |
goto drop; |
} |
#if 0 |
// IP checksum is wrong through Netgear DSL router |
if (uip_ipchksum() != 0xffff) { /* Compute and check the IP header |
checksum. */ |
UIP_STAT(++uip_stat.ip.drop); |
UIP_STAT(++uip_stat.ip.chkerr); |
UIP_LOG("ip: bad checksum."); |
goto drop; |
} |
#endif |
if(BUF->proto == UIP_PROTO_TCP) /* Check for TCP packet. If so, jump |
to the tcp_input label. */ |
goto tcp_input; |
#if UIP_UDP |
if(BUF->proto == UIP_PROTO_UDP) |
goto udp_input; |
#endif /* UIP_UDP */ |
if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from |
here. */ |
UIP_STAT(++uip_stat.ip.drop); |
UIP_STAT(++uip_stat.ip.protoerr); |
UIP_LOG("ip: neither tcp nor icmp."); |
goto drop; |
} |
#if UIP_PINGADDRCONF |
icmp_input: |
#endif |
UIP_STAT(++uip_stat.icmp.recv); |
/* ICMP echo (i.e., ping) processing. This is simple, we only change |
the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP |
checksum before we return the packet. */ |
if(ICMPBUF->type != ICMP_ECHO) { |
UIP_STAT(++uip_stat.icmp.drop); |
UIP_STAT(++uip_stat.icmp.typeerr); |
UIP_LOG("icmp: not icmp echo."); |
goto drop; |
} |
/* If we are configured to use ping IP address assignment, we use |
the destination IP address of this ping packet and assign it to |
ourself. */ |
#if UIP_PINGADDRCONF |
if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { |
uip_hostaddr[0] = BUF->destipaddr[0]; |
uip_hostaddr[1] = BUF->destipaddr[1]; |
} |
#endif /* UIP_PINGADDRCONF */ |
ICMPBUF->type = ICMP_ECHO_REPLY; |
if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) { |
ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1; |
} else { |
ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8); |
} |
/* Swap IP addresses. */ |
tmp16 = BUF->destipaddr[0]; |
BUF->destipaddr[0] = BUF->srcipaddr[0]; |
BUF->srcipaddr[0] = tmp16; |
tmp16 = BUF->destipaddr[1]; |
BUF->destipaddr[1] = BUF->srcipaddr[1]; |
BUF->srcipaddr[1] = tmp16; |
UIP_STAT(++uip_stat.icmp.sent); |
goto send; |
/* End of IPv4 input header processing code. */ |
#if UIP_UDP |
/* UDP input processing. */ |
udp_input: |
/* UDP processing is really just a hack. We don't do anything to the |
UDP/IP headers, but let the UDP application do all the hard |
work. If the application sets uip_slen, it has a packet to |
send. */ |
#if UIP_UDP_CHECKSUMS |
if(uip_udpchksum() != 0xffff) { |
UIP_STAT(++uip_stat.udp.drop); |
UIP_STAT(++uip_stat.udp.chkerr); |
UIP_LOG("udp: bad checksum."); |
goto drop; |
} |
#endif /* UIP_UDP_CHECKSUMS */ |
/* Demultiplex this UDP packet between the UDP "connections". */ |
for(uip_udp_conn = &uip_udp_conns[0]; |
uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; |
++uip_udp_conn) { |
if(uip_udp_conn->lport != 0 && |
UDPBUF->destport == uip_udp_conn->lport && |
(uip_udp_conn->rport == 0 || |
UDPBUF->srcport == uip_udp_conn->rport) && |
BUF->srcipaddr[0] == uip_udp_conn->ripaddr[0] && |
BUF->srcipaddr[1] == uip_udp_conn->ripaddr[1]) { |
goto udp_found; |
} |
} |
goto drop; |
udp_found: |
uip_len = uip_len - 28; |
uip_appdata = &uip_buf[UIP_LLH_LEN + 28]; |
uip_flags = UIP_NEWDATA; |
uip_slen = 0; |
UIP_UDP_APPCALL(); |
udp_send: |
if(uip_slen == 0) { |
goto drop; |
} |
uip_len = uip_slen + 28; |
BUF->len[0] = (uip_len >> 8); |
BUF->len[1] = (uip_len & 0xff); |
BUF->proto = UIP_PROTO_UDP; |
UDPBUF->udplen = HTONS(uip_slen + 8); |
UDPBUF->udpchksum = 0; |
#if UIP_UDP_CHECKSUMS |
/* Calculate UDP checksum. */ |
UDPBUF->udpchksum = ~(uip_udpchksum()); |
if(UDPBUF->udpchksum == 0) { |
UDPBUF->udpchksum = 0xffff; |
} |
#endif /* UIP_UDP_CHECKSUMS */ |
BUF->srcport = uip_udp_conn->lport; |
BUF->destport = uip_udp_conn->rport; |
BUF->srcipaddr[0] = uip_hostaddr[0]; |
BUF->srcipaddr[1] = uip_hostaddr[1]; |
BUF->destipaddr[0] = uip_udp_conn->ripaddr[0]; |
BUF->destipaddr[1] = uip_udp_conn->ripaddr[1]; |
uip_appdata = &uip_buf[UIP_LLH_LEN + 40]; |
goto ip_send_nolen; |
#endif /* UIP_UDP */ |
/* TCP input processing. */ |
tcp_input: |
UIP_STAT(++uip_stat.tcp.recv); |
/* Start of TCP input header processing code. */ |
#if 1 // FIXME |
if(uip_tcpchksum() != 0xffff) { /* Compute and check the TCP |
checksum. */ |
UIP_STAT(++uip_stat.tcp.drop); |
UIP_STAT(++uip_stat.tcp.chkerr); |
UIP_LOG("tcp: bad checksum."); |
goto drop; |
} |
#endif |
/* Demultiplex this segment. */ |
/* First check any active connections. */ |
for(uip_connr = &uip_conns[0]; uip_connr < &uip_conns[UIP_CONNS]; ++uip_connr) { |
if(uip_connr->tcpstateflags != CLOSED && |
BUF->destport == uip_connr->lport && |
BUF->srcport == uip_connr->rport && |
BUF->srcipaddr[0] == uip_connr->ripaddr[0] && |
BUF->srcipaddr[1] == uip_connr->ripaddr[1]) { |
goto found; |
} |
} |
/* If we didn't find and active connection that expected the packet, |
either this packet is an old duplicate, or this is a SYN packet |
destined for a connection in LISTEN. If the SYN flag isn't set, |
it is an old packet and we send a RST. */ |
if((BUF->flags & TCP_CTL) != TCP_SYN) |
goto reset; |
tmp16 = BUF->destport; |
/* Next, check listening connections. */ |
for(c = 0; c < UIP_LISTENPORTS; ++c) { |
if(tmp16 == uip_listenports[c]) |
goto found_listen; |
} |
/* No matching connection found, so we send a RST packet. */ |
UIP_STAT(++uip_stat.tcp.synrst); |
reset: |
/* We do not send resets in response to resets. */ |
if(BUF->flags & TCP_RST) |
goto drop; |
UIP_STAT(++uip_stat.tcp.rst); |
BUF->flags = TCP_RST | TCP_ACK; |
uip_len = 40; |
BUF->tcpoffset = 5 << 4; |
/* Flip the seqno and ackno fields in the TCP header. */ |
c = BUF->seqno[3]; |
BUF->seqno[3] = BUF->ackno[3]; |
BUF->ackno[3] = c; |
c = BUF->seqno[2]; |
BUF->seqno[2] = BUF->ackno[2]; |
BUF->ackno[2] = c; |
c = BUF->seqno[1]; |
BUF->seqno[1] = BUF->ackno[1]; |
BUF->ackno[1] = c; |
c = BUF->seqno[0]; |
BUF->seqno[0] = BUF->ackno[0]; |
BUF->ackno[0] = c; |
/* We also have to increase the sequence number we are |
acknowledging. If the least significant byte overflowed, we need |
to propagate the carry to the other bytes as well. */ |
if(++BUF->ackno[3] == 0) { |
if(++BUF->ackno[2] == 0) { |
if(++BUF->ackno[1] == 0) { |
++BUF->ackno[0]; |
} |
} |
} |
/* Swap port numbers. */ |
tmp16 = BUF->srcport; |
BUF->srcport = BUF->destport; |
BUF->destport = tmp16; |
/* Swap IP addresses. */ |
tmp16 = BUF->destipaddr[0]; |
BUF->destipaddr[0] = BUF->srcipaddr[0]; |
BUF->srcipaddr[0] = tmp16; |
tmp16 = BUF->destipaddr[1]; |
BUF->destipaddr[1] = BUF->srcipaddr[1]; |
BUF->srcipaddr[1] = tmp16; |
/* And send out the RST packet! */ |
goto tcp_send_noconn; |
/* This label will be jumped to if we matched the incoming packet |
with a connection in LISTEN. In that case, we should create a new |
connection and send a SYNACK in return. */ |
found_listen: |
/* First we check if there are any connections avaliable. Unused |
connections are kept in the same table as used connections, but |
unused ones have the tcpstate set to CLOSED. Also, connections in |
TIME_WAIT are kept track of and we'll use the oldest one if no |
CLOSED connections are found. Thanks to Eddie C. Dost for a very |
nice algorithm for the TIME_WAIT search. */ |
uip_connr = 0; |
for(c = 0; c < UIP_CONNS; ++c) { |
if(uip_conns[c].tcpstateflags == CLOSED) { |
uip_connr = &uip_conns[c]; |
break; |
} |
if(uip_conns[c].tcpstateflags == TIME_WAIT) { |
if(uip_connr == 0 || |
uip_conns[c].timer > uip_connr->timer) { |
uip_connr = &uip_conns[c]; |
} |
} |
} |
if(uip_connr == 0) { |
/* All connections are used already, we drop packet and hope that |
the remote end will retransmit the packet at a time when we |
have more spare connections. */ |
UIP_STAT(++uip_stat.tcp.syndrop); |
UIP_LOG("tcp: found no unused connections."); |
goto drop; |
} |
uip_conn = uip_connr; |
/* Fill in the necessary fields for the new connection. */ |
uip_connr->rto = uip_connr->timer = UIP_RTO; |
uip_connr->sa = 0; |
uip_connr->sv = 4; |
uip_connr->nrtx = 0; |
uip_connr->lport = BUF->destport; |
uip_connr->rport = BUF->srcport; |
uip_connr->ripaddr[0] = BUF->srcipaddr[0]; |
uip_connr->ripaddr[1] = BUF->srcipaddr[1]; |
uip_connr->tcpstateflags = SYN_RCVD; |
uip_connr->snd_nxt[0] = iss[0]; |
uip_connr->snd_nxt[1] = iss[1]; |
uip_connr->snd_nxt[2] = iss[2]; |
uip_connr->snd_nxt[3] = iss[3]; |
uip_connr->len = 1; |
/* rcv_nxt should be the seqno from the incoming packet + 1. */ |
uip_connr->rcv_nxt[3] = BUF->seqno[3]; |
uip_connr->rcv_nxt[2] = BUF->seqno[2]; |
uip_connr->rcv_nxt[1] = BUF->seqno[1]; |
uip_connr->rcv_nxt[0] = BUF->seqno[0]; |
uip_add_rcv_nxt(1); |
/* Parse the TCP MSS option, if present. */ |
if((BUF->tcpoffset & 0xf0) > 0x50) { |
for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { |
opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; |
if(opt == 0x00) { |
/* End of options. */ |
break; |
} else if(opt == 0x01) { |
++c; |
/* NOP option. */ |
} else if(opt == 0x02 && |
uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0x04) { |
/* An MSS option with the right option length. */ |
tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | |
(u16_t)uip_buf[40 + UIP_LLH_LEN + 3 + c]; |
uip_connr->initialmss = uip_connr->mss = |
tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; |
/* And we are done processing options. */ |
break; |
} else { |
/* All other options have a length field, so that we easily |
can skip past them. */ |
if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { |
/* If the length field is zero, the options are malformed |
and we don't process them further. */ |
break; |
} |
c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; |
} |
} |
} |
/* Our response will be a SYNACK. */ |
#if UIP_ACTIVE_OPEN |
tcp_send_synack: |
BUF->flags = TCP_ACK; |
tcp_send_syn: |
BUF->flags |= TCP_SYN; |
#else /* UIP_ACTIVE_OPEN */ |
tcp_send_synack: |
BUF->flags = TCP_SYN | TCP_ACK; |
#endif /* UIP_ACTIVE_OPEN */ |
/* We send out the TCP Maximum Segment Size option with our |
SYNACK. */ |
BUF->optdata[0] = 2; |
BUF->optdata[1] = 4; |
BUF->optdata[2] = (UIP_TCP_MSS) / 256; |
BUF->optdata[3] = (UIP_TCP_MSS) & 255; |
uip_len = 44; |
BUF->tcpoffset = 6 << 4; |
goto tcp_send; |
/* This label will be jumped to if we found an active connection. */ |
found: |
uip_conn = uip_connr; |
uip_flags = 0; |
/* We do a very naive form of TCP reset processing; we just accept |
any RST and kill our connection. We should in fact check if the |
sequence number of this reset is wihtin our advertised window |
before we accept the reset. */ |
if(BUF->flags & TCP_RST) { |
uip_connr->tcpstateflags = CLOSED; |
UIP_LOG("tcp: got reset, aborting connection."); |
uip_flags = UIP_ABORT; |
UIP_APPCALL(); |
goto drop; |
} |
/* Calculated the length of the data, if the application has sent |
any data to us. */ |
c = (BUF->tcpoffset >> 4) << 2; |
/* uip_len will contain the length of the actual TCP data. This is |
calculated by subtracing the length of the TCP header (in |
c) and the length of the IP header (20 bytes). */ |
uip_len = uip_len - c - 20; |
/* First, check if the sequence number of the incoming packet is |
what we're expecting next. If not, we send out an ACK with the |
correct numbers in. */ |
if(uip_len > 0 && |
(BUF->seqno[0] != uip_connr->rcv_nxt[0] || |
BUF->seqno[1] != uip_connr->rcv_nxt[1] || |
BUF->seqno[2] != uip_connr->rcv_nxt[2] || |
BUF->seqno[3] != uip_connr->rcv_nxt[3])) { |
goto tcp_send_ack; |
} |
/* Next, check if the incoming segment acknowledges any outstanding |
data. If so, we update the sequence number, reset the length of |
the outstanding data, calculate RTT estimations, and reset the |
retransmission timer. */ |
if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) { |
uip_add32(uip_connr->snd_nxt, uip_connr->len); |
if(BUF->ackno[0] == uip_acc32[0] && |
BUF->ackno[1] == uip_acc32[1] && |
BUF->ackno[2] == uip_acc32[2] && |
BUF->ackno[3] == uip_acc32[3]) { |
/* Update sequence number. */ |
uip_connr->snd_nxt[0] = uip_acc32[0]; |
uip_connr->snd_nxt[1] = uip_acc32[1]; |
uip_connr->snd_nxt[2] = uip_acc32[2]; |
uip_connr->snd_nxt[3] = uip_acc32[3]; |
/* Do RTT estimation, unless we have done retransmissions. */ |
if(uip_connr->nrtx == 0) { |
signed char m; |
m = uip_connr->rto - uip_connr->timer; |
/* This is taken directly from VJs original code in his paper */ |
m = m - (uip_connr->sa >> 3); |
uip_connr->sa += m; |
if(m < 0) { |
m = -m; |
} |
m = m - (uip_connr->sv >> 2); |
uip_connr->sv += m; |
uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv; |
} |
/* Set the acknowledged flag. */ |
uip_flags = UIP_ACKDATA; |
/* Reset the retransmission timer. */ |
uip_connr->timer = uip_connr->rto; |
} |
} |
/* Do different things depending on in what state the connection is. */ |
switch(uip_connr->tcpstateflags & TS_MASK) { |
/* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not |
implemented, since we force the application to close when the |
peer sends a FIN (hence the application goes directly from |
ESTABLISHED to LAST_ACK). */ |
case SYN_RCVD: |
/* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and |
we are waiting for an ACK that acknowledges the data we sent |
out the last time. Therefore, we want to have the UIP_ACKDATA |
flag set. If so, we enter the ESTABLISHED state. */ |
if(uip_flags & UIP_ACKDATA) { |
uip_connr->tcpstateflags = ESTABLISHED; |
uip_flags = UIP_CONNECTED; |
uip_connr->len = 0; |
if(uip_len > 0) { |
uip_flags |= UIP_NEWDATA; |
uip_add_rcv_nxt(uip_len); |
} |
uip_slen = 0; |
UIP_APPCALL(); |
goto appsend; |
} |
goto drop; |
#if UIP_ACTIVE_OPEN |
case SYN_SENT: |
/* In SYN_SENT, we wait for a SYNACK that is sent in response to |
our SYN. The rcv_nxt is set to sequence number in the SYNACK |
plus one, and we send an ACK. We move into the ESTABLISHED |
state. */ |
if((uip_flags & UIP_ACKDATA) && |
BUF->flags == (TCP_SYN | TCP_ACK)) { |
/* Parse the TCP MSS option, if present. */ |
if((BUF->tcpoffset & 0xf0) > 0x50) { |
for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { |
opt = uip_buf[40 + UIP_LLH_LEN + c]; |
if(opt == 0x00) { |
/* End of options. */ |
break; |
} else if(opt == 0x01) { |
++c; |
/* NOP option. */ |
} else if(opt == 0x02 && |
uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0x04) { |
/* An MSS option with the right option length. */ |
tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | |
uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; |
uip_connr->initialmss = |
uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; |
/* And we are done processing options. */ |
break; |
} else { |
/* All other options have a length field, so that we easily |
can skip past them. */ |
if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { |
/* If the length field is zero, the options are malformed |
and we don't process them further. */ |
break; |
} |
c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; |
} |
} |
} |
uip_connr->tcpstateflags = ESTABLISHED; |
uip_connr->rcv_nxt[0] = BUF->seqno[0]; |
uip_connr->rcv_nxt[1] = BUF->seqno[1]; |
uip_connr->rcv_nxt[2] = BUF->seqno[2]; |
uip_connr->rcv_nxt[3] = BUF->seqno[3]; |
uip_add_rcv_nxt(1); |
uip_flags = UIP_CONNECTED | UIP_NEWDATA; |
uip_connr->len = 0; |
uip_len = 0; |
uip_slen = 0; |
UIP_APPCALL(); |
goto appsend; |
} |
goto reset; |
#endif /* UIP_ACTIVE_OPEN */ |
case ESTABLISHED: |
/* In the ESTABLISHED state, we call upon the application to feed |
data into the uip_buf. If the UIP_ACKDATA flag is set, the |
application should put new data into the buffer, otherwise we are |
retransmitting an old segment, and the application should put that |
data into the buffer. |
If the incoming packet is a FIN, we should close the connection on |
this side as well, and we send out a FIN and enter the LAST_ACK |
state. We require that there is no outstanding data; otherwise the |
sequence numbers will be screwed up. */ |
if(BUF->flags & TCP_FIN) { |
if(uip_outstanding(uip_connr)) { |
goto drop; |
} |
uip_add_rcv_nxt(1 + uip_len); |
uip_flags = UIP_CLOSE; |
if(uip_len > 0) { |
uip_flags |= UIP_NEWDATA; |
} |
UIP_APPCALL(); |
uip_connr->len = 1; |
uip_connr->tcpstateflags = LAST_ACK; |
uip_connr->nrtx = 0; |
tcp_send_finack: |
BUF->flags = TCP_FIN | TCP_ACK; |
goto tcp_send_nodata; |
} |
/* Check the URG flag. If this is set, the segment carries urgent |
data that we must pass to the application. */ |
if(BUF->flags & TCP_URG) { |
#if UIP_URGDATA > 0 |
uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1]; |
if(uip_urglen > uip_len) { |
/* There is more urgent data in the next segment to come. */ |
uip_urglen = uip_len; |
} |
uip_add_rcv_nxt(uip_urglen); |
uip_len -= uip_urglen; |
uip_urgdata = uip_appdata; |
uip_appdata += uip_urglen; |
} else { |
uip_urglen = 0; |
#endif /* UIP_URGDATA > 0 */ |
uip_appdata += (BUF->urgp[0] << 8) | BUF->urgp[1]; |
uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1]; |
} |
/* If uip_len > 0 we have TCP data in the packet, and we flag this |
by setting the UIP_NEWDATA flag and update the sequence number |
we acknowledge. If the application has stopped the dataflow |
using uip_stop(), we must not accept any data packets from the |
remote host. */ |
if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) { |
uip_flags |= UIP_NEWDATA; |
uip_add_rcv_nxt(uip_len); |
} |
/* Check if the available buffer space advertised by the other end |
is smaller than the initial MSS for this connection. If so, we |
set the current MSS to the window size to ensure that the |
application does not send more data than the other end can |
handle. |
If the remote host advertises a zero window, we set the MSS to |
the initial MSS so that the application will send an entire MSS |
of data. This data will not be acknowledged by the receiver, |
and the application will retransmit it. This is called the |
"persistent timer" and uses the retransmission mechanim. |
*/ |
tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1]; |
if(tmp16 > uip_connr->initialmss || |
tmp16 == 0) { |
tmp16 = uip_connr->initialmss; |
} |
uip_connr->mss = tmp16; |
/* If this packet constitutes an ACK for outstanding data (flagged |
by the UIP_ACKDATA flag, we should call the application since it |
might want to send more data. If the incoming packet had data |
from the peer (as flagged by the UIP_NEWDATA flag), the |
application must also be notified. |
When the application is called, the global variable uip_len |
contains the length of the incoming data. The application can |
access the incoming data through the global pointer |
uip_appdata, which usually points 40 bytes into the uip_buf |
array. |
If the application wishes to send any data, this data should be |
put into the uip_appdata and the length of the data should be |
put into uip_len. If the application don't have any data to |
send, uip_len must be set to 0. */ |
if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { |
uip_slen = 0; |
UIP_APPCALL(); |
appsend: |
if(uip_flags & UIP_ABORT) { |
uip_slen = 0; |
uip_connr->tcpstateflags = CLOSED; |
BUF->flags = TCP_RST | TCP_ACK; |
goto tcp_send_nodata; |
} |
if(uip_flags & UIP_CLOSE) { |
uip_slen = 0; |
uip_connr->len = 1; |
uip_connr->tcpstateflags = FIN_WAIT_1; |
uip_connr->nrtx = 0; |
BUF->flags = TCP_FIN | TCP_ACK; |
goto tcp_send_nodata; |
} |
/* If uip_slen > 0, the application has data to be sent. */ |
if(uip_slen > 0) { |
/* If the connection has acknowledged data, the contents of |
the ->len variable should be discarded. */ |
if((uip_flags & UIP_ACKDATA) != 0) { |
uip_connr->len = 0; |
} |
/* If the ->len variable is non-zero the connection has |
already data in transit and cannot send anymore right |
now. */ |
if(uip_connr->len == 0) { |
/* The application cannot send more than what is allowed by |
the mss (the minumum of the MSS and the available |
window). */ |
if(uip_slen > uip_connr->mss) { |
uip_slen = uip_connr->mss; |
} |
/* Remember how much data we send out now so that we know |
when everything has been acknowledged. */ |
uip_connr->len = uip_slen; |
} else { |
/* If the application already had unacknowledged data, we |
make sure that the application does not send (i.e., |
retransmit) out more than it previously sent out. */ |
uip_slen = uip_connr->len; |
} |
} else { |
uip_connr->len = 0; |
} |
uip_connr->nrtx = 0; |
apprexmit: |
uip_appdata = uip_sappdata; |
/* If the application has data to be sent, or if the incoming |
packet had new data in it, we must send out a packet. */ |
if(uip_slen > 0 && uip_connr->len > 0) { |
/* Add the length of the IP and TCP headers. */ |
uip_len = uip_connr->len + UIP_TCPIP_HLEN; |
/* We always set the ACK flag in response packets. */ |
BUF->flags = TCP_ACK | TCP_PSH; |
/* Send the packet. */ |
goto tcp_send_noopts; |
} |
/* If there is no data to send, just send out a pure ACK if |
there is newdata. */ |
if(uip_flags & UIP_NEWDATA) { |
uip_len = UIP_TCPIP_HLEN; |
BUF->flags = TCP_ACK; |
goto tcp_send_noopts; |
} |
} |
goto drop; |
case LAST_ACK: |
/* We can close this connection if the peer has acknowledged our |
FIN. This is indicated by the UIP_ACKDATA flag. */ |
if(uip_flags & UIP_ACKDATA) { |
uip_connr->tcpstateflags = CLOSED; |
uip_flags = UIP_CLOSE; |
UIP_APPCALL(); |
} |
break; |
case FIN_WAIT_1: |
/* The application has closed the connection, but the remote host |
hasn't closed its end yet. Thus we do nothing but wait for a |
FIN from the other side. */ |
if(uip_len > 0) { |
uip_add_rcv_nxt(uip_len); |
} |
if(BUF->flags & TCP_FIN) { |
if(uip_flags & UIP_ACKDATA) { |
uip_connr->tcpstateflags = TIME_WAIT; |
uip_connr->timer = 0; |
uip_connr->len = 0; |
} else { |
uip_connr->tcpstateflags = CLOSING; |
} |
uip_add_rcv_nxt(1); |
uip_flags = UIP_CLOSE; |
UIP_APPCALL(); |
goto tcp_send_ack; |
} else if(uip_flags & UIP_ACKDATA) { |
uip_connr->tcpstateflags = FIN_WAIT_2; |
uip_connr->len = 0; |
goto drop; |
} |
if(uip_len > 0) { |
goto tcp_send_ack; |
} |
goto drop; |
case FIN_WAIT_2: |
if(uip_len > 0) { |
uip_add_rcv_nxt(uip_len); |
} |
if(BUF->flags & TCP_FIN) { |
uip_connr->tcpstateflags = TIME_WAIT; |
uip_connr->timer = 0; |
uip_add_rcv_nxt(1); |
uip_flags = UIP_CLOSE; |
UIP_APPCALL(); |
goto tcp_send_ack; |
} |
if(uip_len > 0) { |
goto tcp_send_ack; |
} |
goto drop; |
case TIME_WAIT: |
goto tcp_send_ack; |
case CLOSING: |
if(uip_flags & UIP_ACKDATA) { |
uip_connr->tcpstateflags = TIME_WAIT; |
uip_connr->timer = 0; |
} |
} |
goto drop; |
/* We jump here when we are ready to send the packet, and just want |
to set the appropriate TCP sequence numbers in the TCP header. */ |
tcp_send_ack: |
BUF->flags = TCP_ACK; |
tcp_send_nodata: |
uip_len = 40; |
tcp_send_noopts: |
BUF->tcpoffset = 5 << 4; |
tcp_send: |
/* We're done with the input processing. We are now ready to send a |
reply. Our job is to fill in all the fields of the TCP and IP |
headers before calculating the checksum and finally send the |
packet. */ |
BUF->ackno[0] = uip_connr->rcv_nxt[0]; |
BUF->ackno[1] = uip_connr->rcv_nxt[1]; |
BUF->ackno[2] = uip_connr->rcv_nxt[2]; |
BUF->ackno[3] = uip_connr->rcv_nxt[3]; |
BUF->seqno[0] = uip_connr->snd_nxt[0]; |
BUF->seqno[1] = uip_connr->snd_nxt[1]; |
BUF->seqno[2] = uip_connr->snd_nxt[2]; |
BUF->seqno[3] = uip_connr->snd_nxt[3]; |
BUF->proto = UIP_PROTO_TCP; |
BUF->srcport = uip_connr->lport; |
BUF->destport = uip_connr->rport; |
BUF->srcipaddr[0] = uip_hostaddr[0]; |
BUF->srcipaddr[1] = uip_hostaddr[1]; |
BUF->destipaddr[0] = uip_connr->ripaddr[0]; |
BUF->destipaddr[1] = uip_connr->ripaddr[1]; |
if(uip_connr->tcpstateflags & UIP_STOPPED) { |
/* If the connection has issued uip_stop(), we advertise a zero |
window so that the remote host will stop sending data. */ |
BUF->wnd[0] = BUF->wnd[1] = 0; |
} else { |
BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); |
BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); |
} |
tcp_send_noconn: |
BUF->len[0] = (uip_len >> 8); |
BUF->len[1] = (uip_len & 0xff); |
/* Calculate TCP checksum. */ |
BUF->tcpchksum = 0; |
BUF->tcpchksum = ~(uip_tcpchksum()); |
#if UIP_UDP |
ip_send_nolen: |
#endif |
BUF->vhl = 0x45; |
BUF->tos = 0; |
BUF->ipoffset[0] = BUF->ipoffset[1] = 0; |
BUF->ttl = UIP_TTL; |
++ipid; |
BUF->ipid[0] = ipid >> 8; |
BUF->ipid[1] = ipid & 0xff; |
/* Calculate IP checksum. */ |
BUF->ipchksum = 0; |
BUF->ipchksum = ~(uip_ipchksum()); |
UIP_STAT(++uip_stat.tcp.sent); |
send: |
UIP_STAT(++uip_stat.ip.sent); |
/* Return and let the caller do the actual transmission. */ |
return; |
drop: |
uip_len = 0; |
return; |
} |
/*-----------------------------------------------------------------------------------*/ |
u16_t |
htons(u16_t val) |
{ |
return HTONS(val); |
} |
/*-----------------------------------------------------------------------------------*/ |
/** @} */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip.d |
---|
0,0 → 1,16 |
Utilities/uip/uip.o: Utilities/uip/uip.c Utilities/uip/uip.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h Utilities/uip/uip_arch.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/string.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/string.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip.h |
---|
0,0 → 1,1062 |
/** |
* \addtogroup uip |
* @{ |
*/ |
/** |
* \file |
* Header file for the uIP TCP/IP stack. |
* \author Adam Dunkels <adam@dunkels.com> |
* |
* The uIP TCP/IP stack header file contains definitions for a number |
* of C macros that are used by uIP programs as well as internal uIP |
* structures, TCP/IP header structures and function declarations. |
* |
*/ |
/* |
* Copyright (c) 2001-2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: uip.h,v 1.36.2.7 2003/10/07 13:47:51 adam Exp $ |
* |
*/ |
#ifndef __UIP_H__ |
#define __UIP_H__ |
#include "uipopt.h" |
/*-----------------------------------------------------------------------------------*/ |
/* First, the functions that should be called from the |
* system. Initialization, the periodic timer and incoming packets are |
* handled by the following three functions. |
*/ |
/** |
* \defgroup uipconffunc uIP configuration functions |
* @{ |
* |
* The uIP configuration functions are used for setting run-time |
* parameters in uIP such as IP addresses. |
*/ |
/** |
* Set the IP address of this host. |
* |
* The IP address is represented as a 4-byte array where the first |
* octet of the IP address is put in the first member of the 4-byte |
* array. |
* |
* \param addr A pointer to a 4-byte representation of the IP address. |
* |
* \hideinitializer |
*/ |
#define uip_sethostaddr(addr) do { uip_hostaddr[0] = addr[0]; \ |
uip_hostaddr[1] = addr[1]; } while(0) |
/** |
* Get the IP address of this host. |
* |
* The IP address is represented as a 4-byte array where the first |
* octet of the IP address is put in the first member of the 4-byte |
* array. |
* |
* \param addr A pointer to a 4-byte array that will be filled in with |
* the currently configured IP address. |
* |
* \hideinitializer |
*/ |
#define uip_gethostaddr(addr) do { addr[0] = uip_hostaddr[0]; \ |
addr[1] = uip_hostaddr[1]; } while(0) |
/** @} */ |
/** |
* \defgroup uipinit uIP initialization functions |
* @{ |
* |
* The uIP initialization functions are used for booting uIP. |
*/ |
/** |
* uIP initialization function. |
* |
* This function should be called at boot up to initilize the uIP |
* TCP/IP stack. |
*/ |
void uip_init(void); |
/** @} */ |
/** |
* \defgroup uipdevfunc uIP device driver functions |
* @{ |
* |
* These functions are used by a network device driver for interacting |
* with uIP. |
*/ |
/** |
* Process an incoming packet. |
* |
* This function should be called when the device driver has received |
* a packet from the network. The packet from the device driver must |
* be present in the uip_buf buffer, and the length of the packet |
* should be placed in the uip_len variable. |
* |
* When the function returns, there may be an outbound packet placed |
* in the uip_buf packet buffer. If so, the uip_len variable is set to |
* the length of the packet. If no packet is to be sent out, the |
* uip_len variable is set to 0. |
* |
* The usual way of calling the function is presented by the source |
* code below. |
\code |
uip_len = devicedriver_poll(); |
if(uip_len > 0) { |
uip_input(); |
if(uip_len > 0) { |
devicedriver_send(); |
} |
} |
\endcode |
* |
* \note If you are writing a uIP device driver that needs ARP |
* (Address Resolution Protocol), e.g., when running uIP over |
* Ethernet, you will need to call the uIP ARP code before calling |
* this function: |
\code |
#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) |
uip_len = ethernet_devicedrver_poll(); |
if(uip_len > 0) { |
if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { |
uip_arp_ipin(); |
uip_input(); |
if(uip_len > 0) { |
uip_arp_out(); |
ethernet_devicedriver_send(); |
} |
} else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { |
uip_arp_arpin(); |
if(uip_len > 0) { |
ethernet_devicedriver_send(); |
} |
} |
\endcode |
* |
* \hideinitializer |
*/ |
#define uip_input() uip_process(UIP_DATA) |
/** |
* Periodic processing for a connection identified by its number. |
* |
* This function does the necessary periodic processing (timers, |
* polling) for a uIP TCP conneciton, and should be called when the |
* periodic uIP timer goes off. It should be called for every |
* connection, regardless of whether they are open of closed. |
* |
* When the function returns, it may have an outbound packet waiting |
* for service in the uIP packet buffer, and if so the uip_len |
* variable is set to a value larger than zero. The device driver |
* should be called to send out the packet. |
* |
* The ususal way of calling the function is through a for() loop like |
* this: |
\code |
for(i = 0; i < UIP_CONNS; ++i) { |
uip_periodic(i); |
if(uip_len > 0) { |
devicedriver_send(); |
} |
} |
\endcode |
* |
* \note If you are writing a uIP device driver that needs ARP |
* (Address Resolution Protocol), e.g., when running uIP over |
* Ethernet, you will need to call the uip_arp_out() function before |
* calling the device driver: |
\code |
for(i = 0; i < UIP_CONNS; ++i) { |
uip_periodic(i); |
if(uip_len > 0) { |
uip_arp_out(); |
ethernet_devicedriver_send(); |
} |
} |
\endcode |
* |
* \param conn The number of the connection which is to be periodically polled. |
* |
* \hideinitializer |
*/ |
#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ |
uip_process(UIP_TIMER); } while (0) |
/** |
* Periodic processing for a connection identified by a pointer to its structure. |
* |
* Same as uip_periodic() but takes a pointer to the actual uip_conn |
* struct instead of an integer as its argument. This function can be |
* used to force periodic processing of a specific connection. |
* |
* \param conn A pointer to the uip_conn struct for the connection to |
* be processed. |
* |
* \hideinitializer |
*/ |
#define uip_periodic_conn(conn) do { uip_conn = conn; \ |
uip_process(UIP_TIMER); } while (0) |
#if UIP_UDP |
/** |
* Periodic processing for a UDP connection identified by its number. |
* |
* This function is essentially the same as uip_prerioic(), but for |
* UDP connections. It is called in a similar fashion as the |
* uip_periodic() function: |
\code |
for(i = 0; i < UIP_UDP_CONNS; i++) { |
uip_udp_periodic(i); |
if(uip_len > 0) { |
devicedriver_send(); |
} |
} |
\endcode |
* |
* \note As for the uip_periodic() function, special care has to be |
* taken when using uIP together with ARP and Ethernet: |
\code |
for(i = 0; i < UIP_UDP_CONNS; i++) { |
uip_udp_periodic(i); |
if(uip_len > 0) { |
uip_arp_out(); |
ethernet_devicedriver_send(); |
} |
} |
\endcode |
* |
* \param conn The number of the UDP connection to be processed. |
* |
* \hideinitializer |
*/ |
#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ |
uip_process(UIP_UDP_TIMER); } while (0) |
/** |
* Periodic processing for a UDP connection identified by a pointer to |
* its structure. |
* |
* Same as uip_udp_periodic() but takes a pointer to the actual |
* uip_conn struct instead of an integer as its argument. This |
* function can be used to force periodic processing of a specific |
* connection. |
* |
* \param conn A pointer to the uip_udp_conn struct for the connection |
* to be processed. |
* |
* \hideinitializer |
*/ |
#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ |
uip_process(UIP_UDP_TIMER); } while (0) |
#endif /* UIP_UDP */ |
/** |
* The uIP packet buffer. |
* |
* The uip_buf array is used to hold incoming and outgoing |
* packets. The device driver should place incoming data into this |
* buffer. When sending data, the device driver should read the link |
* level headers and the TCP/IP headers from this buffer. The size of |
* the link level headers is configured by the UIP_LLH_LEN define. |
* |
* \note The application data need not be placed in this buffer, so |
* the device driver must read it from the place pointed to by the |
* uip_appdata pointer as illustrated by the following example: |
\code |
void |
devicedriver_send(void) |
{ |
hwsend(&uip_buf[0], UIP_LLH_LEN); |
hwsend(&uip_buf[UIP_LLH_LEN], 40); |
hwsend(uip_appdata, uip_len - 40 - UIP_LLH_LEN); |
} |
\endcode |
*/ |
extern u8_t uip_buf[UIP_BUFSIZE+2]; /*_RB_ __attribute__ ((aligned (4)));*/ |
/** @} */ |
/*-----------------------------------------------------------------------------------*/ |
/* Functions that are used by the uIP application program. Opening and |
* closing connections, sending and receiving data, etc. is all |
* handled by the functions below. |
*/ |
/** |
* \defgroup uipappfunc uIP application functions |
* @{ |
* |
* Functions used by an application running of top of uIP. |
*/ |
/** |
* Start listening to the specified port. |
* |
* \note Since this function expects the port number in network byte |
* order, a conversion using HTONS() or htons() is necessary. |
* |
\code |
uip_listen(HTONS(80)); |
\endcode |
* |
* \param port A 16-bit port number in network byte order. |
*/ |
void uip_listen(u16_t port); |
/** |
* Stop listening to the specified port. |
* |
* \note Since this function expects the port number in network byte |
* order, a conversion using HTONS() or htons() is necessary. |
* |
\code |
uip_unlisten(HTONS(80)); |
\endcode |
* |
* \param port A 16-bit port number in network byte order. |
*/ |
void uip_unlisten(u16_t port); |
/** |
* Connect to a remote host using TCP. |
* |
* This function is used to start a new connection to the specified |
* port on the specied host. It allocates a new connection identifier, |
* sets the connection to the SYN_SENT state and sets the |
* retransmission timer to 0. This will cause a TCP SYN segment to be |
* sent out the next time this connection is periodically processed, |
* which usually is done within 0.5 seconds after the call to |
* uip_connect(). |
* |
* \note This function is avaliable only if support for active open |
* has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. |
* |
* \note Since this function requires the port number to be in network |
* byte order, a convertion using HTONS() or htons() is necessary. |
* |
\code |
u16_t ipaddr[2]; |
uip_ipaddr(ipaddr, 192,168,1,2); |
uip_connect(ipaddr, HTONS(80)); |
\endcode |
* |
* \param ripaddr A pointer to a 4-byte array representing the IP |
* address of the remote hot. |
* |
* \param port A 16-bit port number in network byte order. |
* |
* \return A pointer to the uIP connection identifier for the new connection, |
* or NULL if no connection could be allocated. |
* |
*/ |
struct uip_conn *uip_connect(u16_t *ripaddr, u16_t port); |
/** |
* \internal |
* |
* Check if a connection has outstanding (i.e., unacknowledged) data. |
* |
* \param conn A pointer to the uip_conn structure for the connection. |
* |
* \hideinitializer |
*/ |
#define uip_outstanding(conn) ((conn)->len) |
/** |
* Send data on the current connection. |
* |
* This function is used to send out a single segment of TCP |
* data. Only applications that have been invoked by uIP for event |
* processing can send data. |
* |
* The amount of data that actually is sent out after a call to this |
* funcion is determined by the maximum amount of data TCP allows. uIP |
* will automatically crop the data so that only the appropriate |
* amount of data is sent. The function uip_mss() can be used to query |
* uIP for the amount of data that actually will be sent. |
* |
* \note This function does not guarantee that the sent data will |
* arrive at the destination. If the data is lost in the network, the |
* application will be invoked with the uip_rexmit() event being |
* set. The application will then have to resend the data using this |
* function. |
* |
* \param data A pointer to the data which is to be sent. |
* |
* \param len The maximum amount of data bytes to be sent. |
* |
* \hideinitializer |
*/ |
#define uip_send(data, len) do { uip_sappdata = (data); uip_slen = (len);} while(0) |
/** |
* The length of any incoming data that is currently avaliable (if avaliable) |
* in the uip_appdata buffer. |
* |
* The test function uip_data() must first be used to check if there |
* is any data available at all. |
* |
* \hideinitializer |
*/ |
#define uip_datalen() uip_len |
/** |
* The length of any out-of-band data (urgent data) that has arrived |
* on the connection. |
* |
* \note The configuration parameter UIP_URGDATA must be set for this |
* function to be enabled. |
* |
* \hideinitializer |
*/ |
#define uip_urgdatalen() uip_urglen |
/** |
* Close the current connection. |
* |
* This function will close the current connection in a nice way. |
* |
* \hideinitializer |
*/ |
#define uip_close() (uip_flags = UIP_CLOSE) |
/** |
* Abort the current connection. |
* |
* This function will abort (reset) the current connection, and is |
* usually used when an error has occured that prevents using the |
* uip_close() function. |
* |
* \hideinitializer |
*/ |
#define uip_abort() (uip_flags = UIP_ABORT) |
/** |
* Tell the sending host to stop sending data. |
* |
* This function will close our receiver's window so that we stop |
* receiving data for the current connection. |
* |
* \hideinitializer |
*/ |
#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) |
/** |
* Find out if the current connection has been previously stopped with |
* uip_stop(). |
* |
* \hideinitializer |
*/ |
#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) |
/** |
* Restart the current connection, if is has previously been stopped |
* with uip_stop(). |
* |
* This function will open the receiver's window again so that we |
* start receiving data for the current connection. |
* |
* \hideinitializer |
*/ |
#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ |
uip_conn->tcpstateflags &= ~UIP_STOPPED; \ |
} while(0) |
/* uIP tests that can be made to determine in what state the current |
connection is, and what the application function should do. */ |
/** |
* Is new incoming data available? |
* |
* Will reduce to non-zero if there is new data for the application |
* present at the uip_appdata pointer. The size of the data is |
* avaliable through the uip_len variable. |
* |
* \hideinitializer |
*/ |
#define uip_newdata() (uip_flags & UIP_NEWDATA) |
/** |
* Has previously sent data been acknowledged? |
* |
* Will reduce to non-zero if the previously sent data has been |
* acknowledged by the remote host. This means that the application |
* can send new data. |
* |
* \hideinitializer |
*/ |
#define uip_acked() (uip_flags & UIP_ACKDATA) |
/** |
* Has the connection just been connected? |
* |
* Reduces to non-zero if the current connection has been connected to |
* a remote host. This will happen both if the connection has been |
* actively opened (with uip_connect()) or passively opened (with |
* uip_listen()). |
* |
* \hideinitializer |
*/ |
#define uip_connected() (uip_flags & UIP_CONNECTED) |
/** |
* Has the connection been closed by the other end? |
* |
* Is non-zero if the connection has been closed by the remote |
* host. The application may then do the necessary clean-ups. |
* |
* \hideinitializer |
*/ |
#define uip_closed() (uip_flags & UIP_CLOSE) |
/** |
* Has the connection been aborted by the other end? |
* |
* Non-zero if the current connection has been aborted (reset) by the |
* remote host. |
* |
* \hideinitializer |
*/ |
#define uip_aborted() (uip_flags & UIP_ABORT) |
/** |
* Has the connection timed out? |
* |
* Non-zero if the current connection has been aborted due to too many |
* retransmissions. |
* |
* \hideinitializer |
*/ |
#define uip_timedout() (uip_flags & UIP_TIMEDOUT) |
/** |
* Do we need to retransmit previously data? |
* |
* Reduces to non-zero if the previously sent data has been lost in |
* the network, and the application should retransmit it. The |
* application should send the exact same data as it did the last |
* time, using the uip_send() function. |
* |
* \hideinitializer |
*/ |
#define uip_rexmit() (uip_flags & UIP_REXMIT) |
/** |
* Is the connection being polled by uIP? |
* |
* Is non-zero if the reason the application is invoked is that the |
* current connection has been idle for a while and should be |
* polled. |
* |
* The polling event can be used for sending data without having to |
* wait for the remote host to send data. |
* |
* \hideinitializer |
*/ |
#define uip_poll() (uip_flags & UIP_POLL) |
/** |
* Get the initial maxium segment size (MSS) of the current |
* connection. |
* |
* \hideinitializer |
*/ |
#define uip_initialmss() (uip_conn->initialmss) |
/** |
* Get the current maxium segment size that can be sent on the current |
* connection. |
* |
* The current maxiumum segment size that can be sent on the |
* connection is computed from the receiver's window and the MSS of |
* the connection (which also is available by calling |
* uip_initialmss()). |
* |
* \hideinitializer |
*/ |
#define uip_mss() (uip_conn->mss) |
/** |
* Set up a new UDP connection. |
* |
* \param ripaddr A pointer to a 4-byte structure representing the IP |
* address of the remote host. |
* |
* \param rport The remote port number in network byte order. |
* |
* \return The uip_udp_conn structure for the new connection or NULL |
* if no connection could be allocated. |
*/ |
struct uip_udp_conn *uip_udp_new(u16_t *ripaddr, u16_t rport); |
/** |
* Removed a UDP connection. |
* |
* \param conn A pointer to the uip_udp_conn structure for the connection. |
* |
* \hideinitializer |
*/ |
#define uip_udp_remove(conn) (conn)->lport = 0 |
/** |
* Send a UDP datagram of length len on the current connection. |
* |
* This function can only be called in response to a UDP event (poll |
* or newdata). The data must be present in the uip_buf buffer, at the |
* place pointed to by the uip_appdata pointer. |
* |
* \param len The length of the data in the uip_buf buffer. |
* |
* \hideinitializer |
*/ |
#define uip_udp_send(len) uip_slen = (len) |
/** @} */ |
/* uIP convenience and converting functions. */ |
/** |
* \defgroup uipconvfunc uIP conversion functions |
* @{ |
* |
* These functions can be used for converting between different data |
* formats used by uIP. |
*/ |
/** |
* Pack an IP address into a 4-byte array which is used by uIP to |
* represent IP addresses. |
* |
* Example: |
\code |
u16_t ipaddr[2]; |
uip_ipaddr(&ipaddr, 192,168,1,2); |
\endcode |
* |
* \param addr A pointer to a 4-byte array that will be filled in with |
* the IP addres. |
* \param addr0 The first octet of the IP address. |
* \param addr1 The second octet of the IP address. |
* \param addr2 The third octet of the IP address. |
* \param addr3 The forth octet of the IP address. |
* |
* \hideinitializer |
*/ |
#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ |
(addr)[0] = HTONS(((addr0) << 8) | (addr1)); \ |
(addr)[1] = HTONS(((addr2) << 8) | (addr3)); \ |
} while(0) |
/** |
* Convert 16-bit quantity from host byte order to network byte order. |
* |
* This macro is primarily used for converting constants from host |
* byte order to network byte order. For converting variables to |
* network byte order, use the htons() function instead. |
* |
* \hideinitializer |
*/ |
#ifndef HTONS |
# if BYTE_ORDER == BIG_ENDIAN |
# define HTONS(n) (n) |
# else /* BYTE_ORDER == BIG_ENDIAN */ |
# define HTONS(n) ((((u16_t)((n) & 0xff)) << 8) | (((n) & 0xff00) >> 8)) |
# endif /* BYTE_ORDER == BIG_ENDIAN */ |
#endif /* HTONS */ |
/** |
* Convert 16-bit quantity from host byte order to network byte order. |
* |
* This function is primarily used for converting variables from host |
* byte order to network byte order. For converting constants to |
* network byte order, use the HTONS() macro instead. |
*/ |
#ifndef htons |
u16_t htons(u16_t val); |
#endif /* htons */ |
/** @} */ |
/** |
* Pointer to the application data in the packet buffer. |
* |
* This pointer points to the application data when the application is |
* called. If the application wishes to send data, the application may |
* use this space to write the data into before calling uip_send(). |
*/ |
extern volatile u8_t *uip_appdata; |
extern volatile u8_t *uip_sappdata; |
#if UIP_URGDATA > 0 |
/* u8_t *uip_urgdata: |
* |
* This pointer points to any urgent data that has been received. Only |
* present if compiled with support for urgent data (UIP_URGDATA). |
*/ |
extern volatile u8_t *uip_urgdata; |
#endif /* UIP_URGDATA > 0 */ |
/* u[8|16]_t uip_len: |
* |
* When the application is called, uip_len contains the length of any |
* new data that has been received from the remote host. The |
* application should set this variable to the size of any data that |
* the application wishes to send. When the network device driver |
* output function is called, uip_len should contain the length of the |
* outgoing packet. |
*/ |
extern u16_t uip_len, uip_slen; |
#if UIP_URGDATA > 0 |
extern u8_t uip_urglen, uip_surglen; |
#endif /* UIP_URGDATA > 0 */ |
/** |
* Representation of a uIP TCP connection. |
* |
* The uip_conn structure is used for identifying a connection. All |
* but one field in the structure are to be considered read-only by an |
* application. The only exception is the appstate field whos purpose |
* is to let the application store application-specific state (e.g., |
* file pointers) for the connection. The size of this field is |
* configured in the "uipopt.h" header file. |
*/ |
struct uip_conn { |
u16_t ripaddr[2]; /**< The IP address of the remote host. */ |
u16_t lport; /**< The local TCP port, in network byte order. */ |
u16_t rport; /**< The local remote TCP port, in network byte |
order. */ |
u8_t rcv_nxt[4]; /**< The sequence number that we expect to |
receive next. */ |
u8_t snd_nxt[4]; /**< The sequence number that was last sent by |
us. */ |
u16_t len; /**< Length of the data that was previously sent. */ |
u16_t mss; /**< Current maximum segment size for the |
connection. */ |
u16_t initialmss; /**< Initial maximum segment size for the |
connection. */ |
u8_t sa; /**< Retransmission time-out calculation state |
variable. */ |
u8_t sv; /**< Retransmission time-out calculation state |
variable. */ |
u8_t rto; /**< Retransmission time-out. */ |
u8_t tcpstateflags; /**< TCP state and flags. */ |
u8_t timer; /**< The retransmission timer. */ |
u8_t nrtx; /**< The number of retransmissions for the last |
segment sent. */ |
/** The application state. */ |
u8_t appstate[UIP_APPSTATE_SIZE]; |
}; |
/* Pointer to the current connection. */ |
extern struct uip_conn *uip_conn; |
/* The array containing all uIP connections. */ |
extern struct uip_conn uip_conns[UIP_CONNS]; |
/** |
* \addtogroup uiparch |
* @{ |
*/ |
/** |
* 4-byte array used for the 32-bit sequence number calculations. |
*/ |
extern volatile u8_t uip_acc32[4]; |
/** @} */ |
#if UIP_UDP |
/** |
* Representation of a uIP UDP connection. |
*/ |
struct uip_udp_conn { |
u16_t ripaddr[2]; /**< The IP address of the remote peer. */ |
u16_t lport; /**< The local port number in network byte order. */ |
u16_t rport; /**< The remote port number in network byte order. */ |
}; |
extern struct uip_udp_conn *uip_udp_conn; |
extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; |
#endif /* UIP_UDP */ |
/** |
* The structure holding the TCP/IP statistics that are gathered if |
* UIP_STATISTICS is set to 1. |
* |
*/ |
struct uip_stats { |
struct { |
uip_stats_t drop; /**< Number of dropped packets at the IP |
layer. */ |
uip_stats_t recv; /**< Number of received packets at the IP |
layer. */ |
uip_stats_t sent; /**< Number of sent packets at the IP |
layer. */ |
uip_stats_t vhlerr; /**< Number of packets dropped due to wrong |
IP version or header length. */ |
uip_stats_t hblenerr; /**< Number of packets dropped due to wrong |
IP length, high byte. */ |
uip_stats_t lblenerr; /**< Number of packets dropped due to wrong |
IP length, low byte. */ |
uip_stats_t fragerr; /**< Number of packets dropped since they |
were IP fragments. */ |
uip_stats_t chkerr; /**< Number of packets dropped due to IP |
checksum errors. */ |
uip_stats_t protoerr; /**< Number of packets dropped since they |
were neither ICMP, UDP nor TCP. */ |
} ip; /**< IP statistics. */ |
struct { |
uip_stats_t drop; /**< Number of dropped ICMP packets. */ |
uip_stats_t recv; /**< Number of received ICMP packets. */ |
uip_stats_t sent; /**< Number of sent ICMP packets. */ |
uip_stats_t typeerr; /**< Number of ICMP packets with a wrong |
type. */ |
} icmp; /**< ICMP statistics. */ |
struct { |
uip_stats_t drop; /**< Number of dropped TCP segments. */ |
uip_stats_t recv; /**< Number of recived TCP segments. */ |
uip_stats_t sent; /**< Number of sent TCP segments. */ |
uip_stats_t chkerr; /**< Number of TCP segments with a bad |
checksum. */ |
uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK |
number. */ |
uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ |
uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ |
uip_stats_t syndrop; /**< Number of dropped SYNs due to too few |
connections was avaliable. */ |
uip_stats_t synrst; /**< Number of SYNs for closed ports, |
triggering a RST. */ |
} tcp; /**< TCP statistics. */ |
}; |
/** |
* The uIP TCP/IP statistics. |
* |
* This is the variable in which the uIP TCP/IP statistics are gathered. |
*/ |
extern struct uip_stats uip_stat; |
/*-----------------------------------------------------------------------------------*/ |
/* All the stuff below this point is internal to uIP and should not be |
* used directly by an application or by a device driver. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
/* u8_t uip_flags: |
* |
* When the application is called, uip_flags will contain the flags |
* that are defined in this file. Please read below for more |
* infomation. |
*/ |
extern volatile u8_t uip_flags; |
/* The following flags may be set in the global variable uip_flags |
before calling the application callback. The UIP_ACKDATA and |
UIP_NEWDATA flags may both be set at the same time, whereas the |
others are mutualy exclusive. Note that these flags should *NOT* be |
accessed directly, but through the uIP functions/macros. */ |
#define UIP_ACKDATA 1 /* Signifies that the outstanding data was |
acked and the application should send |
out new data instead of retransmitting |
the last data. */ |
#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent |
us new data. */ |
#define UIP_REXMIT 4 /* Tells the application to retransmit the |
data that was last sent. */ |
#define UIP_POLL 8 /* Used for polling the application, to |
check if the application has data that |
it wants to send. */ |
#define UIP_CLOSE 16 /* The remote host has closed the |
connection, thus the connection has |
gone away. Or the application signals |
that it wants to close the |
connection. */ |
#define UIP_ABORT 32 /* The remote host has aborted the |
connection, thus the connection has |
gone away. Or the application signals |
that it wants to abort the |
connection. */ |
#define UIP_CONNECTED 64 /* We have got a connection from a remote |
host and have set up a new connection |
for it, or an active connection has |
been successfully established. */ |
#define UIP_TIMEDOUT 128 /* The connection has been aborted due to |
too many retransmissions. */ |
/* uip_process(flag): |
* |
* The actual uIP function which does all the work. |
*/ |
void uip_process(u8_t flag); |
void udp_appcall(void); |
/* The following flags are passed as an argument to the uip_process() |
function. They are used to distinguish between the two cases where |
uip_process() is called. It can be called either because we have |
incoming data that should be processed, or because the periodic |
timer has fired. */ |
#define UIP_DATA 1 /* Tells uIP that there is incoming data in |
the uip_buf buffer. The length of the |
data is stored in the global variable |
uip_len. */ |
#define UIP_TIMER 2 /* Tells uIP that the periodic timer has |
fired. */ |
#if UIP_UDP |
#define UIP_UDP_TIMER 3 |
#endif /* UIP_UDP */ |
/* The TCP states used in the uip_conn->tcpstateflags. */ |
#define CLOSED 0 |
#define SYN_RCVD 1 |
#define SYN_SENT 2 |
#define ESTABLISHED 3 |
#define FIN_WAIT_1 4 |
#define FIN_WAIT_2 5 |
#define CLOSING 6 |
#define TIME_WAIT 7 |
#define LAST_ACK 8 |
#define TS_MASK 15 |
#define UIP_STOPPED 16 |
#define UIP_TCPIP_HLEN 40 |
/* The TCP and IP headers. */ |
typedef struct { |
/* IP header. */ |
u8_t vhl, |
tos, |
len[2], |
ipid[2], |
ipoffset[2], |
ttl, |
proto; |
u16_t ipchksum; |
u16_t srcipaddr[2], |
destipaddr[2]; |
/* TCP header. */ |
u16_t srcport, |
destport; |
u8_t seqno[4], |
ackno[4], |
tcpoffset, |
flags, |
wnd[2]; |
u16_t tcpchksum; |
u8_t urgp[2]; |
u8_t optdata[4]; |
} uip_tcpip_hdr; |
/* The ICMP and IP headers. */ |
typedef struct { |
/* IP header. */ |
u8_t vhl, |
tos, |
len[2], |
ipid[2], |
ipoffset[2], |
ttl, |
proto; |
u16_t ipchksum; |
u16_t srcipaddr[2], |
destipaddr[2]; |
/* ICMP (echo) header. */ |
u8_t type, icode; |
u16_t icmpchksum; |
u16_t id, seqno; |
} uip_icmpip_hdr; |
/* The UDP and IP headers. */ |
typedef struct { |
/* IP header. */ |
u8_t vhl, |
tos, |
len[2], |
ipid[2], |
ipoffset[2], |
ttl, |
proto; |
u16_t ipchksum; |
u16_t srcipaddr[2], |
destipaddr[2]; |
/* UDP header. */ |
u16_t srcport, |
destport; |
u16_t udplen; |
u16_t udpchksum; |
} uip_udpip_hdr; |
#define UIP_PROTO_ICMP 1 |
#define UIP_PROTO_TCP 6 |
#define UIP_PROTO_UDP 17 |
#if UIP_FIXEDADDR |
extern const u16_t uip_hostaddr[2]; |
#else /* UIP_FIXEDADDR */ |
extern u16_t uip_hostaddr[2]; |
#endif /* UIP_FIXEDADDR */ |
#endif /* __UIP_H__ */ |
/** @} */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip_arch.c |
---|
0,0 → 1,143 |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: uip_arch.c,v 1.2.2.1 2003/10/04 22:54:17 adam Exp $ |
* |
*/ |
#include "uip.h" |
#include "uip_arch.h" |
#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) |
#define IP_PROTO_TCP 6 |
/*-----------------------------------------------------------------------------------*/ |
void uip_add32(u8_t *op32, u16_t op16) |
{ |
uip_acc32[3] = op32[3] + (op16 & 0xff); |
uip_acc32[2] = op32[2] + (op16 >> 8); |
uip_acc32[1] = op32[1]; |
uip_acc32[0] = op32[0]; |
if(uip_acc32[2] < (op16 >> 8)) { |
++uip_acc32[1]; |
if(uip_acc32[1] == 0) { |
++uip_acc32[0]; |
} |
} |
if(uip_acc32[3] < (op16 & 0xff)) { |
++uip_acc32[2]; |
if(uip_acc32[2] == 0) { |
++uip_acc32[1]; |
if(uip_acc32[1] == 0) { |
++uip_acc32[0]; |
} |
} |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
u16_t uip_chksum(u16_t *sdata, u16_t len) |
{ |
u16_t acc; |
for (acc = 0; len > 1; len -= 2) { |
u16_t u = ((unsigned char *)sdata)[0] + (((unsigned char *)sdata)[1] << 8); |
if ((acc += u) < u) { |
/* Overflow, so we add the carry to acc (i.e., increase by |
one). */ |
++acc; |
} |
++sdata; |
} |
/* add up any odd byte */ |
if(len == 1) { |
acc += htons(((u16_t)(*(u8_t *)sdata)) << 8); |
if(acc < htons(((u16_t)(*(u8_t *)sdata)) << 8)) { |
++acc; |
} |
} |
return acc; |
} |
/*-----------------------------------------------------------------------------------*/ |
u16_t uip_ipchksum(void) |
{ |
return uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN], 20); |
} |
/*-----------------------------------------------------------------------------------*/ |
u16_t uip_tcpchksum(void) |
{ |
u16_t hsum, sum; |
/* Compute the checksum of the TCP header. */ |
hsum = uip_chksum((u16_t *)&uip_buf[20 + UIP_LLH_LEN], 20); |
/* Compute the checksum of the data in the TCP packet and add it to |
the TCP header checksum. */ |
sum = uip_chksum((u16_t *)uip_appdata, |
(u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 40))); |
if((sum += hsum) < hsum) { |
++sum; |
} |
if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) { |
++sum; |
} |
if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) { |
++sum; |
} |
if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) { |
++sum; |
} |
if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) { |
++sum; |
} |
if((sum += (u16_t)htons((u16_t)IP_PROTO_TCP)) < (u16_t)htons((u16_t)IP_PROTO_TCP)) { |
++sum; |
} |
hsum = (u16_t)htons((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 20); |
if((sum += hsum) < hsum) { |
++sum; |
} |
return sum; |
} |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip_arch.d |
---|
0,0 → 1,2 |
Utilities/uip/uip_arch.o: Utilities/uip/uip_arch.c Utilities/uip/uip.h \ |
Utilities/uip/uipopt.h Utilities/uip/httpd.h Utilities/uip/uip_arch.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip_arch.h |
---|
0,0 → 1,130 |
/** |
* \defgroup uiparch Architecture specific uIP functions |
* @{ |
* |
* The functions in the architecture specific module implement the IP |
* check sum and 32-bit additions. |
* |
* The IP checksum calculation is the most computationally expensive |
* operation in the TCP/IP stack and it therefore pays off to |
* implement this in efficient assembler. The purpose of the uip-arch |
* module is to let the checksum functions to be implemented in |
* architecture specific assembler. |
* |
*/ |
/** |
* \file |
* Declarations of architecture specific functions. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: uip_arch.h,v 1.1.2.2 2003/10/06 15:10:22 adam Exp $ |
* |
*/ |
#ifndef __UIP_ARCH_H__ |
#define __UIP_ARCH_H__ |
#include "uip.h" |
/** |
* Carry out a 32-bit addition. |
* |
* Because not all architectures for which uIP is intended has native |
* 32-bit arithmetic, uIP uses an external C function for doing the |
* required 32-bit additions in the TCP protocol processing. This |
* function should add the two arguments and place the result in the |
* global variable uip_acc32. |
* |
* \note The 32-bit integer pointed to by the op32 parameter and the |
* result in the uip_acc32 variable are in network byte order (big |
* endian). |
* |
* \param op32 A pointer to a 4-byte array representing a 32-bit |
* integer in network byte order (big endian). |
* |
* \param op16 A 16-bit integer in host byte order. |
*/ |
void uip_add32(u8_t *op32, u16_t op16); |
/** |
* Calculate the Internet checksum over a buffer. |
* |
* The Internet checksum is the one's complement of the one's |
* complement sum of all 16-bit words in the buffer. |
* |
* See RFC1071. |
* |
* \note This function is not called in the current version of uIP, |
* but future versions might make use of it. |
* |
* \param buf A pointer to the buffer over which the checksum is to be |
* computed. |
* |
* \param len The length of the buffer over which the checksum is to |
* be computed. |
* |
* \return The Internet checksum of the buffer. |
*/ |
u16_t uip_chksum(u16_t *buf, u16_t len); |
/** |
* Calculate the IP header checksum of the packet header in uip_buf. |
* |
* The IP header checksum is the Internet checksum of the 20 bytes of |
* the IP header. |
* |
* \return The IP header checksum of the IP header in the uip_buf |
* buffer. |
*/ |
u16_t uip_ipchksum(void); |
/** |
* Calculate the TCP checksum of the packet in uip_buf and uip_appdata. |
* |
* The TCP checksum is the Internet checksum of data contents of the |
* TCP segment, and a pseudo-header as defined in RFC793. |
* |
* \note The uip_appdata pointer that points to the packet data may |
* point anywhere in memory, so it is not possible to simply calculate |
* the Internet checksum of the contents of the uip_buf buffer. |
* |
* \return The TCP checksum of the TCP segment in uip_buf and pointed |
* to by uip_appdata. |
*/ |
u16_t uip_tcpchksum(void); |
/** @} */ |
#endif /* __UIP_ARCH_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip_arp.c |
---|
0,0 → 1,429 |
/** |
* \addtogroup uip |
* @{ |
*/ |
/** |
* \defgroup uiparp uIP Address Resolution Protocol |
* @{ |
* |
* The Address Resolution Protocol ARP is used for mapping between IP |
* addresses and link level addresses such as the Ethernet MAC |
* addresses. ARP uses broadcast queries to ask for the link level |
* address of a known IP address and the host which is configured with |
* the IP address for which the query was meant, will respond with its |
* link level address. |
* |
* \note This ARP implementation only supports Ethernet. |
*/ |
/** |
* \file |
* Implementation of the ARP Address Resolution Protocol. |
* \author Adam Dunkels <adam@dunkels.com> |
* |
*/ |
/* |
* Copyright (c) 2001-2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: uip_arp.c,v 1.7.2.3 2003/10/06 22:42:30 adam Exp $ |
* |
*/ |
#include "uip_arp.h" |
#include <string.h> |
struct arp_hdr { |
struct uip_eth_hdr ethhdr; |
u16_t hwtype; |
u16_t protocol; |
u8_t hwlen; |
u8_t protolen; |
u16_t opcode; |
struct uip_eth_addr shwaddr; |
u16_t sipaddr[2]; |
struct uip_eth_addr dhwaddr; |
u16_t dipaddr[2]; |
}; |
struct ethip_hdr { |
struct uip_eth_hdr ethhdr; |
/* IP header. */ |
u8_t vhl, |
tos, |
len[2], |
ipid[2], |
ipoffset[2], |
ttl, |
proto; |
u16_t ipchksum; |
u16_t srcipaddr[2], |
destipaddr[2]; |
}; |
#define ARP_REQUEST 1 |
#define ARP_REPLY 2 |
#define ARP_HWTYPE_ETH 1 |
struct arp_entry { |
u16_t ipaddr[2]; |
struct uip_eth_addr ethaddr; |
u8_t time; |
}; |
struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0, |
UIP_ETHADDR1, |
UIP_ETHADDR2, |
UIP_ETHADDR3, |
UIP_ETHADDR4, |
UIP_ETHADDR5}}; |
static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; |
static u16_t ipaddr[2]; |
static u8_t i, c; |
static u8_t arptime; |
static u8_t tmpage; |
#define BUF ((struct arp_hdr *)&uip_buf[0]) |
#define IPBUF ((struct ethip_hdr *)&uip_buf[0]) |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Initialize the ARP module. |
* |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
uip_arp_init(void) |
{ |
for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { |
memset(arp_table[i].ipaddr, 0, 4); |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Periodic ARP processing function. |
* |
* This function performs periodic timer processing in the ARP module |
* and should be called at regular intervals. The recommended interval |
* is 10 seconds between the calls. |
* |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
uip_arp_timer(void) |
{ |
struct arp_entry *tabptr; |
++arptime; |
for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { |
tabptr = &arp_table[i]; |
if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && |
arptime - tabptr->time >= UIP_ARP_MAXAGE) { |
memset(tabptr->ipaddr, 0, 4); |
} |
} |
} |
/*-----------------------------------------------------------------------------------*/ |
static void |
uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr) |
{ |
register struct arp_entry *tabptr; |
/* Walk through the ARP mapping table and try to find an entry to |
update. If none is found, the IP -> MAC address mapping is |
inserted in the ARP table. */ |
for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { |
tabptr = &arp_table[i]; |
/* Only check those entries that are actually in use. */ |
if(tabptr->ipaddr[0] != 0 && |
tabptr->ipaddr[1] != 0) { |
/* Check if the source IP address of the incoming packet matches |
the IP address in this ARP table entry. */ |
if(ipaddr[0] == tabptr->ipaddr[0] && |
ipaddr[1] == tabptr->ipaddr[1]) { |
/* An old entry found, update this and return. */ |
memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); |
tabptr->time = arptime; |
return; |
} |
} |
} |
/* If we get here, no existing ARP table entry was found, so we |
create one. */ |
/* First, we try to find an unused entry in the ARP table. */ |
for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { |
tabptr = &arp_table[i]; |
if(tabptr->ipaddr[0] == 0 && |
tabptr->ipaddr[1] == 0) { |
break; |
} |
} |
/* If no unused entry is found, we try to find the oldest entry and |
throw it away. */ |
if(i == UIP_ARPTAB_SIZE) { |
tmpage = 0; |
c = 0; |
for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { |
tabptr = &arp_table[i]; |
if(arptime - tabptr->time > tmpage) { |
tmpage = arptime - tabptr->time; |
c = i; |
} |
} |
i = c; |
} |
/* Now, i is the ARP table entry which we will fill with the new |
information. */ |
memcpy(tabptr->ipaddr, ipaddr, 4); |
memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); |
tabptr->time = arptime; |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* ARP processing for incoming IP packets |
* |
* This function should be called by the device driver when an IP |
* packet has been received. The function will check if the address is |
* in the ARP cache, and if so the ARP cache entry will be |
* refreshed. If no ARP cache entry was found, a new one is created. |
* |
* This function expects an IP packet with a prepended Ethernet header |
* in the uip_buf[] buffer, and the length of the packet in the global |
* variable uip_len. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
uip_arp_ipin(void) |
{ |
uip_len -= sizeof(struct uip_eth_hdr); |
/* Only insert/update an entry if the source IP address of the |
incoming IP packet comes from a host on the local network. */ |
if((IPBUF->srcipaddr[0] & uip_arp_netmask[0]) != |
(uip_hostaddr[0] & uip_arp_netmask[0])) { |
return; |
} |
if((IPBUF->srcipaddr[1] & uip_arp_netmask[1]) != |
(uip_hostaddr[1] & uip_arp_netmask[1])) { |
return; |
} |
uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src)); |
return; |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* ARP processing for incoming ARP packets. |
* |
* This function should be called by the device driver when an ARP |
* packet has been received. The function will act differently |
* depending on the ARP packet type: if it is a reply for a request |
* that we previously sent out, the ARP cache will be filled in with |
* the values from the ARP reply. If the incoming ARP packet is an ARP |
* request for our IP address, an ARP reply packet is created and put |
* into the uip_buf[] buffer. |
* |
* When the function returns, the value of the global variable uip_len |
* indicates whether the device driver should send out a packet or |
* not. If uip_len is zero, no packet should be sent. If uip_len is |
* non-zero, it contains the length of the outbound packet that is |
* present in the uip_buf[] buffer. |
* |
* This function expects an ARP packet with a prepended Ethernet |
* header in the uip_buf[] buffer, and the length of the packet in the |
* global variable uip_len. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
typedef struct arp_hdr aht; |
void |
uip_arp_arpin(void) |
{ |
int ul; |
if(uip_len < sizeof(struct arp_hdr)) { |
uip_len = 0; |
return; |
} |
uip_len = 0; |
switch(BUF->opcode) { |
case HTONS(ARP_REQUEST): |
/* ARP request. If it asked for our address, we send out a |
reply. */ |
if(BUF->dipaddr[0] == uip_hostaddr[0] && |
BUF->dipaddr[1] == uip_hostaddr[1]) { |
/* The reply opcode is 2. */ |
BUF->opcode = HTONS(2); |
memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6); |
memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); |
memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); |
memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6); |
BUF->dipaddr[0] = BUF->sipaddr[0]; |
BUF->dipaddr[1] = BUF->sipaddr[1]; |
BUF->sipaddr[0] = uip_hostaddr[0]; |
BUF->sipaddr[1] = uip_hostaddr[1]; |
ul = BUF->hwlen; |
BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); |
uip_len = sizeof(struct arp_hdr); |
} |
break; |
case HTONS(ARP_REPLY): |
/* ARP reply. We insert or update the ARP table if it was meant |
for us. */ |
if(BUF->dipaddr[0] == uip_hostaddr[0] && |
BUF->dipaddr[1] == uip_hostaddr[1]) { |
uip_arp_update(BUF->sipaddr, &BUF->shwaddr); |
} |
break; |
} |
( void ) ul; |
return; |
} |
/*-----------------------------------------------------------------------------------*/ |
/** |
* Prepend Ethernet header to an outbound IP packet and see if we need |
* to send out an ARP request. |
* |
* This function should be called before sending out an IP packet. The |
* function checks the destination IP address of the IP packet to see |
* what Ethernet MAC address that should be used as a destination MAC |
* address on the Ethernet. |
* |
* If the destination IP address is in the local network (determined |
* by logical ANDing of netmask and our IP address), the function |
* checks the ARP cache to see if an entry for the destination IP |
* address is found. If so, an Ethernet header is prepended and the |
* function returns. If no ARP cache entry is found for the |
* destination IP address, the packet in the uip_buf[] is replaced by |
* an ARP request packet for the IP address. The IP packet is dropped |
* and it is assumed that they higher level protocols (e.g., TCP) |
* eventually will retransmit the dropped packet. |
* |
* If the destination IP address is not on the local network, the IP |
* address of the default router is used instead. |
* |
* When the function returns, a packet is present in the uip_buf[] |
* buffer, and the length of the packet is in the global variable |
* uip_len. |
*/ |
/*-----------------------------------------------------------------------------------*/ |
void |
uip_arp_out(void) |
{ |
struct arp_entry *tabptr; |
/* Find the destination IP address in the ARP table and construct |
the Ethernet header. If the destination IP addres isn't on the |
local network, we use the default router's IP address instead. |
If not ARP table entry is found, we overwrite the original IP |
packet with an ARP request for the IP address. */ |
/* Check if the destination address is on the local network. */ |
if((IPBUF->destipaddr[0] & uip_arp_netmask[0]) != |
(uip_hostaddr[0] & uip_arp_netmask[0]) || |
(IPBUF->destipaddr[1] & uip_arp_netmask[1]) != |
(uip_hostaddr[1] & uip_arp_netmask[1])) { |
/* Destination address was not on the local network, so we need to |
use the default router's IP address instead of the destination |
address when determining the MAC address. */ |
ipaddr[0] = uip_arp_draddr[0]; |
ipaddr[1] = uip_arp_draddr[1]; |
} else { |
/* Else, we use the destination IP address. */ |
ipaddr[0] = IPBUF->destipaddr[0]; |
ipaddr[1] = IPBUF->destipaddr[1]; |
} |
for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { |
tabptr = &arp_table[i]; |
if(ipaddr[0] == tabptr->ipaddr[0] && |
ipaddr[1] == tabptr->ipaddr[1]) |
break; |
} |
if(i == UIP_ARPTAB_SIZE) { |
/* The destination address was not in our ARP table, so we |
overwrite the IP packet with an ARP request. */ |
memset(BUF->ethhdr.dest.addr, 0xff, 6); |
memset(BUF->dhwaddr.addr, 0x00, 6); |
memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); |
memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); |
BUF->dipaddr[0] = ipaddr[0]; |
BUF->dipaddr[1] = ipaddr[1]; |
BUF->sipaddr[0] = uip_hostaddr[0]; |
BUF->sipaddr[1] = uip_hostaddr[1]; |
BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */ |
BUF->hwtype = HTONS(ARP_HWTYPE_ETH); |
BUF->protocol = HTONS(UIP_ETHTYPE_IP); |
BUF->hwlen = 6; |
BUF->protolen = 4; |
BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); |
uip_appdata = &uip_buf[40 + UIP_LLH_LEN]; |
uip_len = sizeof(struct arp_hdr); |
return; |
} |
/* Build an ethernet header. */ |
memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6); |
memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6); |
IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP); |
uip_len += sizeof(struct uip_eth_hdr); |
} |
/*-----------------------------------------------------------------------------------*/ |
/** @} */ |
/** @} */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip_arp.d |
---|
0,0 → 1,16 |
Utilities/uip/uip_arp.o: Utilities/uip/uip_arp.c Utilities/uip/uip_arp.h \ |
Utilities/uip/uip.h Utilities/uip/uipopt.h Utilities/uip/httpd.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/string.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ |
/usr/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/string.h |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uip_arp.h |
---|
0,0 → 1,206 |
/** |
* \addtogroup uip |
* @{ |
*/ |
/** |
* \addtogroup uiparp |
* @{ |
*/ |
/** |
* \file |
* Macros and definitions for the ARP module. |
* \author Adam Dunkels <adam@dunkels.com> |
*/ |
/* |
* Copyright (c) 2001-2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: uip_arp.h,v 1.3.2.2 2003/10/06 15:10:22 adam Exp $ |
* |
*/ |
#ifndef __UIP_ARP_H__ |
#define __UIP_ARP_H__ |
#include "uip.h" |
/** |
* Representation of a 48-bit Ethernet address. |
*/ |
struct uip_eth_addr { |
u8_t addr[6]; |
} /*_RB_ __attribute__ ((packed, aligned (1))) */; |
extern struct uip_eth_addr uip_ethaddr; |
/** |
* The Ethernet header. |
*/ |
typedef struct uip_eth_hdr { |
struct uip_eth_addr dest; |
struct uip_eth_addr src; |
u16_t type; |
}uip_eth_hdr /*_RB_ __attribute__ ((packed)) */; |
#define UIP_ETHTYPE_ARP 0x0806 |
#define UIP_ETHTYPE_IP 0x0800 |
#define UIP_ETHTYPE_IP6 0x86dd |
/* The uip_arp_init() function must be called before any of the other |
ARP functions. */ |
void uip_arp_init(void); |
/* The uip_arp_ipin() function should be called whenever an IP packet |
arrives from the Ethernet. This function refreshes the ARP table or |
inserts a new mapping if none exists. The function assumes that an |
IP packet with an Ethernet header is present in the uip_buf buffer |
and that the length of the packet is in the uip_len variable. */ |
void uip_arp_ipin(void); |
/* The uip_arp_arpin() should be called when an ARP packet is received |
by the Ethernet driver. This function also assumes that the |
Ethernet frame is present in the uip_buf buffer. When the |
uip_arp_arpin() function returns, the contents of the uip_buf |
buffer should be sent out on the Ethernet if the uip_len variable |
is > 0. */ |
void uip_arp_arpin(void); |
/* The uip_arp_out() function should be called when an IP packet |
should be sent out on the Ethernet. This function creates an |
Ethernet header before the IP header in the uip_buf buffer. The |
Ethernet header will have the correct Ethernet MAC destination |
address filled in if an ARP table entry for the destination IP |
address (or the IP address of the default router) is present. If no |
such table entry is found, the IP packet is overwritten with an ARP |
request and we rely on TCP to retransmit the packet that was |
overwritten. In any case, the uip_len variable holds the length of |
the Ethernet frame that should be transmitted. */ |
void uip_arp_out(void); |
/* The uip_arp_timer() function should be called every ten seconds. It |
is responsible for flushing old entries in the ARP table. */ |
void uip_arp_timer(void); |
/** @} */ |
/** |
* \addtogroup uipconffunc |
* @{ |
*/ |
/** |
* Set the default router's IP address. |
* |
* \param addr A pointer to a 4-byte array containing the IP address |
* of the default router. |
* |
* \hideinitializer |
*/ |
#define uip_setdraddr(addr) do { uip_arp_draddr[0] = addr[0]; \ |
uip_arp_draddr[1] = addr[1]; } while(0) |
/** |
* Set the netmask. |
* |
* \param addr A pointer to a 4-byte array containing the IP address |
* of the netmask. |
* |
* \hideinitializer |
*/ |
#define uip_setnetmask(addr) do { uip_arp_netmask[0] = addr[0]; \ |
uip_arp_netmask[1] = addr[1]; } while(0) |
/** |
* Get the default router's IP address. |
* |
* \param addr A pointer to a 4-byte array that will be filled in with |
* the IP address of the default router. |
* |
* \hideinitializer |
*/ |
#define uip_getdraddr(addr) do { addr[0] = uip_arp_draddr[0]; \ |
addr[1] = uip_arp_draddr[1]; } while(0) |
/** |
* Get the netmask. |
* |
* \param addr A pointer to a 4-byte array that will be filled in with |
* the value of the netmask. |
* |
* \hideinitializer |
*/ |
#define uip_getnetmask(addr) do { addr[0] = uip_arp_netmask[0]; \ |
addr[1] = uip_arp_netmask[1]; } while(0) |
/** |
* Specifiy the Ethernet MAC address. |
* |
* The ARP code needs to know the MAC address of the Ethernet card in |
* order to be able to respond to ARP queries and to generate working |
* Ethernet headers. |
* |
* \note This macro only specifies the Ethernet MAC address to the ARP |
* code. It cannot be used to change the MAC address of the Ethernet |
* card. |
* |
* \param eaddr A pointer to a struct uip_eth_addr containing the |
* Ethernet MAC address of the Ethernet card. |
* |
* \hideinitializer |
*/ |
#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ |
uip_ethaddr.addr[1] = eaddr.addr[1];\ |
uip_ethaddr.addr[2] = eaddr.addr[2];\ |
uip_ethaddr.addr[3] = eaddr.addr[3];\ |
uip_ethaddr.addr[4] = eaddr.addr[4];\ |
uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) |
/** @} */ |
/** |
* \internal Internal variables that are set using the macros |
* uip_setdraddr and uip_setnetmask. |
*/ |
#if UIP_FIXEDADDR > 0 |
extern const u16_t uip_arp_draddr[2], uip_arp_netmask[2]; |
#else |
extern u16_t uip_arp_draddr[2], uip_arp_netmask[2]; |
#endif |
#endif /* __UIP_ARP_H__ */ |
/Modules/CommSerial/ETH01A/SW/STM32F107_ETH_uIP/Utilities/uip/uipopt.h |
---|
0,0 → 1,560 |
/** |
* \defgroup uipopt Configuration options for uIP |
* @{ |
* |
* uIP is configured using the per-project configuration file |
* "uipopt.h". This file contains all compile-time options for uIP and |
* should be tweaked to match each specific project. The uIP |
* distribution contains a documented example "uipopt.h" that can be |
* copied and modified for each project. |
*/ |
/** |
* \file |
* Configuration options for uIP. |
* \author Adam Dunkels <adam@dunkels.com> |
* |
* This file is used for tweaking various configuration options for |
* uIP. You should make a copy of this file into one of your project's |
* directories instead of editing this example "uipopt.h" file that |
* comes with the uIP distribution. |
*/ |
/* |
* Copyright (c) 2001-2003, Adam Dunkels. |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* 3. The name of the author may not be used to endorse or promote |
* products derived from this software without specific prior |
* written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* |
* This file is part of the uIP TCP/IP stack. |
* |
* $Id: uipopt.h,v 1.16.2.5 2003/10/07 13:22:51 adam Exp $ |
* |
*/ |
#ifndef __UIPOPT_H__ |
#define __UIPOPT_H__ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipopttypedef uIP type definitions |
* @{ |
*/ |
/** |
* The 8-bit unsigned data type. |
* |
* This may have to be tweaked for your particular compiler. "unsigned |
* char" works for most compilers. |
*/ |
typedef unsigned char u8_t; |
/** |
* The 16-bit unsigned data type. |
* |
* This may have to be tweaked for your particular compiler. "unsigned |
* short" works for most compilers. |
*/ |
typedef unsigned short u16_t; |
/** |
* The statistics data type. |
* |
* This datatype determines how high the statistics counters are able |
* to count. |
*/ |
typedef unsigned short uip_stats_t; |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipoptstaticconf Static configuration options |
* @{ |
* |
* These configuration options can be used for setting the IP address |
* settings statically, but only if UIP_FIXEDADDR is set to 1. The |
* configuration options for a specific node includes IP address, |
* netmask and default router as well as the Ethernet address. The |
* netmask, default router and Ethernet address are appliciable only |
* if uIP should be run over Ethernet. |
* |
* All of these should be changed to suit your project. |
*/ |
/** |
* Determines if uIP should use a fixed IP address or not. |
* |
* If uIP should use a fixed IP address, the settings are set in the |
* uipopt.h file. If not, the macros uip_sethostaddr(), |
* uip_setdraddr() and uip_setnetmask() should be used instead. |
* |
* \hideinitializer |
*/ |
#define UIP_FIXEDADDR 1 |
/** |
* Ping IP address asignment. |
* |
* uIP uses a "ping" packets for setting its own IP address if this |
* option is set. If so, uIP will start with an empty IP address and |
* the destination IP address of the first incoming "ping" (ICMP echo) |
* packet will be used for setting the hosts IP address. |
* |
* \note This works only if UIP_FIXEDADDR is 0. |
* |
* \hideinitializer |
*/ |
#define UIP_PINGADDRCONF 0 |
#define UIP_IPADDR0 192U /**< The first octet of the IP address of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_IPADDR1 168U /**< The second octet of the IP address of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_IPADDR2 0U /**< The third octet of the IP address of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_IPADDR3 8U /**< The fourth octet of the IP address of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_NETMASK0 255 /**< The first octet of the netmask of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_NETMASK1 255 /**< The second octet of the netmask of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_NETMASK2 255 /**< The third octet of the netmask of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_NETMASK3 0 /**< The fourth octet of the netmask of |
this uIP node, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_DRIPADDR0 192 /**< The first octet of the IP address of |
the default router, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_DRIPADDR1 168 /**< The second octet of the IP address of |
the default router, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_DRIPADDR2 0 /**< The third octet of the IP address of |
the default router, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
#define UIP_DRIPADDR3 1 /**< The fourth octet of the IP address of |
the default router, if UIP_FIXEDADDR is |
1. \hideinitializer */ |
/** |
* Specifies if the uIP ARP module should be compiled with a fixed |
* Ethernet MAC address or not. |
* |
* If this configuration option is 0, the macro uip_setethaddr() can |
* be used to specify the Ethernet address at run-time. |
* |
* \hideinitializer |
*/ |
#define UIP_FIXEDETHADDR 1 |
#define UIP_ETHADDR0 0x00 /**< The first octet of the Ethernet |
address if UIP_FIXEDETHADDR is |
1. \hideinitializer */ |
#define UIP_ETHADDR1 0x02 /**< The second octet of the Ethernet |
address if UIP_FIXEDETHADDR is |
1. \hideinitializer */ |
#define UIP_ETHADDR2 0x04 /**< The third octet of the Ethernet |
address if UIP_FIXEDETHADDR is |
1. \hideinitializer */ |
#define UIP_ETHADDR3 0x08 /**< The fourth octet of the Ethernet |
address if UIP_FIXEDETHADDR is |
1. \hideinitializer */ |
#define UIP_ETHADDR4 0x0A /**< The fifth octet of the Ethernet |
address if UIP_FIXEDETHADDR is |
1. \hideinitializer */ |
#define UIP_ETHADDR5 0x0D /**< The sixth octet of the Ethernet |
address if UIP_FIXEDETHADDR is |
1. \hideinitializer */ |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipoptip IP configuration options |
* @{ |
* |
*/ |
/** |
* The IP TTL (time to live) of IP packets sent by uIP. |
* |
* This should normally not be changed. |
*/ |
#define UIP_TTL 255 |
/** |
* Turn on support for IP packet reassembly. |
* |
* uIP supports reassembly of fragmented IP packets. This features |
* requires an additonal amount of RAM to hold the reassembly buffer |
* and the reassembly code size is approximately 700 bytes. The |
* reassembly buffer is of the same size as the uip_buf buffer |
* (configured by UIP_BUFSIZE). |
* |
* \note IP packet reassembly is not heavily tested. |
* |
* \hideinitializer |
*/ |
#define UIP_REASSEMBLY 1 |
/** |
* The maximum time an IP fragment should wait in the reassembly |
* buffer before it is dropped. |
* |
*/ |
#define UIP_REASS_MAXAGE 40 |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipoptudp UDP configuration options |
* @{ |
* |
* \note The UDP support in uIP is still not entirely complete; there |
* is no support for sending or receiving broadcast or multicast |
* packets, but it works well enough to support a number of vital |
* applications such as DNS queries, though |
*/ |
/** |
* Toggles wether UDP support should be compiled in or not. |
* |
* \hideinitializer |
*/ |
#define UIP_UDP 1 |
/** |
* Toggles if UDP checksums should be used or not. |
* |
* \note Support for UDP checksums is currently not included in uIP, |
* so this option has no function. |
* |
* \hideinitializer |
*/ |
#define UIP_UDP_CHECKSUMS 0 |
/** |
* The maximum amount of concurrent UDP connections. |
* |
* \hideinitializer |
*/ |
#define UIP_UDP_CONNS 2 |
/** |
* The name of the function that should be called when UDP datagrams arrive. |
* |
* \hideinitializer |
*/ |
#define UIP_UDP_APPCALL udp_appcall |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipopttcp TCP configuration options |
* @{ |
*/ |
/** |
* Determines if support for opening connections from uIP should be |
* compiled in. |
* |
* If the applications that are running on top of uIP for this project |
* do not need to open outgoing TCP connections, this configration |
* option can be turned off to reduce the code size of uIP. |
* |
* \hideinitializer |
*/ |
#define UIP_ACTIVE_OPEN 1 |
/** |
* The maximum number of simultaneously open TCP connections. |
* |
* Since the TCP connections are statically allocated, turning this |
* configuration knob down results in less RAM used. Each TCP |
* connection requires approximatly 30 bytes of memory. |
* |
* \hideinitializer |
*/ |
#define UIP_CONNS 25 |
/** |
* The maximum number of simultaneously listening TCP ports. |
* |
* Each listening TCP port requires 2 bytes of memory. |
* |
* \hideinitializer |
*/ |
#define UIP_LISTENPORTS 10 |
/** |
* The size of the advertised receiver's window. |
* |
* Should be set low (i.e., to the size of the uip_buf buffer) is the |
* application is slow to process incoming data, or high (32768 bytes) |
* if the application processes data quickly. |
* |
* \hideinitializer |
*/ |
#define UIP_RECEIVE_WINDOW 32768 |
/** |
* Determines if support for TCP urgent data notification should be |
* compiled in. |
* |
* Urgent data (out-of-band data) is a rarely used TCP feature that |
* very seldom would be required. |
* |
* \hideinitializer |
*/ |
#define UIP_URGDATA 1 |
/** |
* The initial retransmission timeout counted in timer pulses. |
* |
* This should not be changed. |
*/ |
#define UIP_RTO 3 |
/** |
* The maximum number of times a segment should be retransmitted |
* before the connection should be aborted. |
* |
* This should not be changed. |
*/ |
#define UIP_MAXRTX 8 |
/** |
* The maximum number of times a SYN segment should be retransmitted |
* before a connection request should be deemed to have been |
* unsuccessful. |
* |
* This should not need to be changed. |
*/ |
#define UIP_MAXSYNRTX 3 |
/** |
* The TCP maximum segment size. |
* |
* This is should not be to set to more than UIP_BUFSIZE - UIP_LLH_LEN - 40. |
*/ |
#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - 40) |
/** |
* How long a connection should stay in the TIME_WAIT state. |
* |
* This configiration option has no real implication, and it should be |
* left untouched. |
*/ |
#define UIP_TIME_WAIT_TIMEOUT 120 |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipoptarp ARP configuration options |
* @{ |
*/ |
/** |
* The size of the ARP table. |
* |
* This option should be set to a larger value if this uIP node will |
* have many connections from the local network. |
* |
* \hideinitializer |
*/ |
#define UIP_ARPTAB_SIZE 8 |
/** |
* The maxium age of ARP table entries measured in 10ths of seconds. |
* |
* An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD |
* default). |
*/ |
#define UIP_ARP_MAXAGE 120 |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipoptgeneral General configuration options |
* @{ |
*/ |
/** |
* The size of the uIP packet buffer. |
* |
* The uIP packet buffer should not be smaller than 60 bytes, and does |
* not need to be larger than 1500 bytes. Lower size results in lower |
* TCP throughput, larger size results in higher TCP throughput. |
* |
* \hideinitializer |
*/ |
#define UIP_BUFSIZE 1500 |
/** |
* Determines if statistics support should be compiled in. |
* |
* The statistics is useful for debugging and to show the user. |
* |
* \hideinitializer |
*/ |
#define UIP_STATISTICS 1 |
/** |
* Determines if logging of certain events should be compiled in. |
* |
* This is useful mostly for debugging. The function uip_log() |
* must be implemented to suit the architecture of the project, if |
* logging is turned on. |
* |
* \hideinitializer |
*/ |
#define UIP_LOGGING 0 |
/** |
* Print out a uIP log message. |
* |
* This function must be implemented by the module that uses uIP, and |
* is called by uIP whenever a log message is generated. |
*/ |
void uip_log(char *msg); |
/** |
* The link level header length. |
* |
* This is the offset into the uip_buf where the IP header can be |
* found. For Ethernet, this should be set to 14. For SLIP, this |
* should be set to 0. |
* |
* \hideinitializer |
*/ |
#define UIP_LLH_LEN 14 |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipoptcpu CPU architecture configuration |
* @{ |
* |
* The CPU architecture configuration is where the endianess of the |
* CPU on which uIP is to be run is specified. Most CPUs today are |
* little endian, and the most notable exception are the Motorolas |
* which are big endian. The BYTE_ORDER macro should be changed to |
* reflect the CPU architecture on which uIP is to be run. |
*/ |
#ifndef LITTLE_ENDIAN |
#define LITTLE_ENDIAN 3412 |
#endif /* LITTLE_ENDIAN */ |
#ifndef BIG_ENDIAN |
#define BIG_ENDIAN 1234 |
#endif /* BIGE_ENDIAN */ |
/** |
* The byte order of the CPU architecture on which uIP is to be run. |
* |
* This option can be either BIG_ENDIAN (Motorola byte order) or |
* LITTLE_ENDIAN (Intel byte order). |
* |
* \hideinitializer |
*/ |
#ifndef BYTE_ORDER |
#define BYTE_ORDER LITTLE_ENDIAN |
#endif /* BYTE_ORDER */ |
/** @} */ |
/*------------------------------------------------------------------------------*/ |
/** |
* \defgroup uipoptapp Appication specific configurations |
* @{ |
* |
* An uIP application is implemented using a single application |
* function that is called by uIP whenever a TCP/IP event occurs. The |
* name of this function must be registered with uIP at compile time |
* using the UIP_APPCALL definition. |
* |
* uIP applications can store the application state within the |
* uip_conn structure by specifying the size of the application |
* structure with the UIP_APPSTATE_SIZE macro. |
* |
* The file containing the definitions must be included in the |
* uipopt.h file. |
* |
* The following example illustrates how this can look. |
\code |
void httpd_appcall(void); |
#define UIP_APPCALL httpd_appcall |
struct httpd_state { |
u8_t state; |
u16_t count; |
char *dataptr; |
char *script; |
}; |
#define UIP_APPSTATE_SIZE (sizeof(struct httpd_state)) |
\endcode |
*/ |
/** |
* \var #define UIP_APPCALL |
* |
* The name of the application function that uIP should call in |
* response to TCP/IP events. |
* |
*/ |
/** |
* \var #define UIP_APPSTATE_SIZE |
* |
* The size of the application state that is to be stored in the |
* uip_conn structure. |
*/ |
/** @} */ |
/* Include the header file for the application program that should be |
used. If you don't use the example web server, you should change |
this. */ |
#include "httpd.h" |
#endif /* __UIPOPT_H__ */ |