Add FreeRTOS-Plus directory.

This commit is contained in:
Richard Barry 2012-08-11 21:34:11 +00:00
parent 7bd5f21ad5
commit f508a5f653
6798 changed files with 134949 additions and 19 deletions

View file

@ -0,0 +1,155 @@
/*
FreeRTOS V7.1.1 - Copyright (C) 2012 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
***************************************************************************
* *
* Having a problem? Start by reading the FAQ "My application does *
* not run, what could be wrong? *
* *
* http://www.FreeRTOS.org/FAQHelp.html *
* *
***************************************************************************
http://www.FreeRTOS.org - Documentation, training, latest information,
license and contact details.
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
including FreeRTOS+Trace - an indispensable productivity tool.
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
the code with commercial support, indemnification, and middleware, under
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
provide a safety engineered and independently SIL3 certified version under
the SafeRTOS brand: http://www.SafeRTOS.com.
*/
/*
Implements a simplistic WEB server. Every time a connection is made and
data is received a dynamic page that shows the current TCP/IP statistics
is generated and returned. The connection is then closed.
*/
/*------------------------------------------------------------------------------*/
/* PROTOTYPES */
/*------------------------------------------------------------------------------*/
/* Standard includes. */
#include <stdio.h>
#include <string.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* Demo includes. */
#include "BasicWEB.h"
/* lwIP includes. */
#include "lwip/api.h"
#include "lwip/tcpip.h"
#include "lwip/memp.h"
#include "lwip/stats.h"
#include "netif/loopif.h"
#include "lcd.h"
#include "httpd.h"
#define lwipTCP_STACK_SIZE 600
/*------------------------------------------------------------------------------*/
/* GLOBALS */
/*------------------------------------------------------------------------------*/
static struct netif EMAC_if;
/*------------------------------------------------------------------------------*/
/* FUNCTIONS */
/*------------------------------------------------------------------------------*/
void vlwIPInit( void )
{
/* Initialize lwIP and its interface layer. */
sys_init();
mem_init();
memp_init();
pbuf_init();
netif_init();
ip_init();
sys_set_state(( signed char * ) "lwIP", lwipTCP_STACK_SIZE);
tcpip_init( NULL, NULL );
sys_set_default_state();
}
/*------------------------------------------------------------*/
void vBasicWEBServer( void *pvParameters )
{
struct ip_addr xIpAddr, xNetMast, xGateway;
extern err_t ethernetif_init( struct netif *netif );
/* Parameters are not used - suppress compiler error. */
( void ) pvParameters;
/* Create and configure the EMAC interface. */
IP4_ADDR( &xIpAddr, emacIPADDR0, emacIPADDR1, emacIPADDR2, emacIPADDR3 );
IP4_ADDR( &xNetMast, emacNET_MASK0, emacNET_MASK1, emacNET_MASK2, emacNET_MASK3 );
IP4_ADDR( &xGateway, emacGATEWAY_ADDR0, emacGATEWAY_ADDR1, emacGATEWAY_ADDR2, emacGATEWAY_ADDR3 );
netif_add( &EMAC_if, &xIpAddr, &xNetMast, &xGateway, NULL, ethernetif_init, tcpip_input );
/* make it the default interface */
netif_set_default( &EMAC_if );
/* bring it up */
netif_set_up(&EMAC_if);
/* Initialize HTTP */
httpd_init();
/* Nothing else to do. No point hanging around. */
vTaskDelete( NULL );
}

View file

@ -0,0 +1,61 @@
/*
* Copyright (c) 2001-2003 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. 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 lwIP TCP/IP stack.
*
* Author: Adam Dunkels &lt;adam@sics.se>
*
*/
#include "lwip/def.h"
#include "fs.h"
#include "fsdata.h"
#include "fsdata.c"
// Standard lib include
#include <string.h>
/*-----------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------*/
int
fs_open(char *name, struct fs_file *file)
{
struct httpd_fsdata_file_noconst *f;
for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
f != NULL;
f = (struct httpd_fsdata_file_noconst *)f->next) {
if (!strcmp(name, (char *)f->name)) {
file->data = (char *)f->data;
file->len = f->len;
return 1;
}
}
return 0;
}
/*-----------------------------------------------------------------------------------*/

View file

@ -0,0 +1,8 @@
<html>
<body bgcolor="white">
<center>
<h1>404 - file not found</h1>
<h3>Go <a href="/">here</a> instead.</h3>
</center>
</body>
</html>

View file

@ -0,0 +1,50 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org STR9 lwIP WEB server demo</title>
</head>
<BODY onLoad="window.setTimeout(&quot;location.href='index.html'&quot;,2000)" bgcolor="#CCCCff">
<img src="logo.gif" align="right"><p><br><p><br><p><br>
<font face="arial">
FreeRTOS.org lwIP WEB server example running on an <a href="http://mcu.st.com/mcu/inchtml.php?fdir=pages&fnam=str9">STR912</a> from STMicroelectronics. Page will refresh every 2 seconds (or there abouts).<p>
<br>
FreeRTOS.org<SMALL><SUP>TM</SUP></SMALL> is a portable, open source, <i>mini</i> Real Time Kernel - a free to download and royalty free RTOS
that <a href="http://www.freertos.org/a00114.html#gpl">can be used in commercial applications</a>.
<p>
Ports exist for many different processor architectures and development tools. Each official port includes a pre-configured
example application demonstrating the kernel features, expediting learning, and permitting 'out of the box' development.<p>
<a href="http://sourceforge.net/forum/forum.php?forum_id=382005" target="_blank">Free support</a> is provided by an active user community.
<a href="http://www.highintegritysystems.com/openrtos.html" target="_blank">Commercial support</a> along with a
<a href="http://www.freertos.org/a00115.html">full development service</a> is also provided.<p>
<a href="http://www.safertos.com/" target="_blank">SafeRTOS</a><small><sup>TM</sup></small> is a version that has been certified for use
in safety critical applications. It is a functionally similar product for which complete
<a href="http://www.iec.ch/zone/fsafety/fsafety_entry.htm" target="_blank">IEC 61508</a> compliant development/safety lifecyle documentation is available
(conformance certified by TÜV SÜD, including compiler verification evidence).
While FreeRTOS.org does not contain the same safety features as SafeRTOS there is still commonality - allowing FreeRTOS.org to benefit directly from the
very rigorous SafeRTOS testing and validation activities.
<p>
Here are some reasons why FreeRTOS.org is a good choice for your next application - FreeRTOS.org...
<ul type="disc">
<li>Provides one solution for many different architectures and development tools.</li>
<li>Is known to be reliable. Confidence is assured by the activities undertaken by the SafeRTOS sister project.</li>
<li>Is undergoing continuous active development.</li>
<li>Has a minimal ROM, RAM and processing overhead.</li>
<li>Is truly free for use in commercial applications (see license conditions for details).</li>
<li>Comes with a porting, platform development, or application development service should it be required.</li>
<li>Is well established with a large and ever growing user base.</li>
<li>Contains a pre-configured example for each port. No need to figure out how to setup a project - just download and compile!</li>
<li>Has an excellent and active free support forum</a>.</li>
<li>Has the assurance that commercial support is available should it be required.</li>
<li>Provides ample documentation.</li>
<li>Is very scalable, simple and easy to use.</li>
</ul>
</font>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

@ -0,0 +1,953 @@
static const unsigned 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 unsigned char data_index_html[] = {
/* /index.html */
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
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, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x53, 0x54, 0x52, 0x39,
0x20, 0x6c, 0x77, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, 0x20,
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, 0x6d,
0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xd,
0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e,
0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20,
0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69,
0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69,
0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f,
0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71,
0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29,
0x22, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d,
0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e,
0xd, 0xa, 0x9, 0x9, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73,
0x72, 0x63, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67,
0x69, 0x66, 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d,
0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0x3c, 0x70,
0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x3c, 0x62,
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd,
0xa, 0x9, 0x9, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66,
0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c,
0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x46, 0x72, 0x65, 0x65,
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x6c,
0x77, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, 0x20, 0x73, 0x65,
0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
0x20, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x3c, 0x61, 0x20,
0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
0x3a, 0x2f, 0x2f, 0x6d, 0x63, 0x75, 0x2e, 0x73, 0x74, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x63, 0x75, 0x2f, 0x69, 0x6e,
0x63, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x70, 0x68, 0x70, 0x3f,
0x66, 0x64, 0x69, 0x72, 0x3d, 0x70, 0x61, 0x67, 0x65, 0x73,
0x26, 0x66, 0x6e, 0x61, 0x6d, 0x3d, 0x73, 0x74, 0x72, 0x39,
0x22, 0x3e, 0x53, 0x54, 0x52, 0x39, 0x31, 0x32, 0x3c, 0x2f,
0x61, 0x3e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x54,
0x4d, 0x69, 0x63, 0x72, 0x6f, 0x65, 0x6c, 0x65, 0x63, 0x74,
0x72, 0x6f, 0x6e, 0x69, 0x63, 0x73, 0x2e, 0x20, 0x20, 0x50,
0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72,
0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65,
0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e,
0x64, 0x73, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65,
0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x73, 0x29,
0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x9, 0x9, 0xd, 0xa,
0x9, 0x9, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x62, 0x72, 0x3e,
0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x46, 0x72, 0x65, 0x65,
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x3c, 0x53,
0x4d, 0x41, 0x4c, 0x4c, 0x3e, 0x3c, 0x53, 0x55, 0x50, 0x3e,
0x54, 0x4d, 0x3c, 0x2f, 0x53, 0x55, 0x50, 0x3e, 0x3c, 0x2f,
0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x3e, 0x20, 0x69, 0x73, 0x20,
0x61, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65,
0x2c, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x2c, 0x20, 0x3c, 0x69, 0x3e, 0x6d, 0x69,
0x6e, 0x69, 0x3c, 0x2f, 0x69, 0x3e, 0x20, 0x52, 0x65, 0x61,
0x6c, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x4b, 0x65, 0x72,
0x6e, 0x65, 0x6c, 0x20, 0x2d, 0x20, 0x61, 0x20, 0x66, 0x72,
0x65, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x77, 0x6e,
0x6c, 0x6f, 0x61, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72,
0x6f, 0x79, 0x61, 0x6c, 0x74, 0x79, 0x20, 0x66, 0x72, 0x65,
0x65, 0x20, 0x52, 0x54, 0x4f, 0x53, 0x20, 0xd, 0xa, 0x9,
0x9, 0x9, 0x9, 0x74, 0x68, 0x61, 0x74, 0x20, 0x3c, 0x61,
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74,
0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72,
0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67,
0x2f, 0x61, 0x30, 0x30, 0x31, 0x31, 0x34, 0x2e, 0x68, 0x74,
0x6d, 0x6c, 0x23, 0x67, 0x70, 0x6c, 0x22, 0x3e, 0x63, 0x61,
0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20,
0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63,
0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e,
0x2e, 0x20, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x70, 0x3e, 0xd,
0xa, 0x9, 0x9, 0x9, 0x9, 0x50, 0x6f, 0x72, 0x74, 0x73,
0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72,
0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66,
0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x63,
0x65, 0x73, 0x73, 0x6f, 0x72, 0x20, 0x61, 0x72, 0x63, 0x68,
0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20,
0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f,
0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6c,
0x73, 0x2e, 0x20, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x6f,
0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x70, 0x6f,
0x72, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x63, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0xd, 0xa,
0x9, 0x9, 0x9, 0x9, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73,
0x74, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68,
0x65, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x66,
0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x65,
0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20,
0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x2c, 0x20,
0x61, 0x6e, 0x64, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x20, 0x27, 0x6f, 0x75, 0x74, 0x20,
0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x78,
0x27, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d,
0x65, 0x6e, 0x74, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd,
0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72,
0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x66, 0x6f, 0x72,
0x67, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x66, 0x6f, 0x72,
0x75, 0x6d, 0x2f, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70,
0x68, 0x70, 0x3f, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x69,
0x64, 0x3d, 0x33, 0x38, 0x32, 0x30, 0x30, 0x35, 0x22, 0x20,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62,
0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x3c, 0x2f,
0x61, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6e,
0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x75, 0x73,
0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69,
0x74, 0x79, 0x2e, 0x20, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9,
0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
0x2e, 0x68, 0x69, 0x67, 0x68, 0x69, 0x6e, 0x74, 0x65, 0x67,
0x72, 0x69, 0x74, 0x79, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e,
0x72, 0x74, 0x6f, 0x73, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22,
0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f,
0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x43, 0x6f, 0x6d,
0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x73, 0x75,
0x70, 0x70, 0x6f, 0x72, 0x74, 0x3c, 0x2f, 0x61, 0x3e, 0x20,
0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68,
0x20, 0x61, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c,
0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66,
0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x61, 0x30, 0x30, 0x31, 0x31, 0x35, 0x2e, 0x68,
0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x66, 0x75, 0x6c, 0x6c, 0x20,
0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e,
0x74, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3c,
0x2f, 0x61, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x73,
0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64,
0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x9, 0x9,
0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
0x77, 0x2e, 0x73, 0x61, 0x66, 0x65, 0x72, 0x74, 0x6f, 0x73,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x22, 0x20, 0x74, 0x61, 0x72,
0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e,
0x6b, 0x22, 0x3e, 0x53, 0x61, 0x66, 0x65, 0x52, 0x54, 0x4f,
0x53, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x73, 0x6d, 0x61, 0x6c,
0x6c, 0x3e, 0x3c, 0x73, 0x75, 0x70, 0x3e, 0x54, 0x4d, 0x3c,
0x2f, 0x73, 0x75, 0x70, 0x3e, 0x3c, 0x2f, 0x73, 0x6d, 0x61,
0x6c, 0x6c, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61,
0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e,
0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64,
0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x73, 0x65, 0xd, 0xa,
0x9, 0x9, 0x9, 0x9, 0x69, 0x6e, 0x20, 0x73, 0x61, 0x66,
0x65, 0x74, 0x79, 0x20, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63,
0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x49, 0x74, 0x20,
0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x73, 0x69,
0x6d, 0x69, 0x6c, 0x61, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x64,
0x75, 0x63, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x68,
0x69, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
0x74, 0x65, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c,
0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69,
0x65, 0x63, 0x2e, 0x63, 0x68, 0x2f, 0x7a, 0x6f, 0x6e, 0x65,
0x2f, 0x66, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x2f, 0x66,
0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x74,
0x72, 0x79, 0x2e, 0x68, 0x74, 0x6d, 0x22, 0x20, 0x74, 0x61,
0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61,
0x6e, 0x6b, 0x22, 0x3e, 0x49, 0x45, 0x43, 0x20, 0x36, 0x31,
0x35, 0x30, 0x38, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x63, 0x6f,
0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x65,
0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f,
0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x20, 0x6c, 0x69, 0x66,
0x65, 0x63, 0x79, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75,
0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
0x6c, 0x65, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x28, 0x63,
0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65,
0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64,
0x20, 0x62, 0x79, 0x20, 0x54, 0xdc, 0x56, 0x20, 0x53, 0xdc,
0x44, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69,
0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
0x72, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x69, 0x64, 0x65,
0x6e, 0x63, 0x65, 0x29, 0x2e, 0x20, 0xd, 0xa, 0x9, 0x9,
0x9, 0x9, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x46, 0x72,
0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67,
0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20,
0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68,
0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x61, 0x66,
0x65, 0x74, 0x79, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x53, 0x61, 0x66, 0x65,
0x52, 0x54, 0x4f, 0x53, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20,
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74,
0x79, 0x20, 0x2d, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69,
0x6e, 0x67, 0x20, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x62,
0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x20, 0x64, 0x69, 0x72,
0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d,
0x20, 0x74, 0x68, 0x65, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9,
0x9, 0x76, 0x65, 0x72, 0x79, 0x20, 0x72, 0x69, 0x67, 0x6f,
0x72, 0x6f, 0x75, 0x73, 0x20, 0x53, 0x61, 0x66, 0x65, 0x52,
0x54, 0x4f, 0x53, 0x20, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x63, 0x74,
0x69, 0x76, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0xd, 0xa,
0x9, 0x9, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x9, 0x9, 0xd,
0xa, 0x9, 0x9, 0x48, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72,
0x65, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x72, 0x65, 0x61,
0x73, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x79, 0x20, 0x46,
0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72,
0x67, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x6f,
0x64, 0x20, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x20, 0x66,
0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x6e, 0x65,
0x78, 0x74, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x46, 0x72, 0x65,
0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
0x2e, 0x2e, 0xd, 0xa, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x75,
0x6c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x64, 0x69,
0x73, 0x63, 0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9,
0x3c, 0x6c, 0x69, 0x3e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
0x65, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x73, 0x6f, 0x6c,
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20,
0x6d, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65,
0x72, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69,
0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x61,
0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,
0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73,
0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9,
0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49, 0x73, 0x20, 0x6b,
0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
0x20, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e,
0x20, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e,
0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x73, 0x73, 0x75,
0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x69, 0x65,
0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x6b,
0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20,
0x53, 0x61, 0x66, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x73,
0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x6a,
0x65, 0x63, 0x74, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd,
0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49,
0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x6f, 0x69,
0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75,
0x6f, 0x75, 0x73, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa,
0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x48, 0x61,
0x73, 0x20, 0x61, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x61,
0x6c, 0x20, 0x52, 0x4f, 0x4d, 0x2c, 0x20, 0x52, 0x41, 0x4d,
0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65,
0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x76, 0x65, 0x72,
0x68, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e,
0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e,
0x49, 0x73, 0x20, 0x74, 0x72, 0x75, 0x6c, 0x79, 0x20, 0x66,
0x72, 0x65, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x73,
0x65, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c,
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28,
0x73, 0x65, 0x65, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73,
0x65, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74,
0x61, 0x69, 0x6c, 0x73, 0x29, 0x2e, 0x3c, 0x2f, 0x6c, 0x69,
0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69,
0x3e, 0x43, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74,
0x68, 0x20, 0x61, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e,
0x67, 0x2c, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d,
0x65, 0x6e, 0x74, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x70,
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e,
0x74, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20,
0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x69, 0x74, 0x20,
0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9,
0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49, 0x73, 0x20,
0x77, 0x65, 0x6c, 0x6c, 0x20, 0x65, 0x73, 0x74, 0x61, 0x62,
0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74,
0x68, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20,
0x61, 0x6e, 0x64, 0x20, 0x65, 0x76, 0x65, 0x72, 0x20, 0x67,
0x72, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65,
0x72, 0x20, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x3c, 0x2f, 0x6c,
0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c,
0x69, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73,
0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x65, 0x78,
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20,
0x65, 0x61, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x2e,
0x20, 0x20, 0x4e, 0x6f, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x20,
0x74, 0x6f, 0x20, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x20,
0x6f, 0x75, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x6f,
0x20, 0x73, 0x65, 0x74, 0x75, 0x70, 0x20, 0x61, 0x20, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x2d, 0x20, 0x6a,
0x75, 0x73, 0x74, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f,
0x61, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6d,
0x70, 0x69, 0x6c, 0x65, 0x21, 0x3c, 0x2f, 0x6c, 0x69, 0x3e,
0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e,
0x48, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x63,
0x65, 0x6c, 0x6c, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64,
0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x72,
0x65, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
0x20, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x3c, 0x2f, 0x61, 0x3e,
0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9,
0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x48, 0x61, 0x73, 0x20,
0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x75, 0x72, 0x61,
0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20,
0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x73,
0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65,
0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x69, 0x74,
0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
0x65, 0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa,
0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x50, 0x72,
0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6d, 0x70,
0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x2f, 0x6c,
0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c,
0x69, 0x3e, 0x49, 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20,
0x73, 0x63, 0x61, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20,
0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x61, 0x6e, 0x64,
0x20, 0x65, 0x61, 0x73, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x75,
0x73, 0x65, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa,
0x9, 0x9, 0x3c, 0x2f, 0x75, 0x6c, 0x3e, 0xd, 0xa, 0x9,
0x9, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa,
0x9, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd,
0xa, 0};
static const unsigned char data_logo_gif[] = {
/* /logo.gif */
0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0,
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 00, 0x1, 0x5d, 00,
0xf7, 00, 00, 00, 00, 00, 0x4, 0x4, 0x4, 0x8,
0x8, 0x8, 0xc, 0xc, 0xc, 0x10, 0x10, 0x10, 0x14, 0x14,
0x14, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x24,
0x20, 0x20, 0x20, 0x24, 0x24, 0x24, 0x28, 0x28, 0x28, 0x2c,
0x2c, 0x2c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x34, 0x34,
0x34, 0x38, 0x38, 0x38, 0x3c, 0x3c, 0x3c, 0x40, 0x40, 0x40,
0x40, 0x40, 0x50, 0x44, 0x44, 0x44, 0x48, 0x48, 0x48, 0x4c,
0x4c, 0x4c, 0x4c, 0x4c, 0x61, 0x50, 0x50, 0x50, 0x55, 0x55,
0x55, 0x59, 0x59, 0x59, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x75,
0x61, 0x61, 0x61, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
0x69, 0x85, 0x6d, 0x6d, 0x6d, 0x71, 0x71, 0x71, 0x75, 0x75,
0x75, 0x75, 0x75, 0x95, 0x79, 0x79, 0x79, 0x7d, 0x7d, 0x7d,
00, 0xd6, 00, 00, 0xda, 00, 0x81, 0x81, 0x81, 0x4,
0xda, 0x4, 00, 0xde, 00, 0xc, 0xd6, 0x10, 0x8, 0xda,
0x8, 0x4, 0xde, 0x4, 0x81, 0x81, 0xa1, 0x85, 0x85, 0x85,
0x10, 0xd6, 0x14, 00, 0xe2, 00, 0xc, 0xda, 0xc, 0x8,
0xde, 0x8, 0x4, 0xe2, 0x4, 0x10, 0xda, 0x10, 0x8, 0xe2,
0x8, 0x14, 0xda, 0x14, 0x89, 0x89, 0x89, 0xc, 0xe2, 0xc,
0x14, 0xde, 0x14, 0x10, 0xe2, 0x10, 0xc, 0xe6, 0xc, 0x18,
0xde, 0x18, 0x8d, 0x8d, 0x8d, 0x20, 0xda, 0x24, 0x10, 0xe6,
0x10, 0x18, 0xe2, 0x18, 0x14, 0xe6, 0x14, 0x28, 0xd6, 0x34,
0x20, 0xde, 0x20, 0x8d, 0x8d, 0xb2, 0x91, 0x91, 0x91, 0x24,
0xde, 0x24, 0x20, 0xe2, 0x20, 0x28, 0xde, 0x28, 0x30, 0xda,
0x34, 0x2c, 0xde, 0x2c, 0x95, 0x95, 0x95, 0x1c, 0xea, 0x1c,
0x20, 0xea, 0x20, 0x2c, 0xe2, 0x2c, 0x28, 0xe6, 0x28, 0x34,
0xde, 0x34, 0x24, 0xea, 0x24, 0x99, 0x99, 0x99, 0x28, 0xea,
0x28, 0x34, 0xe2, 0x34, 0x2c, 0xea, 0x2c, 0x38, 0xe2, 0x38,
0x99, 0x99, 0xbe, 0x9d, 0x9d, 0x9d, 0x2c, 0xee, 0x2c, 0x40,
0xe2, 0x40, 0x44, 0xde, 0x4c, 0x30, 0xee, 0x30, 0xa1, 0xa1,
0xa1, 0x44, 0xe2, 0x44, 0x38, 0xee, 0x38, 0x50, 0xde, 0x5d,
0xa5, 0xa5, 0xa5, 0x4c, 0xe2, 0x55, 0xa1, 0xa1, 0xce, 0x50,
0xe2, 0x55, 0x4c, 0xe6, 0x4c, 0x50, 0xe6, 0x50, 0x40, 0xf2,
0x40, 0xaa, 0xaa, 0xaa, 0x59, 0xe2, 0x5d, 0x61, 0xde, 0x6d,
0x65, 0xde, 0x6d, 0xae, 0xae, 0xae, 0x5d, 0xe6, 0x5d, 0x4c,
0xf2, 0x4c, 0x65, 0xe2, 0x6d, 0x50, 0xf2, 0x50, 0xb2, 0xb2,
0xb2, 0x55, 0xf2, 0x55, 0xae, 0xae, 0xda, 0x59, 0xf2, 0x59,
0x69, 0xea, 0x69, 0xb6, 0xb6, 0xb6, 0x6d, 0xea, 0x6d, 0x71,
0xea, 0x71, 0xba, 0xba, 0xba, 0x79, 0xea, 0x79, 0x5d, 0xff,
0x5d, 0x7d, 0xea, 0x7d, 0xbe, 0xbe, 0xbe, 0x61, 0xff, 0x61,
0x79, 0xee, 0x79, 0x65, 0xff, 0x65, 0x7d, 0xee, 0x7d, 0x99,
0xd6, 0xba, 0x69, 0xff, 0x69, 0x81, 0xee, 0x81, 0xc2, 0xc2,
0xc2, 0x71, 0xfa, 0x71, 0x89, 0xea, 0x89, 0x6d, 0xff, 0x6d,
0x85, 0xee, 0x85, 0x89, 0xea, 0x91, 0x71, 0xff, 0x71, 0x89,
0xee, 0x89, 0xc6, 0xc6, 0xc6, 0x75, 0xff, 0x75, 0x8d, 0xee,
0x8d, 0x7d, 0xfa, 0x7d, 0xc2, 0xc2, 0xf2, 0x79, 0xff, 0x79,
0x91, 0xee, 0x91, 0x95, 0xea, 0xa1, 0x7d, 0xff, 0x7d, 0x95,
0xee, 0x95, 0xca, 0xca, 0xca, 0x99, 0xea, 0xa1, 0x85, 0xfa,
0x85, 0x81, 0xff, 0x81, 0xae, 0xda, 0xce, 0x99, 0xee, 0x99,
0x95, 0xf2, 0x95, 0x85, 0xff, 0x85, 0xb6, 0xd6, 0xda, 0xa1,
0xea, 0xaa, 0x99, 0xf2, 0x99, 0xce, 0xce, 0xce, 0xc2, 0xce,
0xf2, 0x89, 0xff, 0x89, 0xbe, 0xd2, 0xea, 0x8d, 0xff, 0x8d,
0xaa, 0xea, 0xb2, 0xaa, 0xea, 0xb6, 0xa1, 0xf2, 0xa1, 0xca,
0xce, 0xfa, 0x91, 0xff, 0x91, 0xd2, 0xd2, 0xd2, 0xa5, 0xf2,
0xa5, 0xaa, 0xee, 0xb2, 0xcc, 0xcc, 0xff, 0x95, 0xff, 0x95,
0xc6, 0xd6, 0xea, 0xca, 0xd2, 0xf6, 0xaa, 0xf2, 0xaa, 0x99,
0xff, 0x99, 0xca, 0xd6, 0xee, 0xd6, 0xd6, 0xd6, 0xc2, 0xde,
0xe2, 0x9d, 0xff, 0x9d, 0xd2, 0xd2, 0xff, 0xce, 0xd6, 0xf6,
0xa1, 0xff, 0xa1, 0xba, 0xee, 0xc2, 0xa5, 0xff, 0xa5, 0xda,
0xda, 0xda, 0xaa, 0xff, 0xaa, 0xb6, 0xf6, 0xb6, 0xae, 0xff,
0xae, 0xde, 0xde, 0xde, 0xb2, 0xff, 0xb2, 0xbe, 0xf6, 0xbe,
0xb6, 0xff, 0xb6, 0xca, 0xee, 0xd6, 0xc2, 0xf6, 0xc2, 0xe2,
0xe2, 0xe2, 0xba, 0xff, 0xba, 0xce, 0xee, 0xde, 0xbe, 0xff,
0xbe, 0xca, 0xf6, 0xca, 0xce, 0xf2, 0xda, 0xc2, 0xff, 0xc2,
0xce, 0xf6, 0xce, 0xd2, 0xf2, 0xda, 0xe6, 0xe6, 0xe6, 0xc6,
0xff, 0xc6, 0xca, 0xff, 0xca, 0xea, 0xea, 0xea, 0xce, 0xff,
0xce, 0xd2, 0xff, 0xd2, 0xd6, 0xff, 0xd6, 0xee, 0xee, 0xee,
0xde, 0xfa, 0xde, 0xda, 0xff, 0xda, 0xde, 0xff, 0xde, 0xe6,
0xfa, 0xe6, 0xf2, 0xf2, 0xf2, 0xe2, 0xff, 0xe2, 0xe6, 0xff,
0xe6, 0xee, 0xfa, 0xee, 0xea, 0xff, 0xea, 0xf6, 0xf6, 0xf6,
0xee, 0xff, 0xee, 0xf2, 0xff, 0xf2, 0xfa, 0xfa, 0xfa, 0xf6,
0xff, 0xf6, 0xfa, 0xff, 0xfa, 0xff, 0xff, 0xff, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
00, 0x21, 0xf9, 0x4, 0x1, 00, 00, 0xb1, 00, 0x2c,
00, 00, 00, 00, 00, 0x1, 0x5d, 00, 00, 0x8,
0xff, 00, 0x63, 0x9, 0x1c, 0x48, 0xb0, 0xa0, 0xc1, 0x83,
0x8, 0x13, 0x2a, 0x5c, 0xc8, 0xb0, 0xa1, 0xc3, 0x87, 0x10,
0x23, 0x4a, 0x9c, 0x48, 0xb1, 0xa2, 0xc5, 0x82, 0xbc, 0x42,
0x79, 0x82, 0x53, 0x43, 0x46, 0x8d, 0x8f, 0x20, 0x43, 0x8a,
0x1c, 0x49, 0xb2, 0xa4, 0xc9, 0x93, 0x28, 0x53, 0xaa, 0x5c,
0xc9, 0xb2, 0xa5, 0xcb, 0x97, 0x30, 0x63, 0xa2, 0x94, 0x21,
0x43, 0xe, 0xa1, 0x59, 0x17, 0x6f, 0x39, 0x4a, 0x83, 0x2,
0x85, 0x8a, 0x9f, 0x40, 0x83, 0xa, 0x1d, 0x4a, 0xb4, 0xa8,
0xd1, 0xa3, 0x48, 0x93, 0x2a, 0x5d, 0xca, 0xb4, 0xa9, 0xd3,
0xa7, 0x50, 0xa3, 0x32, 0x45, 0x31, 0x4, 0x51, 0x2e, 0x8b,
0x89, 0x74, 0x9c, 0xf0, 0xa9, 0x2, 0xc5, 0x89, 0xaf, 0x60,
0xc3, 0x8a, 0x1d, 0x4b, 0xb6, 0xac, 0xd9, 0xb3, 0x68, 0xd3,
0xaa, 0x5d, 0xcb, 0xb6, 0xad, 0xdb, 0xb7, 0x70, 0xe3, 0xa2,
0xe5, 0xda, 0x53, 0x12, 0x2d, 0x8a, 0xa1, 0x94, 0xb8, 0xf0,
0xe9, 0x15, 0xc5, 0xc, 0x1b, 0x80, 0x3, 0xb, 0x1e, 0x4c,
0xb8, 0xb0, 0xe1, 0xc3, 0x88, 0x13, 0x2b, 0x5e, 0xcc, 0xb8,
0xb1, 0xe3, 0xc7, 0x90, 0x23, 0x4b, 0x6, 0x8c, 0xa3, 0xb2,
0x65, 0x1c, 0x33, 0x7a, 0xfe, 0x44, 0x21, 0xa4, 0x53, 0xac,
0x32, 0xa0, 0x43, 0x97, 0x99, 0xf4, 0xb9, 0x4e, 0xc1, 0xd1,
0xb1, 0xd6, 0xd0, 0xe0, 0xaa, 0x2, 0x87, 0x95, 0x3b, 0x83,
0x2, 0xc9, 0x9e, 0x4d, 0xbb, 0xb6, 0xed, 0xdb, 0xb8, 0x73,
0xeb, 0xde, 0xcd, 0xbb, 0xb7, 0xef, 0xdf, 0xc0, 0x83, 0xb,
0x1f, 0x4e, 0xdc, 0x10, 0xa6, 0x51, 0x9f, 0x92, 0x7f, 0x1a,
0xc5, 0x87, 0x49, 0xd7, 0xae, 0x28, 0x36, 0xc5, 0x9a, 0xe0,
0xc0, 0x1, 0x80, 0xea, 0xe, 0x48, 0x94, 0x1, 0x80, 0x80,
0xe0, 0xb, 00, 0x20, 0x62, 0xb1, 0xff, 0x58, 0xf1, 0xdc,
0x4a, 0x24, 0x63, 0xde, 0xcc, 0xa9, 0x5f, 0xcf, 0xbe, 0xbd,
0xfb, 0xf7, 0xf0, 0xe3, 0xcb, 0x9f, 0x4f, 0xbf, 0xbe, 0xfd,
0xfb, 0xf8, 0xf3, 0xeb, 0xdf, 0xcf, 0xdf, 0x1c, 0x3a, 0x75,
00, 0x6, 0xa8, 0x8e, 0x39, 0xab, 0x60, 0x1, 0x1d, 0xa,
0x49, 0x10, 0x84, 0x40, 0x19, 0x3, 0x6d, 0x87, 0x80, 0x69,
0x2, 0x4d, 0x30, 0x41, 0x78, 0x31, 0xb8, 0xd0, 0xd5, 0xc,
0x83, 0x98, 0x23, 0xe0, 0x86, 0x1c, 0x76, 0xe8, 0xe1, 0x87,
0x20, 0x86, 0x28, 0xe2, 0x88, 0x24, 0x96, 0x68, 0xe2, 0x89,
0x28, 0xa6, 0xa8, 0x22, 0x8a, 0xe8, 0x44, 0x82, 0xc3, 0x9,
0x3f, 0xad, 0xa0, 0x20, 0x83, 0x2, 0x95, 0x81, 0xc0, 0x5,
0x1c, 0xc, 0x84, 00, 0x7, 0x14, 0xee, 0x85, 0x42, 0x11,
0xaf, 0xac, 0x28, 0xe4, 0x90, 0x44, 0x16, 0x69, 0xe4, 0x91,
0x48, 0x22, 0x29, 0xc, 0x14, 0x9a, 0xb9, 0x30, 0x63, 0x83,
0x8, 0x18, 0xd1, 0x5d, 0x2c, 0x2f, 0x5c, 00, 0x42, 0x8f,
0x3d, 0x29, 0x51, 0x4b, 0x92, 0x5c, 0x76, 0xe9, 0xe5, 0x97,
0x60, 0x86, 0x69, 0xc, 0x16, 0x4d, 0x3e, 0x59, 0x63, 0x77,
0xf, 0x4e, 0x97, 0xc5, 0x95, 0xb1, 0x54, 0xd8, 0x13, 0x12,
0x5b, 0x86, 0x29, 0xe7, 0x9c, 0x74, 0xd6, 0x49, 0xe7, 0x98,
0x65, 0xea, 0x48, 0xe3, 0x67, 0xdd, 0xe1, 0x18, 0x4b, 0x77,
0x6c, 0xba, 0x89, 0x2, 0x9c, 0x76, 0x16, 0x6a, 0xe8, 0xa1,
0x88, 0x92, 0x88, 0xa7, 0x4f, 0x4e, 0xea, 0x9, 0x65, 0x2c,
0x59, 0x20, 0xf0, 0x42, 0x8e, 0x81, 0xfa, 0x48, 0x68, 0xa2,
0x98, 0x66, 0xaa, 0xe9, 0x9c, 0x8b, 0xaa, 0xd0, 0xa8, 0x40,
0xb, 0x3e, 0xfa, 0x67, 0x9a, 0x95, 0xbe, 0x19, 0x27, 0x8a,
0xe7, 0x7c, 0x33, 0xd, 0x31, 0xae, 0xec, 0x61, 0x8d, 0x88,
0xe9, 0xc4, 0xff, 0x2a, 0xeb, 0xac, 0xb4, 0xd6, 0x2a, 0xab,
0x3a, 0xe9, 0xa0, 0x98, 0xe, 0x3a, 0xb6, 0xf6, 0xea, 0xeb,
0xaf, 0xb7, 0x9e, 0x18, 0x2b, 0x3a, 0xe3, 0x70, 0x83, 0xcd,
0x35, 0xd8, 0x54, 0x83, 0x2c, 0x36, 0xd9, 0x84, 0xe3, 0x5f,
0xae, 0x5f, 0xee, 0x4a, 0x6c, 0x36, 0xd8, 0x54, 0x4b, 0xcd,
0xb2, 0xd8, 0x70, 0xe3, 0x2c, 0xaf, 0xd0, 0x8a, 0xd8, 0xe9,
0xa7, 0x7f, 0xee, 0x69, 0xa3, 0x40, 0x1c, 0x38, 0x20, 0x50,
0xa9, 0x83, 0x9e, 0x5a, 0xe2, 0x39, 0xc0, 0x7c, 0x51, 0xc2,
0x7, 0x1b, 0x58, 0x10, 0xc1, 0x23, 0xea, 0x90, 0xa3, 0xcd,
0xbd, 0xe7, 0x8, 0x98, 0xe, 0x37, 0xc7, 0x14, 0xe3, 0xef,
0xbf, 00, 0x7, 0x2c, 0xb0, 0xbf, 0xd0, 0x54, 0x53, 0xcd,
0xb6, 0xdd, 0x82, 0xd8, 0xcd, 0x32, 0x3, 0x37, 0xec, 0xf0,
0xc3, 0xc5, 0x2c, 0xc3, 0x4d, 0xc2, 0x20, 0xee, 0xda, 0x4d,
0x33, 0xc5, 0x4, 0xa3, 0xb, 0x2a, 0x97, 0x50, 0x42, 0x89,
0x22, 0x1e, 0x53, 0x62, 0x8a, 0x2d, 0xbf, 0x44, 0x8c, 0x4d,
0x39, 0xff, 0x19, 0xb9, 0xeb, 0x38, 0xd5, 0x64, 0xfc, 0x8b,
0x2c, 0x9c, 0x84, 0xdc, 0x48, 0xc8, 0x97, 0xb4, 0xa2, 0x4b,
0xc9, 0xc5, 0x50, 0x3, 0x8e, 0x39, 0x14, 0x73, 0xf8, 0x2d,
0x45, 0x82, 0x5e, 0x5a, 0x22, 0x39, 0x73, 0x6c, 0x90, 00,
00, 0x48, 0x3, 0x60, 0xc0, 0x21, 0xe4, 0xe0, 0x11, 0xc2,
0x7, 0x22, 0x90, 0x22, 0x20, 0x3a, 0xc3, 0x8, 0xd2, 0x7,
0x20, 0x58, 0x67, 0xad, 0xf5, 0xd6, 0x5c, 0x3, 0x2, 0xf2,
0x25, 0xb2, 0xfc, 0x12, 0xc, 0x35, 0xe5, 0xf4, 0xbc, 0xe1,
0x32, 0x90, 0x74, 0xad, 0xf6, 0xda, 0x6c, 0x3, 0xd2, 0xc8,
0x31, 0x66, 0x6f, 0x88, 0x4e, 0x38, 0xcd, 0xfc, 0x82, 0x4a,
0x23, 0x5a, 0xb, 0xa2, 0xf7, 0xde, 0x82, 0x68, 0xff, 0xad,
0x8, 0x27, 0xb6, 0x4, 0x83, 0x8d, 0x86, 0x42, 0xa6, 0x63,
0xe, 0x35, 0xc1, 0xd8, 0x92, 0x76, 0xd6, 0x7c, 0x37, 0xbe,
0x35, 0x24, 0xb2, 0x4, 0x93, 0x4d, 0xdc, 00, 0xfe, 0x3c,
0x51, 0xd0, 0xea, 0x8a, 0x78, 0x8e, 0x1a, 0xd, 0x24, 0x9d,
0xf4, 0x1, 0x4c, 0x1f, 0x11, 00, 0xd2, 0x3f, 0x90, 0x13,
0x20, 0x3a, 0xc5, 0x14, 0x2, 0x48, 0xe3, 0xac, 0xb7, 0xde,
0x7a, 0xd6, 0x94, 0xc8, 0xd2, 0xcc, 0x38, 0x20, 0x2e, 0x43,
0x89, 0xeb, 0xb8, 0xe7, 0xee, 0x7a, 0x23, 0xcb, 0x50, 0x8e,
0x6b, 0x38, 0xc5, 0xc8, 0x82, 0xf7, 0xea, 0xba, 0xb3, 0xee,
0x35, 0x27, 0xbf, 0xc, 0xae, 0xe2, 0x38, 0xcd, 0xe8, 0x72,
0x49, 0xdf, 0xc5, 0xbb, 0xee, 0x35, 0x34, 0xbe, 0x5b, 0x2e,
0x11, 0xe6, 0x26, 0xba, 0x2, 0x81, 0xe7, 0x9f, 0x1f, 0xa2,
0xce, 0x1e, 0xb, 0x20, 0xad, 0x1, 0x31, 0xa7, 0xa7, 0x1e,
0xfd, 0xf9, 0x7a, 0x63, 0xd, 0x49, 0x2b, 0xd8, 0x7c, 0x68,
0x3b, 0xfa, 0xf0, 0xf3, 0xd, 0x49, 0xef, 0x1f, 0xa2, 0x3,
0x8d, 0xf0, 0xc4, 0xc7, 0xdf, 0xf8, 0xdf, 0xbf, 0x74, 0x23,
0x2c, 0x36, 0x8a, 0xc3, 0x9a, 0xfe, 0x1a, 0x7, 0x89, 0xf6,
0x81, 0xc8, 0x7a, 0x11, 0xc1, 0x1e, 0x89, 0xbe, 0xf1, 0x3,
0x1, 0x20, 0x4d, 00, 0xa, 0x50, 0x80, 0x3, 0x41, 0xa7,
0xe, 0x62, 0x6c, 0x60, 0x74, 0xa, 0xc8, 0x44, 0xf9, 0xa,
0x31, 0xc0, 0xf3, 0x5d, 0x82, 0x1a, 0x66, 0x7b, 0x5f, 0x7,
0xcf, 0x37, 0xbf, 0xb8, 0x99, 0xe3, 0x18, 0x90, 0x18, 0xe1,
0xeb, 0x14, 0x81, 0x8a, 0x6b, 0x94, 0x28, 0x1d, 0xd0, 0xe0,
0x84, 0xa, 0x9, 0x98, 0x8d, 0x10, 0x21, 0x10, 0x22, 0xa,
0x1c, 0x11, 0x30, 0x3a, 0x7, 0x80, 0x2, 0x74, 0xe0, 0xf,
0x6e, 0x38, 0xda, 0xd2, 0xff, 0xd4, 0x61, 0xd, 0x11, 0x38,
0x70, 00, 0xde, 0x3, 0x10, 0xea, 0x38, 0x38, 0x43, 0xdc,
0xb9, 0x8d, 0x1a, 0x1d, 0x12, 0x61, 0x13, 0x71, 0x57, 0xc2,
0xe, 0x8d, 0xe3, 0x17, 0x8d, 0x98, 0x62, 0xeb, 0x3e, 0x48,
0x22, 0x6a, 0x50, 0x22, 0x7f, 0x4d, 0xbc, 0x44, 0x38, 0x6c,
0x48, 0x26, 0x46, 0x1, 0xcd, 0x52, 0x99, 0x3, 0x91, 0x2b,
0x8, 00, 0x80, 00, 0x6c, 0x80, 0x7c, 0x99, 0x8, 0xdf,
0x10, 0xc9, 0x91, 0x82, 0x23, 0x26, 0x51, 0x1d, 0x4b, 0xd4,
0xa2, 0xf4, 0x1a, 0x1, 0xe, 0xe, 0x49, 0x51, 0x8f, 0x4,
0xa4, 0xdf, 0x86, 0xc6, 0xd1, 0xb, 0xd5, 0x1, 0x92, 0x6f,
0xd3, 0x13, 0x51, 0x36, 0xbe, 0x8, 0xc8, 0x4b, 0xd0, 0xee,
0x80, 0x65, 0xf4, 0xd4, 0x19, 0x4d, 0x55, 0x22, 0x52, 0xb0,
0x31, 00, 0x25, 0xc8, 0xd7, 0x23, 0x14, 0xa0, 0x34, 0xef,
0x15, 0xd1, 0x8e, 0x1b, 0x3c, 0x64, 0xeb, 0x64, 0x41, 0xb1,
0x3f, 0x8a, 0x52, 0x10, 0x55, 0x14, 0x90, 0x39, 0x7e, 0xc1,
0x44, 0xf4, 0x9, 0xd0, 0x95, 0x8a, 0x70, 0xe1, 0x87, 0xc2,
0x71, 0x9, 0x30, 0x9e, 0xef, 0x95, 0xad, 0xe3, 0xc4, 0x23,
0x3f, 0x74, 0xc3, 0x87, 0xe4, 0x50, 0x44, 0x96, 0x6c, 0xa3,
0x9, 0x34, 0xc9, 0xc9, 0x21, 0xe2, 0x22, 0x3, 0xa3, 0x13,
0xc0, 0x1d, 0xf3, 0x58, 0xbc, 0x42, 0x38, 0xd3, 0x99, 0xfa,
0x83, 0xc4, 0x2e, 0x1, 0xf4, 0xbe, 0xb5, 0xb9, 0x72, 0x6d,
0x6f, 0x2b, 0xa5, 0x21, 0xcf, 0xe7, 0xcc, 0x46, 0x40, 0x13,
0x7e, 0x97, 0xe8, 0xa3, 0x87, 0x52, 0x67, 0x4b, 0xdc, 0x3d,
0xb3, 0x10, 0xde, 0xfc, 0x66, 0xdf, 0x88, 0x7, 0x8a, 0x69,
0x76, 0xa8, 0x97, 0xe, 0xf9, 0x65, 0x88, 0x82, 0x19, 00,
0xf, 0x4c, 0x43, 0x1d, 0xa4, 0x8, 0xdf, 0x1, 0xe8, 0xf5,
0xff, 0x5, 0x3, 0x20, 0xed, 00, 0x1a, 0x54, 0xa2, 0xf9,
0x72, 0xc7, 0x9, 0x9b, 0xe9, 0x42, 0x63, 0xba, 0x68, 0x5,
0x27, 0x14, 0xb1, 0x4d, 0xdd, 0x15, 0x2, 0x6e, 0x2, 0x6a,
0xc6, 0x25, 0xce, 0x49, 0x51, 0x75, 0xe6, 0xae, 0xa2, 0x14,
0xa5, 0x84, 0x20, 0x1, 0xc4, 0xd, 0xbc, 0x45, 0xaf, 0x10,
0x9c, 0x38, 0x68, 0x30, 0x96, 0x31, 0x8c, 0x60, 0xf4, 0xc2,
0x14, 0x59, 0x3c, 0x5f, 0x2f, 0x52, 0xb6, 0x21, 0x73, 0x50,
0xa2, 0xf, 0xba, 0x3, 0x44, 0x21, 0x2e, 0x11, 0xb8, 0x60,
0xd8, 0x94, 0xa4, 0x36, 0xfd, 0x45, 0x2f, 0x64, 0x41, 0x9,
0xe, 0x2, 0x42, 0x97, 0x64, 0xcc, 0xd3, 0xf5, 0xd0, 0x58,
0x22, 0x57, 0x14, 00, 0x69, 0xa, 0xc8, 0x1, 0x30, 0xfe,
0x50, 0x4c, 0x35, 0xec, 0x1, 0x3, 0xa3, 0x3, 0xc0, 0xf8,
0x42, 0x69, 0xce, 0x61, 0x94, 0x43, 0x3d, 0x3, 0x32, 0x7,
0xcb, 0x8e, 0xd1, 0x8b, 0xdb, 0x45, 0xf, 0x15, 0x84, 0x3,
0x50, 0x37, 0x8e, 0x31, 0x8c, 0xb2, 0x9a, 0xf5, 0xac, 0xbd,
0x50, 0x84, 0xee, 0x1a, 0xf1, 0x8b, 0xb3, 0xba, 0x75, 0x18,
0x12, 0xeb, 0x56, 0x3a, 0x6c, 0xe1, 0xc1, 0x5e, 0x5c, 0x83,
0xa5, 0x1, 0x2, 0xc7, 0x32, 0x4c, 0xd1, 0x50, 0xdc, 0x35,
0x42, 0x96, 0x1b, 0xaa, 0x86, 0x47, 0x73, 0xd7, 0x8, 0x5d,
0x54, 0xa3, 0x1c, 0x20, 0x2a, 0xc7, 0x35, 0x8a, 0xa1, 0xb,
0x4a, 0xb4, 0x2, 0xb1, 0x90, 0x14, 0x6a, 0x2, 0x89, 0x4a,
0x22, 0x65, 0x58, 0xe0, 0x73, 0x1a, 0xd0, 00, 0x1b, 0x7,
0x40, 0x1, 0x8, 0x44, 0x55, 00, 0x54, 0x30, 0x9d, 0x40,
0x5b, 0xd9, 0xba, 0x42, 0x2c, 0xe3, 0x43, 0xe6, 0xa8, 0x6,
0x5f, 0x8b, 0x7, 0x8a, 0xb0, 0x8e, 0x8, 0x1c, 0x69, 0xcb,
0x1d, 0x28, 0xf0, 0x2a, 0x22, 0x6c, 0xff, 0xc, 0x96, 0xa0,
0xd0, 0x80, 0xac, 0x87, 0xb8, 0x21, 0xb, 0xd2, 0xe2, 0xce,
0x16, 0xae, 0x5, 0x10, 0x5d, 0x1d, 0x1a, 0xc, 0x77, 0x82,
0x8, 0x1d, 0xd7, 0x98, 0x5c, 0x50, 0xcd, 0x78, 0x39, 0xca,
0x8e, 0x88, 0x1c, 0x6a, 0x38, 0x2a, 0xf7, 0xa6, 0xb, 00,
0x6, 0xdc, 0x11, 0x8f, 0x3, 0x75, 0x9d, 0x69, 0x7d, 0x97,
0xd, 0x19, 0xea, 0xae, 0xb5, 0x26, 0xea, 0x46, 0x6c, 0x71,
0x7, 0x5e, 0x12, 0xcd, 0x35, 0x7a, 0x9c, 0xa8, 0xc6, 0x6b,
0x65, 0x11, 0xbd, 0x4b, 0x18, 0x50, 0x40, 0xa6, 0x28, 0x67,
0xe3, 0x38, 0xe1, 0x3f, 0x2e, 0xc1, 0xb3, 0x21, 0xf2, 0xc,
0x91, 0x5, 0xa3, 0x4a, 0x5d, 0xa4, 0x11, 0x20, 0x7, 0xda,
0x98, 0x5a, 0x76, 0x4b, 0xbb, 0x51, 0xf, 0xe9, 0xa2, 0x78,
0x94, 0x8, 0x6e, 0x88, 0xc4, 0x2b, 0xdf, 0xbd, 0x95, 0x77,
0x44, 0xd9, 0x78, 0x9e, 0xee, 0x52, 0x29, 0x22, 0x70, 0x70,
0xa2, 0xc1, 0x7b, 0x53, 0xc4, 0x4a, 0x37, 0x14, 0xdf, 0xef,
0xea, 0x16, 0x49, 0xf7, 0x65, 0x48, 0x7e, 0x43, 0xf4, 0x87,
0x8, 0xf0, 0x77, 0xba, 0x3, 0x8, 0x81, 0x32, 0xe4, 0x36,
0x60, 0xd6, 0x6d, 0x37, 0x44, 0xd4, 0x50, 0x4, 0x86, 0x5,
0x71, 0x9, 0x5, 0x2b, 0x6c, 0xbc, 0xae, 0x7b, 0xb0, 0x88,
0x82, 0xe1, 0xdb, 0xd6, 0x99, 0x62, 0x8c, 0x25, 0x82, 0x86,
0x8c, 0xbf, 0xb, 0xe4, 00, 0x5d, 0x58, 0x77, 0xa6, 0xb0,
0x31, 0x91, 0x42, 0xbc, 0x90, 0x11, 0x83, 0x88, 0x1c, 0x7f,
0xd8, 0xc0, 0x1, 0xa8, 0xbb, 00, 0x13, 0xac, 0x98, 0xc5,
0x3d, 0xe6, 0xdb, 0x8b, 0x41, 0xd4, 0xd1, 0x19, 0x27, 0x39,
0xbc, 0x38, 0x6e, 0x9d, 0x8e, 0x2b, 0xd6, 0x8a, 0x66, 0x42,
0xe3, 0x44, 0xe8, 0x38, 0x32, 0x61, 0xb, 0xac, 0x66, 0xdc,
0x85, 0xb3, 0xff, 0x4b, 0x4c, 0x56, 0x88, 0x93, 0x43, 0x64,
0xd, 0x35, 0x60, 0xe0, 0x1, 0xf, 0x80, 0x40, 0x9e, 0x3b,
0xc0, 0xb4, 0xe, 0x31, 0x53, 0xbb, 0x5, 0xee, 0x50, 0x31,
0xd4, 0x6a, 0xce, 0xd, 0x97, 0x88, 0xc1, 0xb2, 0x55, 0x32,
0x87, 0xba, 0x1, 0xa, 0x4, 0x7f, 0x98, 0x44, 0xc7, 0x18,
0x72, 0xee, 0xc, 0xd, 0xa0, 0x5a, 0x16, 0x4f, 0x16, 0x45,
0x3e, 0x52, 0x9c, 0x13, 0x22, 0x28, 0x2d, 0x9, 0xe9, 0x1c,
0xa0, 0x6, 0xf5, 0x71, 0x5b, 0xdc, 0xb8, 0x2d, 0x7b, 0x28,
0x1d, 0xec, 0xcd, 0x9d, 0x22, 0xde, 0x4b, 0x22, 0x44, 0x93,
0x57, 0xd1, 0x1b, 0x42, 0x61, 0xf1, 0x7e, 0x41, 0xdb, 0x11,
0x95, 0x83, 0x91, 0xb9, 0x3, 0xae, 0x80, 0x40, 0x31, 0xe3,
0xf4, 0xb5, 0xf0, 0xd1, 0x43, 0xda, 0x34, 0x42, 0x82, 0x16,
0x24, 0x39, 0xfd, 0x99, 0xc0, 0x21, 0x5a, 0x64, 0xee, 00,
0x51, 0xe3, 0x13, 0xb9, 0x3a, 0xc7, 0xb0, 0x16, 0xd0, 0x81,
0x1d, 0x5a, 0x5f, 0x61, 0xf1, 0x1a, 0xc9, 0x99, 0xe6, 0x71,
0xaf, 0xfb, 0x56, 0x8, 0x59, 0x40, 0x83, 0x1b, 0xd1, 0x56,
0x54, 0x24, 0xc1, 0x85, 0x43, 0x1f, 0xf9, 0x60, 0x14, 0xbe,
0x3, 0xd1, 0x39, 0xc8, 0x41, 0x8e, 0x69, 0x28, 0x23, 0x5f,
0xf5, 0x23, 0xb5, 0x96, 0x4f, 0xeb, 0x21, 0x74, 0x60, 0xa3,
0xd1, 0xba, 0xb, 0x46, 0xba, 0x17, 0x1d, 0x66, 0xd6, 0x8d,
0xf9, 0x43, 0xba, 0xc8, 0xb2, 0x96, 0x8d, 0x4b, 0x22, 0x1e,
0x7f, 0xb7, 0x86, 0x1, 0x7a, 0x76, 0x4c, 0xbd, 0xd6, 0x8b,
0x66, 0x5c, 0x23, 0x1c, 0xb5, 0x2e, 0x91, 0xb0, 0xf, 0x52,
0x21, 0x15, 0x9c, 0xa0, 0x5, 0x8e, 0xd8, 0x37, 0x87, 0xb4,
0xf1, 0x88, 0x26, 0xc0, 0x20, 0x5, 0x21, 0x18, 0x1, 0x30,
0xd4, 0xb1, 0x6e, 0x76, 0x63, 0xf9, 0xa2, 0xc1, 0xff, 0x8,
0xc7, 0x38, 0x56, 0xbe, 0xf2, 0x6e, 0x60, 0x3, 0x71, 0x12,
0xce, 0xdd, 0x97, 0x9d, 0xdd, 0xef, 0xc6, 0xfd, 0xbb, 0x43,
0xe6, 0x8, 0xb8, 0xee, 0x28, 0x1, 0x6c, 0x12, 0x5d, 0xe3,
0xb6, 0xad, 0x6b, 0x44, 0x33, 0xe4, 0xda, 0x61, 0xf8, 0x61,
0x4d, 0x11, 0xb2, 0x28, 0xc6, 0xb7, 0xc3, 0xed, 0xb3, 0x71,
0x9f, 0xd1, 0xe2, 0x18, 0xd7, 0x78, 0x80, 0xce, 0x91, 0x9,
0x13, 0x50, 0x60, 00, 0x49, 0x2b, 00, 0xd3, 0x32, 0x41,
0x85, 0x26, 0x50, 0x81, 0x7c, 0x54, 0xc5, 0x1d, 0xe0, 0x74,
0x61, 0x8b, 0xb2, 0xdb, 0x42, 0x16, 0x97, 0x90, 0x31, 0x86,
0x57, 0xc7, 0x9, 0x56, 0x1f, 0xba, 0xe6, 0x7c, 0xbb, 0x39,
0x87, 0xca, 0xd1, 0x5b, 0xdd, 0xb5, 0x82, 0xe9, 0x1d, 0x52,
0x78, 0xeb, 0x86, 0x81, 0x57, 0x68, 00, 0xfd, 0x9a, 0x85,
0x40, 0xc5, 0x2f, 0xae, 0xd1, 0x73, 0x5e, 0x3a, 0xbd, 0xb9,
0x50, 0xcf, 0xf8, 0xba, 0xe, 0x61, 0x1, 0x7, 0x7a, 0x6e,
0x69, 0xe4, 0xa0, 0x42, 0x2, 0x8, 0x90, 0x80, 0x31, 0xc0,
0x1b, 0xbb, 0x2, 0x47, 0x24, 0xd7, 0x16, 0xe, 0xd2, 0x33,
0xa7, 0x48, 0xef, 0x36, 0x67, 0x3a, 0x38, 0x50, 0x51, 0x3c,
0x4a, 0x9f, 0x68, 0x1c, 0xb8, 0xc6, 0x5d, 0x30, 0xf0, 0x8a,
0xe, 0x5b, 0xe0, 0x52, 0x7f, 0x58, 0xbb, 0x84, 0x61, 0xf1,
0x3e, 0x71, 0x83, 0x54, 0xfc, 0xe2, 0x8a, 0x27, 0x11, 0x31,
0x90, 0x39, 0x5d, 0xa, 0xba, 0x61, 0xca, 00, 0x8, 0xc1,
0x3d, 0x47, 0x7b, 0x48, 0x99, 0x52, 0xc2, 0xae, 0x11, 0x1f,
0x11, 0xe8, 0xe3, 0xce, 0xf4, 0x6b, 0x78, 0x37, 0x77, 0x81,
0x2e, 0x11, 0xea, 0x7b, 0xbd, 0xfa, 0xd, 0x75, 0xf7, 0xf5,
0x1d, 0xbc, 0x44, 0x2f, 0xc4, 0xb9, 0x5c, 0x49, 0x22, 0x1e,
0xf7, 0x52, 0x3f, 0xc7, 0xff, 0x18, 0xa4, 0xdb, 0x43, 0x3,
0x4c, 0xd0, 0x7b, 0xb8, 0x80, 0x2a, 00, 0x1e, 0xe0, 0x8a,
0xb0, 0x4f, 0x91, 0x7f, 0x84, 0x17, 0xd2, 0xf2, 0x1d, 0xcc,
0x74, 0x6a, 0xc4, 0x1c, 0x77, 0x9e, 0x4f, 0xd1, 0xf4, 0xf3,
0x5d, 0xeb, 0x6a, 0xc8, 0x70, 0xdb, 0xb, 0x67, 0xa, 0x8,
0x17, 0x59, 0xcc, 0x35, 0x54, 0x89, 0x27, 0x75, 0xc4, 0x40,
0x1, 0xf, 0x4, 0x1, 0x47, 0x70, 0x4, 0x53, 0x36, 0x44,
0xd6, 0x10, 0x2, 0xe, 0x44, 00, 0xf4, 0x42, 0x7c, 0x7a,
0xc4, 0x9, 0xb9, 0x45, 0x24, 0xf3, 0xa7, 0x37, 0x72, 0xb7,
0x21, 0xf6, 0x57, 0x3c, 0xf9, 0x87, 0x22, 0xfb, 0x97, 0x3b,
0xd5, 0xc7, 0x21, 0xd9, 0x60, 0xb, 0xc3, 0x33, 0x43, 0x3f,
0xc5, 0xd, 0xdd, 0x47, 0x6e, 0xbe, 0x64, 0x21, 0xe0, 0x47,
0x22, 0x46, 0xd5, 0x46, 0x14, 0xb0, 0x75, 0x72, 0xe4, 0x3d,
0x74, 0xe4, 0x40, 0xca, 0xe4, 0x7e, 0x53, 0x4, 0xa, 0xd4,
0x90, 0x7c, 0x6f, 0x37, 0x63, 0x1d, 0x28, 0x20, 0x1f, 0xa8,
0x3b, 0x50, 0xb4, 0x3c, 0xa9, 0xe7, 0x3a, 0x25, 0xc8, 0x21,
0xe6, 0xd0, 0xc, 0xa0, 0x50, 0x8, 0x57, 0x33, 0x43, 0x98,
0x46, 0x80, 0xde, 0x67, 0x80, 0x31, 0x38, 0x22, 0xf4, 0x34,
0x2, 0xc4, 0xd4, 0x49, 0xea, 0xf0, 0xd, 0x25, 00, 0x4a,
0x16, 0x8, 0x48, 0x1a, 0x5, 0x84, 0xca, 0x7, 0x77, 0xf4,
0x37, 0x22, 0xdc, 0x60, 0xa, 0xc5, 0x53, 0xc, 0x52, 0xc7,
0x21, 0x23, 0x88, 0x3b, 0xb4, 0x96, 0x58, 0xc5, 0x60, 0xa,
0x29, 0x84, 0x7d, 0xe8, 0xa3, 0x8, 0x4b, 0xd8, 0x74, 0x92,
0x55, 0x6e, 0x7, 0x48, 0x22, 0xf4, 0x34, 0x4c, 0xea, 0xb0,
0x49, 0x5c, 0x8, 0xc, 0x1a, 0x90, 0x4c, 0xcb, 0x24, 0x6f,
0xc6, 0x63, 0x87, 0xd2, 0xe3, 0x5e, 0xf2, 0x67, 0x86, 0x1c,
0xff, 0xc8, 0x74, 0xe5, 0x60, 0xb, 0x99, 0xa7, 0x37, 0x60,
0xa5, 0x22, 0xe1, 0xe0, 0x88, 0x82, 0x50, 0x8, 0x79, 0xf8,
0x21, 0xd8, 0xb0, 0x31, 0x29, 0xb4, 0x4e, 0x46, 0xf7, 0x63,
0x86, 0xb7, 0x87, 0x2f, 0xd8, 0x87, 0x58, 0x78, 0x49, 0x22,
0x60, 0x3a, 0x71, 0x4, 00, 0xfb, 0xa4, 0xe, 0x73, 0x10,
0x3e, 0x3d, 0x74, 0x88, 0x93, 0xa8, 0x37, 0x15, 0x75, 0x3e,
0x9b, 0x8, 0x66, 0x42, 0x8, 0x89, 0x92, 0xa8, 0x3b, 0x9c,
0x50, 0x78, 0xb5, 0xf5, 0x77, 0x8d, 0xf3, 0x36, 0x64, 0x28,
0x37, 0xd4, 0xf0, 0x32, 0x3d, 0xe5, 0x53, 0xe7, 0x23, 0x8c,
0x1e, 0x52, 0x7b, 0x5, 0x71, 0x7b, 0x51, 0xe7, 0x87, 0x6c,
0x4, 00, 0x11, 0x30, 0x7, 0xda, 0x70, 0x8, 0xc5, 0x84,
0x7, 0xb8, 0xd0, 0x1, 0x51, 0x25, 0x1, 0xb8, 0xc0, 0x83,
0xac, 0x63, 0xa, 0xc1, 0x50, 0x52, 0x25, 0xa5, 0x38, 0xd1,
0x3, 0x9, 0x2c, 0xa8, 0x22, 0x1b, 0x28, 0x8, 0x43, 0x78,
0x3a, 0xc3, 0x75, 0x51, 0x4, 0x37, 0x22, 0x91, 0x36, 0x63,
0x94, 00, 0x42, 0x28, 0x62, 0xe, 0xd7, 0x30, 0xc, 0xb6,
0xd0, 0x53, 00, 0x8, 0x8, 0xa6, 0x27, 0x20, 0xcc, 0x48,
0x10, 0xce, 0x98, 0x7b, 0x22, 0x42, 0xc, 0xdb, 0x83, 0x34,
0x10, 0x30, 0x2, 0x1f, 0x70, 0x54, 0x3, 0xb0, 0x1, 0x19,
0xe0, 0x78, 0x1, 00, 0x3, 0xdf, 0xe0, 0x8d, 0xf3, 0xd6,
0x52, 0xcd, 0xb0, 0x5a, 0xba, 0x13, 0x7d, 0xad, 0x86, 0x89,
0xeb, 0x18, 0x20, 0x85, 0x44, 0x6d, 0x29, 0x92, 0xe, 0xd7,
0x26, 0x73, 0xd5, 0x96, 0x22, 0xe5, 0x50, 0xd, 0xbf, 0x80,
0x89, 0x7b, 0xa3, 0xb, 0x85, 0xf7, 0x8f, 0x3, 0x11, 0x90,
0x52, 0x47, 0xe, 0x47, 0x80, 0x75, 0x49, 0x73, 0x62, 0x9e,
0x73, 00, 0x7b, 0x20, 0x60, 0x93, 0xff, 0x68, 0x5a, 0x1c,
0x92, 0xe, 0xd7, 0x80, 0x6f, 0xb2, 0xf5, 0x8e, 0x22, 0x92,
0x8e, 0x1b, 0x9, 0x20, 0xc7, 0x90, 0x52, 0xb9, 0xc3, 0x86,
0xf5, 0x98, 0x84, 0xad, 0xf3, 0x58, 0x44, 0x52, 0xe, 0xd0,
0x70, 0x7f, 0xb8, 0x83, 0xa, 0x23, 0xe9, 0x8f, 0x87, 0x67,
0x85, 0xcf, 0x28, 0x83, 0x11, 0xd0, 0x5f, 0x9e, 0x23, 00,
0x2a, 0x86, 0x93, 0x17, 0x15, 0x7d, 0xe9, 0x50, 0x94, 0xe,
0x35, 0x80, 0x34, 0x97, 0x8b, 0x3e, 0x7, 0x95, 0x62, 0xe6,
0x8b, 0x1f, 0x42, 0xd, 0xc0, 0xd8, 0x38, 0xba, 0x30, 0x8c,
0x41, 0xd6, 0x96, 0x7c, 0xd3, 0x76, 0xcb, 0x58, 0x95, 0x93,
0x65, 0x8a, 0xcf, 0xf5, 0x5, 0x47, 0xa3, 0x95, 0x1, 0x60,
0x1, 0x1, 0x25, 0x91, 0x7b, 0x63, 0x6a, 0x2, 0x12, 0xe,
0xed, 0xa8, 0x7a, 0x70, 0x99, 0x77, 0x1a, 0x89, 0x77, 0xe5,
0xa0, 0x86, 0x6b, 0x5, 0x58, 0x25, 0x52, 0x66, 0xba, 0xa3,
0x8, 0x48, 0x59, 0x24, 0xe6, 00, 0x99, 0x84, 0x35, 0x74,
0xef, 0x64, 0x97, 0x7c, 0x78, 0x85, 0xb, 0xa4, 0x5, 0x11,
0x20, 0x93, 0xdc, 0x53, 00, 0x1a, 0xf0, 0x7, 0xa2, 0x5,
0x98, 0xb4, 0x88, 0x91, 0xea, 0xd0, 0xc, 0x46, 0xe9, 0x3a,
0xd2, 0xf4, 0x79, 0x89, 0x59, 0x22, 0x85, 0x89, 0x3b, 0xb2,
0x80, 0x77, 00, 0x92, 0xd, 0x72, 0xb9, 0x37, 0xf4, 0x75,
0x24, 0xe9, 0xa0, 0x9a, 0xf2, 0x48, 0x8f, 0x7a, 0x58, 0x80,
0x77, 0xc9, 0x99, 0x25, 0x2, 0xc, 0x29, 00, 0x1, 0xb,
0x10, 0x41, 0xa, 0xd0, 00, 0x14, 0xd0, 0x4, 0xef, 0xc6,
0x21, 0xc7, 0xe6, 0x62, 0xa8, 0x19, 0xe, 0x96, 0xa9, 0x5d,
0xea, 0x85, 0x22, 0x42, 0x49, 0x9b, 0x6c, 0xd9, 0x6b, 0x8d,
0x10, 0x82, 0x21, 0x62, 0xe, 0xa4, 0x57, 0x3c, 0x77, 0x87,
0x24, 0xd9, 0xff, 0x99, 0x3b, 0x52, 0x59, 0x97, 0xa4, 0x18,
0x4f, 0x30, 0x78, 0x95, 0x22, 0x42, 0xe, 0x99, 0x90, 0x9,
0xb8, 0x40, 0xc, 0xd3, 0x60, 0xd, 0xc0, 0xf0, 0x8, 0x8f,
0x90, 0x9, 0xd6, 0x40, 0xe, 0x97, 0x77, 0x72, 0xe6, 0x84,
0x9a, 0xea, 0xc0, 0x4a, 0xdf, 0x75, 0x98, 0x1b, 0x72, 0x9d,
0x2f, 0x54, 0x74, 0x4, 0x75, 0x8e, 0xdd, 0xc9, 0x4a, 0xbd,
0x6, 0x9, 0xd4, 0xe3, 0x9c, 0xb4, 0xa9, 0x2f, 0x1d, 0x99,
0x3b, 0xad, 0xc0, 0x7d, 0x1b, 0xc2, 0x92, 0x2, 0xe1, 0x92,
0x7e, 0x38, 0x41, 0xf, 0x10, 0x5a, 0x25, 0xf2, 0x9c, 0xa5,
0xc6, 0x9f, 0xce, 0xb7, 0x6c, 0x85, 0x90, 0x69, 0x19, 0x69,
0x96, 0x25, 0x42, 0x4e, 0xc5, 0x83, 0xa, 0x6, 0xea, 0x21,
0xab, 0xd4, 0x57, 0xae, 0x53, 0x89, 0x26, 0xd8, 0xb, 0x87,
0x75, 0x22, 0xdc, 0x80, 0x92, 0xfd, 0x18, 0x20, 0x14, 0xda,
0x26, 0xe9, 0x29, 0x90, 0xf3, 0x14, 0x8d, 0x1, 0x90, 0x3,
0xf9, 0x19, 0x22, 0x1c, 0x3a, 0x6f, 0x94, 0x83, 0xe, 0xa9,
0x96, 0x3b, 0x10, 0x85, 0x8b, 0x89, 0x66, 0x22, 0x20, 0x9,
0x80, 0x3e, 0x68, 0x63, 0xe9, 0xd0, 0xd, 0x85, 0xb4, 0x6d,
0x85, 0x80, 0x99, 0x1c, 0x22, 0x64, 0x7d, 0x80, 0xa, 0xcd,
0x80, 0xd, 0x10, 0xe7, 0x3b, 0xe9, 0x90, 0xd, 0x8c, 0xc9,
0x7f, 0xe6, 0x9, 0x9c, 0x9b, 0xa9, 0x9e, 0x3b, 0x8a, 0x34,
0x1, 0x90, 0x2, 0x11, 0x49, 0x22, 0x41, 0x1a, 0x98, 0xfc,
0xa9, 0xe, 0xf, 0x2a, 0x76, 0xd, 0xaa, 0xe, 0x2, 0x6a,
0x22, 0xd4, 0x80, 0x92, 0x7d, 0xa3, 0x61, 0xd0, 0xc0, 0x2c,
0x2a, 0x97, 0xd, 0xd5, 0x70, 0xc, 0x5f, 0x7a, 0x69, 0xc9,
0x77, 0x60, 0xab, 0xe3, 0x35, 0xa8, 0x10, 0x31, 0xd0, 0x90,
0x5c, 0xe0, 0xc0, 0x72, 0xc6, 0x42, 0xd, 0xc7, 0xff, 0x80,
0x96, 0x5b, 0x74, 0xd, 0x71, 0x73, 0xa3, 0x16, 0xaa, 0x43,
0x3c, 0x14, 00, 0x19, 0x30, 0x72, 0x6a, 0x8a, 0x88, 0xa7,
0xe9, 0x3b, 0xd7, 0xe0, 0xa8, 0xf2, 0x33, 0x95, 0x41, 0xf9,
0x9a, 0x4a, 0xaa, 0x6d, 0xd1, 0xb3, 0x3a, 0x94, 00, 0x38,
0xb6, 0x70, 0x9, 0x59, 0xb4, 0x8f, 0x94, 0x90, 0xa2, 0x1b,
0x52, 0xa4, 0x7b, 0x3, 0x3b, 0x5, 0xd5, 0xb, 0xbd, 0xa0,
0xb, 0xa6, 0x30, 0x51, 00, 0x28, 0x8, 0x6f, 0x39, 0x8a,
0x62, 0x5a, 0x8a, 0xc2, 0x9, 0x22, 0xdf, 0xd0, 0x4, 0xfe,
0xa4, 0x34, 0x4d, 0x10, 0x60, 0x23, 0xb2, 0xa6, 0x9b, 0x7a,
0x5c, 0x3e, 0xa9, 0x5d, 0xbf, 0xd0, 0x86, 0x72, 0x2a, 0xaa,
0x26, 0x32, 0xe, 0xd3, 0x79, 0x4b, 0xb9, 0x9a, 0x3e, 0x8a,
0xc0, 0x9f, 0x97, 00, 0x53, 0xcb, 0xa6, 0x88, 0x4e, 0x44,
0x9, 0xd5, 0x40, 0x39, 0x92, 0x9a, 0xa3, 0x6d, 0xa8, 0xd,
0x29, 00, 0x7c, 0xd, 0x50, 0x2, 0x99, 0xa0, 0xc, 0xea,
0xba, 0xae, 0xea, 0x6a, 0xd, 0x97, 0x87, 0xac, 0x99, 0xd8,
0xa6, 0x6e, 0xca, 0x5a, 0x6a, 0xc9, 0x6f, 0x24, 0x7a, 0x22,
0xd8, 0xa0, 0x86, 0xd5, 0x1a, 0x3f, 0x5e, 0xa3, 0x6f, 0x20,
0x92, 0xad, 0xc5, 0x57, 0x8, 0x71, 0xc8, 0xab, 0x55, 0x18,
0x9c, 0x64, 0xfa, 0x64, 0xa4, 0xf0, 0x5, 0x16, 0x20, 0x93,
0x4, 00, 0x1, 0x14, 0xf0, 0xb0, 0x10, 0xfb, 0xb0, 0x23,
0x70, 0x65, 0x98, 0xf7, 0x95, 0xe9, 0x66, 0x9b, 0x33, 0x6,
0x9, 0xd5, 0x39, 0xa2, 0x49, 0xaa, 0x2b, 0xf9, 0xca, 0xa2,
0x53, 0xe4, 0x36, 0xc3, 00, 0x94, 0x95, 0xa6, 0xad, 0x7a,
0x54, 0x8, 0xb6, 0x20, 0xa1, 0x99, 0x79, 0x9e, 0xf8, 0x25,
0xae, 0x24, 0x32, 0xd, 0x1e, 0xb0, 00, 0x6, 0x40, 0x93,
0xd4, 0x5, 0x1, 0xed, 0xff, 0x17, 0x86, 0x4, 0x96, 0x6e,
0x69, 0xd6, 0x6b, 0xbb, 0xca, 0xb1, 0xaf, 0xa6, 0x22, 0x5d,
0xaa, 0xb, 0x92, 0x16, 0xb2, 0x80, 0x30, 0x3f, 0xc3, 0x68,
0xe, 0x96, 0xa6, 0x45, 0xab, 0x93, 0xb2, 0xde, 0xa2, 0x99,
0xbe, 0xda, 0x2, 0x8b, 0x20, 0x75, 0xca, 0xa0, 0x80, 0x5a,
0xc9, 0x3d, 0x36, 0x6b, 0x9a, 0xf1, 0x9a, 0x6e, 0xe9, 0x30,
0x6d, 0x32, 0x27, 0xa2, 0x37, 0x76, 0xaf, 0xfa, 0x37, 0xc,
0x8b, 0xa3, 0x82, 0x32, 0x85, 0xa, 0xd5, 00, 0x97, 0xe1,
0xa0, 0x94, 0x1d, 0x4, 0x8, 0x7d, 00, 0x9, 0xbd, 0xe0,
0xb5, 0x2b, 0xdb, 0xab, 0xe8, 0x9, 0x75, 0x51, 0x5b, 0x59,
0x54, 0x5b, 0xb5, 0x49, 0x73, 0xb5, 0xa3, 0xd5, 0x60, 0xab,
0x23, 0xaf, 0xea, 0xc0, 0xd, 0x43, 0xdb, 0x3a, 0x14, 0xb6,
0x60, 0xd0, 0xa, 0xb4, 0xd7, 0x10, 0x40, 0xdc, 0xba, 0xad,
0x33, 0x55, 0x5c, 0x24, 0x92, 0xd, 0x8a, 0x10, 0x85, 0x23,
0x84, 0x35, 0x8d, 0xc0, 0x9, 0x90, 0x2a, 0x6e, 0x2c, 0x2b,
0x62, 0xe9, 0x59, 0xb7, 0x23, 0x32, 0xb5, 0x78, 0xeb, 0x39,
0x7a, 0x8b, 0x79, 0x7c, 0x2b, 0x8, 0x47, 0x5a, 0x31, 0x6a,
0x1b, 0xab, 0x82, 0x10, 0x9e, 0xca, 0x77, 0x9b, 0x3f, 0x15,
0xa7, 0x1f, 0x52, 0xd, 0xa9, 0xa, 0xb2, 0xaf, 0xb3, 0x37,
0x8d, 0x80, 0xa, 0xc3, 00, 0xb7, 0xad, 0x8b, 0xa, 0x1f,
0x3, 0x3d, 0x89, 0x6b, 0xba, 0xdc, 0x46, 0x9, 0xa8, 0xf0,
0x83, 0x26, 0x12, 0xae, 0x74, 0x2b, 0x75, 0xd6, 0x30, 0x2,
0x11, 0x10, 0x1, 0x12, 0x90, 0xbc, 0xca, 0xbb, 0xbc, 0x12,
0x80, 0xbc, 0x21, 00, 0x76, 0x78, 0x54, 0xd, 0xb2, 0x80,
0xa, 0xad, 0x50, 0xbd, 0xd6, 0x7b, 0xbd, 0xdf, 0xa, 0x2b,
0xc1, 0x40, 0xbd, 0xd7, 0xdb, 0xbd, 0xad, 0x90, 0x72, 0x24,
0xff, 0x32, 0xe, 0xb6, 0xc0, 0xbd, 0xde, 0x5b, 0xbd, 0x35,
0x2a, 0x24, 0xe0, 0x30, 0xc, 0xb2, 0xd0, 0xa, 0xa0, 0x90,
0x4e, 0x18, 0xa5, 0x8, 0x8d, 00, 0xa, 0x36, 0xb3, 0xa0,
0x29, 0x2, 0xe, 0xc7, 0x70, 0x76, 0xad, 0xa0, 0xaa, 0xc,
0x85, 0x51, 0xcf, 0x14, 0xbf, 0xad, 0x10, 0x36, 0x64, 0x29,
0x71, 0x4e, 0x3b, 0xb7, 0x17, 0xa7, 0xb9, 0x2, 0x62, 0xd,
0x87, 0x80, 0x7, 0x73, 0x80, 0x7, 0x60, 0x77, 0xe, 0xab,
0x42, 0xc, 0x10, 0x1c, 0xc1, 0x12, 0x2c, 0xc1, 0xd3, 0x90,
0x9f, 0xe9, 0x50, 0xe, 0x18, 0x9c, 0xc1, 0x1a, 0x8c, 0xc1,
0x52, 0x67, 0xe, 0x1b, 0xfc, 0xc1, 0x18, 0xc, 0xa0, 0x3,
0x2, 0xc2, 0x1b, 0xec, 0x25, 0xe8, 0x90, 0xd, 0xc7, 0xf0,
0xb, 0x2a, 0xbc, 0xc2, 0x2b, 0x3c, 0xc, 0xdf, 0xe6, 0xac,
0x40, 0x9a, 0xd, 0xd0, 0x30, 0xc, 0x2c, 0x5c, 0xc3, 0x62,
0xf3, 0x6d, 0xf5, 0xda, 0x82, 0x4f, 0x57, 0xc0, 0x3d, 0x93,
0x9, 0x18, 0x90, 00, 0x9, 0xb0, 00, 0x5a, 0x50, 0x9a,
0x9b, 0x52, 0xc4, 0x46, 0x7c, 0xc4, 0x13, 0x3a, 0xc0, 0x2d,
0x3b, 0xbc, 0x1c, 0xf2, 0x7, 0x95, 0xfa, 0x3, 0x11, 0x99,
0x2a, 0xd6, 0x60, 0xd, 0xda, 0xf0, 0xa3, 0x48, 0x7c, 0xc5,
0x58, 0x2c, 0x27, 0xc2, 0xcb, 0xc3, 0x1c, 0x72, 0x8, 0x3c,
0x24, 00, 0x50, 0x4c, 0x44, 0x3f, 0xb0, 0x1, 0x1b, 0x50,
0x2, 0x52, 0x93, 0xc5, 0x68, 0x9c, 0xc6, 0x70, 0xa6, 0xc4,
0x98, 0xcb, 0xc4, 0x1b, 0xe2, 0xc5, 0xf, 0x74, 0x4, 0x11,
0xc9, 0xb9, 00, 0xa0, 00, 0x6e, 0xa0, 0xc6, 0x78, 0x9c,
0xc7, 0xc1, 0xc6, 0xc6, 0x4d, 0x96, 0xb9, 0x3d, 0xe3, 0xc4,
0xf, 0x4, 0x3, 0xf9, 0x32, 0xd, 0x15, 0x80, 0x34, 0xb,
0x30, 0x7, 0x7a, 0x9c, 0xc8, 0x8a, 0xff, 0x6c, 0xb9, 0x72,
0xbb, 0xc4, 0x5c, 0xfc, 0xc6, 0x5, 0x9, 00, 0x14, 0xf0,
0x8, 0xe7, 0x40, 0xc7, 0x76, 0x6c, 0xc5, 0x8b, 0x9c, 0xc9,
0x8b, 0xbc, 0xc5, 0x50, 0xdb, 0x33, 0xc7, 0x14, 0x55, 0x1,
0xd0, 00, 0x3f, 0x90, 0x3, 0x9c, 0x4, 00, 0x4, 0xe0,
0x1, 0x5a, 0xf0, 0x5, 0xaa, 0xbc, 0xca, 0xac, 0x8c, 0x7,
0x69, 0x5a, 0x2f, 0x9, 0x9b, 0xca, 0xac, 0x3c, 0xcb, 0xb4,
0x5c, 0xcb, 0xb6, 0x7c, 0xcb, 0xb8, 0x9c, 0xcb, 0xba, 0xbc,
0xcb, 0xbc, 0xdc, 0xcb, 0xbe, 0xfc, 0xcb, 0xc0, 0x5c, 0xcb,
0x6a, 00, 0xc, 0x98, 0xcc, 0xc9, 0x6, 0x1c, 0x20, 0xda,
0x30, 0x2, 0x34, 0x49, 0xb3, 0x55, 0x1b, 0x1, 0x37, 0x4b,
0x44, 0x75, 0xd4, 0xb9, 0xd2, 0x3c, 0xcd, 0xd4, 0x5c, 0xcd,
0xd6, 0x7c, 0xcd, 0xd8, 0x9c, 0xcd, 0xda, 0xac, 0x95, 0x7,
0xa0, 0x5, 0xc5, 0xcc, 0xc7, 0x72, 0xe6, 0xc7, 0x1d, 0xa2,
0x5, 0xe4, 0x87, 0xcd, 0x9f, 0x6b, 0xd, 0x26, 0xe0, 0x78,
0xdb, 0xbc, 0xce, 0xec, 0xdc, 0xce, 0xee, 0xfc, 0xce, 0xed,
0x6c, 00, 0x54, 0xf0, 0xcd, 0x97, 0xdb, 0xc7, 0x6e, 0xbc,
0x21, 0xc7, 0xa4, 0xce, 0xd7, 0x7c, 0xce, 0xe9, 0xc, 0xcf,
0xfe, 0xfc, 0xcf, 00, 0x1d, 0xd0, 0xec, 0x7c, 00, 0xf3,
0x1c, 0xb7, 0x5, 0x3b, 0xa6, 0xc7, 0x2c, 0x20, 0x7f, 0x80,
0x1, 0x6, 0x30, 00, 0xfa, 0x3c, 0xcd, 0xec, 0x17, 0x20,
0xd6, 0x50, 0x2, 0xcc, 0x2c, 0xd0, 0x16, 0x7d, 0xd1, 0x18,
0xed, 0xcf, 0x5, 0x50, 0xd0, 0xbf, 0x79, 0xd0, 0x4f, 0x9b,
0xd0, 0x2, 0x82, 0xb, 0x4d, 0x80, 0x90, 0x12, 0x50, 00,
0xa0, 0x3c, 00, 0x5, 0x90, 0xd2, 0x2a, 0xbd, 0xd2, 0x5,
0x50, 0x1, 0xdd, 0x8, 0x20, 0xd6, 0x90, 0x3, 0x7, 0x40,
00, 0x2c, 0xff, 0x5d, 0xd3, 0x36, 0x7d, 0xd3, 0x38, 0x9d,
0xd3, 0x3a, 0xbd, 0xd3, 0x3c, 0xdd, 0xd3, 0x3e, 0xfd, 0xd3,
0x40, 0x1d, 0xd4, 0x3b, 0xcd, 00, 0x5f, 0x40, 0xcf, 0x8d,
0xdc, 0xc6, 0x8f, 0xfc, 0x21, 0xed, 0xf6, 0x8, 0x3f, 00,
0x8b, 0x6, 0xf0, 0x1, 0x54, 0x10, 0xd5, 0x52, 0x3d, 0xd5,
0x54, 0x40, 0x8d, 0x1, 0x42, 0xe, 0xa4, 0xa0, 0x5, 0x54,
0xbd, 0xd5, 0x5c, 0xdd, 0xd5, 0x5e, 0xfd, 0xd5, 0x60, 0x1d,
0xd6, 0x62, 0x3d, 0xd6, 0x64, 0x5d, 0xd6, 0x66, 0x7d, 0xd6,
0x62, 0x3d, 0x6, 0xb8, 0x60, 0xd4, 0x1e, 0x4d, 0xc0, 0x9d,
0xfc, 0xb2, 0x54, 0xab, 00, 0x88, 0xac, 0xc9, 0x74, 0xad,
0xc9, 0xc6, 0x2c, 0xb5, 0x15, 0x30, 0x3a, 0xc, 0x30, 0xd7,
0x75, 0xdd, 0xd7, 0x7a, 0x7c, 0xd7, 0x24, 0x12, 0xd3, 0x1b,
0xa0, 0x1, 0x23, 0xf0, 0x97, 0x7e, 0x7d, 0xd8, 0x68, 0xc,
0xd8, 0xb, 0x34, 0xc5, 0xdf, 0x40, 0xc4, 0x88, 0xfd, 0xd8,
0x47, 0xac, 0xd8, 0x90, 0x3d, 0xd9, 0x7d, 0x2d, 0xd9, 0x94,
0x7d, 0xd9, 0x9b, 0xc, 0xce, 0x9, 0x1, 0x4, 0xe9, 0xe9,
0x7, 0x22, 0x8c, 0xd9, 0xa0, 0xbd, 0x29, 0xce, 00, 0x6,
0xcf, 0xe1, 0x82, 0xe, 0x61, 0x6, 0xab, 0xe1, 0x13, 0x67,
0x10, 0xd, 0xa1, 0xdd, 0xda, 0x6a, 0x9c, 0xe, 0xc2, 0x60,
0x20, 0x3e, 0x21, 0x23, 0x13, 0x51, 0x9, 0x3c, 00, 0x23,
0x28, 0xb0, 0x3, 0xa3, 0xf0, 0x1f, 0xd2, 0x82, 0xe, 0xbe,
0xfd, 0xdb, 0xc0, 0x1d, 0xdc, 0xc2, 0x3d, 0xdc, 0xc4, 0x5d,
0xdc, 0xc6, 0x7d, 0xdc, 0xc1, 0xed, 0xc1, 0x24, 0xbc, 0xdc,
0xcc, 0xdd, 0xdc, 0xce, 0xfd, 0xdc, 0xcc, 0x2d, 0xe, 0xd2,
0x3d, 0xdd, 0xd4, 0x5d, 0xdd, 0xd6, 0x7d, 0xdd, 0xd8, 0x9d,
0xdd, 0xda, 0xbd, 0xdd, 0xd4, 0xbd, 0xd, 0xaf, 0xff, 0x80,
0x6, 0x2d, 00, 0x23, 0x2a, 0x40, 0xdb, 0x12, 0x81, 0xc,
0x3b, 0xc0, 0x17, 0x2a, 0xc0, 0x5, 0xa3, 0x90, 0xc, 0xc2,
0x50, 0x9, 0xee, 0xfd, 0xde, 0xf0, 0x1d, 0xdf, 0xf2, 0x3d,
0xdf, 0xf4, 0x5d, 0xdf, 0xf6, 0x7d, 0xdf, 0xf3, 0xbd, 0x8,
0x7a, 0x90, 0x7, 0x7a, 0xd0, 0xdf, 0xfe, 0xfd, 0xdf, 00,
0x1e, 0xe0, 0x2, 0x3e, 0xe0, 0x4, 0x5e, 0xe0, 0x6, 0x1e,
0xe0, 0x77, 0x90, 0xe0, 0xa, 0xbe, 0xe0, 0xc, 0xde, 0xe0,
0xe, 0xfe, 0xe0, 0x10, 0x1e, 0xe1, 0x12, 0xbe, 0xe0, 0x6f,
0x80, 0x4, 0x9a, 0xd1, 0x15, 0x5b, 0x40, 0x11, 0xa5, 0xb0,
0x4, 0x7b, 0x1, 0x1d, 0x45, 0xc0, 0x5, 0x52, 0xe0, 0x3,
0x22, 0x3e, 0xe2, 0x24, 0x5e, 0xe2, 0x26, 0x7e, 0xe2, 0x28,
0x9e, 0xe2, 0x2a, 0xbe, 0xe2, 0x27, 0x6e, 0x3, 0x72, 0xf1,
0xe2, 0x30, 0x1e, 0xe3, 0x32, 0x3e, 0xe3, 0x61, 0x71, 0xe1,
0x28, 0x40, 0x3, 0x8c, 0x40, 0x11, 0xac, 0x90, 0x8, 0xb7,
0xbd, 0x19, 0x7d, 0xd1, 0x13, 0x40, 0x1e, 0xe4, 0x42, 0x3e,
0xe4, 0x44, 0x5e, 0xe4, 0x46, 0x7e, 0xe4, 0x48, 0x9e, 0xe4,
0x4a, 0xbe, 0xe4, 0x4c, 0xde, 0xe4, 0x4e, 0xfe, 0xe4, 0x50,
0x1e, 0xe5, 0x47, 0xbe, 0x19, 0x5b, 0x61, 0x7, 0xa7, 0x50,
0x11, 0xc8, 0x40, 0x7, 0x4e, 0xe0, 0x15, 0x3e, 0x2e, 0x15,
0x5e, 0xfe, 0xe5, 0x60, 0x1e, 0xe6, 0x62, 0xde, 0x15, 0x34,
0x5e, 0xe6, 0x30, 0x7e, 0x3, 0x4f, 0x10, 0x6, 0xb0, 0xb0,
0xb, 0x16, 0xc1, 0xc, 0x8c, 0x10, 0x5, 0x3d, 0x20, 0x13,
0x72, 0x3e, 0xe7, 0x74, 0x5e, 0xe7, 0x76, 0x2e, 0x12, 0x41,
0x30, 0x4, 0x7a, 0xbe, 0xe7, 0x7c, 0xde, 0xe7, 0x7e, 0xfe,
0xe7, 0x80, 0x1e, 0xe8, 0x82, 0x3e, 0xe8, 0x7f, 0x3e, 0x5,
0x57, 0x50, 0x5, 0x53, 0x4a, 0xe0, 0x5, 0x5d, 0x60, 0x9,
0xd2, 0xc0, 0xe6, 0x17, 0x11, 0xb, 0xaa, 0x40, 0x6, 0x44,
0x30, 0xe9, 0x94, 0x5e, 0xe9, 0x96, 0x7e, 0xe9, 0x98, 0x9e,
0xe9, 0x9a, 0xbe, 0xe9, 0x9c, 0xde, 0xe9, 0x9e, 0xfe, 0xe9,
0xa0, 0x1e, 0xea, 0x9b, 0x2e, 0x6, 0x6d, 0x50, 0xea, 0xa6,
0x7e, 0xea, 0xa8, 0x9e, 0xea, 0xaa, 0xbe, 0xea, 0xac, 0xde,
0xea, 0xae, 0x8e, 0xea, 0x6c, 0x10, 0x7, 0xa2, 0xe0, 0xb,
0xa9, 0xa0, 0x9, 0xcf, 0xe0, 0xe8, 0x16, 0x11, 0x10, 00,
0x3b, 0};
const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
const struct httpd_fsdata_file file_logo_gif[] = {{file_index_html, data_logo_gif, data_logo_gif + 10, sizeof(data_logo_gif) - 10}};
#define HTTPD_FS_ROOT file_logo_gif
#define HTTPD_FS_NUMFILES 3

View file

@ -0,0 +1,244 @@
/*
* Copyright (c) 2001-2003 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. 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 lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
*/
#include "lwip/debug.h"
#include "lwip/stats.h"
#include "httpd.h"
#include "lwip/tcp.h"
#include "fs.h"
#include <string.h>
#pragma pack(2)
struct http_state {
char *file;
u32_t left;
u8_t retries;
};
#pragma pack()
/*-----------------------------------------------------------------------------------*/
void conn_err(void *arg, err_t err)
{
struct http_state *hs;
hs = arg;
mem_free(hs);
}
/*-----------------------------------------------------------------------------------*/
static void
close_conn(struct tcp_pcb *pcb, struct http_state *hs)
{
tcp_arg(pcb, NULL);
tcp_sent(pcb, NULL);
tcp_recv(pcb, NULL);
mem_free(hs);
tcp_close(pcb);
}
/*-----------------------------------------------------------------------------------*/
static void
send_data(struct tcp_pcb *pcb, struct http_state *hs)
{
err_t err;
u16_t len;
/* We cannot send more data than space available in the send
buffer. */
if (tcp_sndbuf(pcb) < hs->left) {
len = tcp_sndbuf(pcb);
} else {
len = hs->left;
}
do {
err = tcp_write(pcb, hs->file, len, 0);
if (err == ERR_MEM) {
len /= 2;
}
} while (err == ERR_MEM && len > 1);
if (err == ERR_OK) {
hs->file += len;
hs->left -= len;
/* } else {
printf("send_data: error %s len %d %d\n", lwip_strerr(err), len, tcp_sndbuf(pcb));*/
}
}
/*-----------------------------------------------------------------------------------*/
err_t http_poll(void *arg, struct tcp_pcb *pcb)
{
struct http_state *hs;
hs = arg;
/* printf("Polll\n");*/
if (hs == NULL) {
/* printf("Null, close\n");*/
tcp_abort(pcb);
return ERR_ABRT;
} else {
++hs->retries;
if (hs->retries == 4) {
tcp_abort(pcb);
return ERR_ABRT;
}
send_data(pcb, hs);
}
return ERR_OK;
}
/*-----------------------------------------------------------------------------------*/
err_t http_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
{
struct http_state *hs;
hs = arg;
hs->retries = 0;
if (hs->left > 0) {
send_data(pcb, hs);
} else {
close_conn(pcb, hs);
}
return ERR_OK;
}
/*-----------------------------------------------------------------------------------*/
err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
{
int i;
char *data;
struct fs_file file;
struct http_state *hs;
hs = arg;
if (err == ERR_OK && p != NULL) {
/* Inform TCP that we have taken the data. */
tcp_recved(pcb, p->tot_len);
if (hs->file == NULL) {
data = p->payload;
if (strncmp(data, "GET ", 4) == 0) {
for(i = 0; i < 40; i++) {
if (((char *)data + 4)[i] == ' ' ||
((char *)data + 4)[i] == '\r' ||
((char *)data + 4)[i] == '\n') {
((char *)data + 4)[i] = 0;
}
}
if (*(char *)(data + 4) == '/' &&
*(char *)(data + 5) == 0) {
fs_open("/index.html", &file);
}
else {
if (!fs_open((char *)data + 4, &file)) {
fs_open("/404.html", &file);
}
}
hs->file = file.data;
hs->left = file.len;
/* printf("data %p len %ld\n", hs->file, hs->left);*/
pbuf_free(p);
send_data(pcb, hs);
/* Tell TCP that we wish be to informed of data that has been
successfully sent by a call to the http_sent() function. */
tcp_sent(pcb, http_sent);
} else {
pbuf_free(p);
close_conn(pcb, hs);
}
} else {
pbuf_free(p);
}
}
if (err == ERR_OK && p == NULL) {
close_conn(pcb, hs);
}
return ERR_OK;
}
/*-----------------------------------------------------------------------------------*/
err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err)
{
struct http_state *hs;
tcp_setprio(pcb, TCP_PRIO_MIN);
/* Allocate memory for the structure that holds the state of the
connection. */
hs = mem_malloc(sizeof(struct http_state));
if (hs == NULL) {
// printf("http_accept: Out of memory\n");
return ERR_MEM;
}
/* Initialize the structure. */
hs->file = NULL;
hs->left = 0;
hs->retries = 0;
/* Tell TCP that this is the structure we wish to be passed for our
callbacks. */
tcp_arg(pcb, hs);
/* Tell TCP that we wish to be informed of incoming data by a call
to the http_recv() function. */
tcp_recv(pcb, http_recv);
tcp_err(pcb, conn_err);
tcp_poll(pcb, http_poll, 4);
return ERR_OK;
}
/*-----------------------------------------------------------------------------------*/
void httpd_init(void)
{
struct tcp_pcb *pcb;
pcb = tcp_new();
tcp_bind(pcb, NULL, 80);
pcb = tcp_listen(pcb);
tcp_accept(pcb, http_accept);
}
/*-----------------------------------------------------------------------------------*/