rbutil: removed the wx version of rbutil.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14581 a1c6a512-1295-4272-9138-f99709370657
|
|
@ -1,78 +0,0 @@
|
|||
# __________ __ ___.
|
||||
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
# \/ \/ \/ \/ \/
|
||||
# $Id$
|
||||
#
|
||||
|
||||
# Unix-style Makefile for rbutil
|
||||
|
||||
#detect cygwin
|
||||
ifneq ($(strip $(shell gcc -v 2>&1 | grep "cygwin")),)
|
||||
__CYGWIN__ := 1
|
||||
endif
|
||||
|
||||
CXX=$(shell $(PREFIX)wx-config --version=2.8 --cxx)
|
||||
INC = `$(PREFIX)wx-config --version=2.8 --cxxflags`
|
||||
LIBS = `$(PREFIX)wx-config --version=2.8 --libs`
|
||||
CFLAGS= -Wall -Wundef -DRBUTIL -D_LARGEFILE64_SOURCE
|
||||
OBJS=rbutil.o rbutilApp.o rbutilFrm.o rbutilCtrls.o install_dialogs.o bootloaders.o installlog.o ipodpatcher/ipodpatcher.o sansapatcher/sansapatcher.o irivertools.o md5sum.o autodetection.o talkfile.o
|
||||
|
||||
ifdef __CYGWIN__
|
||||
OBJS+=ipodpatcher/ipodio-win32.o sansapatcher/sansaio-win32.o
|
||||
CFLAGS+= -mno-cygwin -mwindows
|
||||
else
|
||||
OBJS+=ipodpatcher/ipodio-posix.o sansapatcher/sansaio-posix.o
|
||||
endif
|
||||
|
||||
|
||||
EXTRAOBJS = $(wildcard icons/*.o)
|
||||
|
||||
SILENT = @
|
||||
|
||||
# Install with / as root by default
|
||||
ifndef DESTDIR
|
||||
DESTDIR=""
|
||||
endif
|
||||
|
||||
# type "make WIN=1" for a Windows build using the Debian mingw cross-compiler
|
||||
ifdef WIN
|
||||
CROSS=i586-mingw32msvc-
|
||||
WINDRES=i586-mingw32msvc-windres
|
||||
EXT=.exe
|
||||
PREFIX=/usr/i586-mingw32msvc/bin/
|
||||
OBJS+=rbutil-rc.o
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: icons rbutil$(EXT)
|
||||
|
||||
.cpp.o :
|
||||
$(SILENT) echo CXX $<
|
||||
$(SILENT) $(CXX) $(CFLAGS) $(INC) -c -o $@ $<
|
||||
|
||||
.c.o :
|
||||
$(SILENT) echo CC $<
|
||||
$(SILENT) $(CC) $(CFLAGS) $(INC) -c -o $@ $<
|
||||
|
||||
rbutil-rc.o: rbutil-rc.rc
|
||||
$(WINDRES) -O coff -F pe-i386 -o $@ $<
|
||||
|
||||
rbutil$(EXT): $(OBJS)
|
||||
$(SILENT) echo CXX $<
|
||||
$(SILENT) $(CXX) -o $@ $(OBJS) $(EXTRAOBJS) $(LIBS)
|
||||
|
||||
.PHONY: icons
|
||||
icons:
|
||||
$(SILENT) $(MAKE) -C icons
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f rbutil rbutil.exe $(OBJS) *~
|
||||
make -C icons clean
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
install -D rbutil$(EXT) $(DESTDIR)/usr/bin/rbutil$(EXT)
|
||||
|
|
@ -1,218 +0,0 @@
|
|||
# =========================================================================
|
||||
# This makefile was generated by
|
||||
# Bakefile 0.2.1 (http://bakefile.sourceforge.net)
|
||||
# Do not modify, all changes will be overwritten!
|
||||
# =========================================================================
|
||||
|
||||
|
||||
|
||||
|
||||
srcdir = /Users/dave/rockbox/rockbox-devel/rbutil
|
||||
top_srcdir = /Users/dave/src/wxMac-2.8.0/
|
||||
BK_DEPS = /Users/dave/src/wxMac-2.8.0/osx_build/bk-deps
|
||||
wx_top_builddir = /Users/dave/src/wxMac-2.8.0/osx_build
|
||||
|
||||
prefix = /usr/local
|
||||
exec_prefix = ${prefix}
|
||||
INSTALL = /usr/bin/install -c
|
||||
EXEEXT =
|
||||
WINDRES =
|
||||
REZ = /Developer/Tools/Rez
|
||||
SETFILE = /Developer/Tools/SetFile
|
||||
NM = nm
|
||||
LIBS = -lz -lpthread -liconv
|
||||
LDFLAGS_GUI =
|
||||
CXX = g++
|
||||
CXXFLAGS = -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -Wall -Wundef -Wno-ctor-dtor-privacy -O2 -fno-strict-aliasing -fno-common
|
||||
CPPFLAGS = -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -I${wx_top_builddir}/lib/wx/include/mac-ansi-release-static-2.8 -I${top_srcdir}/include -fpascal-strings -I${top_srcdir}/src/mac/carbon/morefilex -I/Developer/Headers/FlatCarbon
|
||||
RBUTIL_CFLAGS = $(CXXFLAGS) -DRBUTIL -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -I${wx_top_builddir}/lib/wx/include/mac-ansi-release-static-2.8 -I${top_srcdir}/include -fpascal-strings -I${top_srcdir}/src/mac/carbon/morefilex -I/Developer/Headers/FlatCarbon
|
||||
LDFLAGS = -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -framework QuickTime -framework IOKit -framework Carbon -framework Cocoa -framework System
|
||||
WX_LIB_FLAVOUR =
|
||||
TOOLKIT = MAC
|
||||
TOOLKIT_LOWERCASE = mac
|
||||
TOOLKIT_VERSION =
|
||||
TOOLCHAIN_FULLNAME = mac-ansi-release-static-2.8
|
||||
EXTRALIBS = -framework QuickTime -framework IOKit -framework Carbon -framework Cocoa -framework System -lz -lpthread -liconv
|
||||
EXTRALIBS_GUI = -framework WebKit
|
||||
HOST_SUFFIX =
|
||||
SAMPLES_RPATH_FLAG =
|
||||
SAMPLES_RPATH_POSTLINK =
|
||||
|
||||
### Variables: ###
|
||||
|
||||
DESTDIR =
|
||||
WX_RELEASE = 2.8
|
||||
WX_VERSION = $(WX_RELEASE).0
|
||||
LIBDIRNAME = $(wx_top_builddir)/lib
|
||||
RBUTIL_CXXFLAGS = -DRBUTIL -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
|
||||
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
|
||||
-I$(srcdir) $(__DLLFLAG_p) $(CPPFLAGS) $(CXXFLAGS)
|
||||
RBUTIL_OBJECTS = \
|
||||
$(__rbutil_os2_lib_res) \
|
||||
rbutil.o rbutilApp.o rbutilFrm.o install_dialogs.o bootloaders.o installlog.o \
|
||||
rbutilCtrls.o ipodpatcher/ipodpatcher.o ipodpatcher/ipodio-posix.o \
|
||||
sansapatcher/sansapatcher.o sansapatcher/sansaio-posix.o \
|
||||
md5sum.o irivertools.o autodetection.o talkfile.o \
|
||||
$(__rbutil___win32rc)
|
||||
|
||||
### Conditionally set variables: ###
|
||||
|
||||
#CXXC = $(CXX)
|
||||
CXXC = $(BK_DEPS) $(CXX)
|
||||
#PORTNAME = base
|
||||
PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
|
||||
WXBASEPORT = _carbon
|
||||
#WXDEBUGFLAG = d
|
||||
#WXDEBUGFLAG = d
|
||||
#WXUNICODEFLAG = u
|
||||
#WXUNIVNAME = univ
|
||||
EXTRALIBS_FOR_BASE = $(EXTRALIBS)
|
||||
#EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI)
|
||||
EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
|
||||
#EXTRALIBS_FOR_GUI =
|
||||
__rbutil___mac_setfilecmd = \
|
||||
$(SETFILE) -a C rbutil$(EXEEXT)
|
||||
__rbutil___mac_rezcmd = $(__MACOSX_RESOURCES_p_1)
|
||||
#__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
|
||||
#__WXUNIV_DEFINE_p_1 = -d __WXUNIVERSAL__
|
||||
#__WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__
|
||||
#__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
|
||||
#__EXCEPTIONS_DEFINE_p_1 = -d wxNO_EXCEPTIONS
|
||||
#__EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS
|
||||
#__RTTI_DEFINE_p = -DwxNO_RTTI
|
||||
#__RTTI_DEFINE_p_1 = -d wxNO_RTTI
|
||||
#__RTTI_DEFINE_p_2 = --define wxNO_RTTI
|
||||
#__THREAD_DEFINE_p = -DwxNO_THREADS
|
||||
#__THREAD_DEFINE_p_1 = -d wxNO_THREADS
|
||||
#__THREAD_DEFINE_p_2 = --define wxNO_THREADS
|
||||
#__DLLFLAG_p = -DWXUSINGDLL
|
||||
#__DLLFLAG_p_1 = -d WXUSINGDLL
|
||||
#__DLLFLAG_p_2 = --define WXUSINGDLL
|
||||
COND_PLATFORM_OS2_1___rbutil___os2_emxbindcmd = $(NM) rbutil$(EXEEXT) | if \
|
||||
grep -q pmwin.763 ; then emxbind -ep rbutil$(EXEEXT) ; fi
|
||||
#__rbutil___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___rbutil___os2_emxbindcmd)
|
||||
#__RCDEFDIR_p = -i \
|
||||
# $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
|
||||
#__RCDEFDIR_p_1 = --include-dir \
|
||||
# $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
|
||||
#__rbutil_os2_lib_res = \
|
||||
# $(top_srcdir)/include/wx/os2/wx.res
|
||||
__rbutil_bundle___depname = rbutil_bundle
|
||||
#____rbutil_BUNDLE_TGT_REF_DEP = \
|
||||
# rbutil.app/Contents/PkgInfo
|
||||
____rbutil_BUNDLE_TGT_REF_DEP = \
|
||||
rbutil.app/Contents/PkgInfo
|
||||
COND_MONOLITHIC_0___WXLIB_CORE_p = \
|
||||
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
|
||||
COND_MONOLITHIC_0___WXLIB_BASE_p = \
|
||||
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
|
||||
|
||||
__WXLIB_ADV_p = -lwx_mac_adv$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
__WXLIB_NET_p = -lwx_base_carbon_net-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
__WXLIB_HTML_p = -lwx_mac_html-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
|
||||
#__rbutil___win32rc = rbutil_rc.o
|
||||
COND_MONOLITHIC_1___WXLIB_MONO_p = \
|
||||
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
#__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
|
||||
__LIB_TIFF_p \
|
||||
= \
|
||||
-lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
__LIB_JPEG_p \
|
||||
= \
|
||||
-lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
__LIB_PNG_p \
|
||||
= \
|
||||
-lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
#__LIB_ZLIB_p = \
|
||||
# -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
#__LIB_ODBC_p = \
|
||||
# -lwxodbc$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
|
||||
-lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
#__LIB_REGEX_p = $(COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p)
|
||||
__LIB_EXPAT_p = \
|
||||
-lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
|
||||
COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1 = $(REZ) -d __DARWIN__ -t APPL -d \
|
||||
__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) \
|
||||
$(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) -i $(srcdir) $(__DLLFLAG_p_1) -i \
|
||||
$(srcdir)/../../samples $(__RCDEFDIR_p) -i $(top_srcdir)/include -o \
|
||||
rbutil$(EXEEXT) Carbon.r rbutil.r
|
||||
__MACOSX_RESOURCES_p_1 = $(COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1)
|
||||
|
||||
### Targets: ###
|
||||
|
||||
all: rbutil$(EXEEXT) $(__rbutil_bundle___depname) data
|
||||
|
||||
install: all
|
||||
|
||||
uninstall:
|
||||
|
||||
install-strip: install
|
||||
|
||||
clean:
|
||||
rm -rf ./.deps ./.pch
|
||||
rm -f $(RBUTIL_OBJECTS)
|
||||
rm -f rbutil$(EXEEXT)
|
||||
rm -rf rbutil.app
|
||||
|
||||
distclean: clean
|
||||
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
|
||||
|
||||
rbutil$(EXEEXT): $(RBUTIL_OBJECTS) $(__rbutil___win32rc)
|
||||
$(CXX) -o $@ $(RBUTIL_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LIBS) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__WXLIB_ADV_p) $(__WXLIB_NET_p) $(__WXLIB_HTML_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_ODBC_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
|
||||
$(__rbutil___mac_rezcmd)
|
||||
$(__rbutil___mac_setfilecmd)
|
||||
$(__rbutil___os2_emxbindcmd)
|
||||
$(SAMPLES_RPATH_POSTLINK)
|
||||
|
||||
rbutil.app/Contents/PkgInfo: rbutil$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns
|
||||
mkdir -p rbutil.app/Contents
|
||||
mkdir -p rbutil.app/Contents/MacOS
|
||||
mkdir -p rbutil.app/Contents/Resources
|
||||
|
||||
|
||||
sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \
|
||||
-e "s/EXECUTABLE/rbutil/" \
|
||||
-e "s/VERSION/$(WX_VERSION)/" \
|
||||
$(top_srcdir)/src/mac/carbon/Info.plist.in >rbutil.app/Contents/Info.plist
|
||||
|
||||
|
||||
echo -n "APPL????" >rbutil.app/Contents/PkgInfo
|
||||
|
||||
|
||||
ln -f rbutil$(EXEEXT) rbutil.app/Contents/MacOS/rbutil
|
||||
|
||||
|
||||
cp -f $(top_srcdir)/src/mac/carbon/wxmac.icns rbutil.app/Contents/Resources/wxmac.icns
|
||||
|
||||
rbutil_bundle: $(____rbutil_BUNDLE_TGT_REF_DEP)
|
||||
|
||||
data:
|
||||
@mkdir -p .
|
||||
@for f in rbutil.ini; do \
|
||||
if test ! -f ./$$f -a ! -d ./$$f ; \
|
||||
then x=yep ; \
|
||||
else x=`find $(srcdir)/$$f -newer ./$$f -print` ; \
|
||||
fi; \
|
||||
case "$$x" in ?*) \
|
||||
cp -pRf $(srcdir)/$$f . ;; \
|
||||
esac; \
|
||||
done
|
||||
|
||||
.cpp.o :
|
||||
$(CXXC) $(RBUTIL_CXXFLAGS) -c -o $@ $<
|
||||
|
||||
.c.o :
|
||||
$(CC) $(RBUTIL_CFLAGS) -c -o $@ $<
|
||||
|
||||
rbutil_rc.o: $(srcdir)/rbutil.rc
|
||||
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_2) $(__EXCEPTIONS_DEFINE_p_2) $(__RTTI_DEFINE_p_2) $(__THREAD_DEFINE_p_2) --include-dir $(srcdir) $(__DLLFLAG_p_2) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
|
||||
|
||||
|
||||
# Include dependency info, if present:
|
||||
-include .deps/*.d
|
||||
|
||||
.PHONY: all install uninstall clean distclean rbutil_bundle data
|
||||
|
Before Width: | Height: | Size: 21 KiB |
|
|
@ -1,274 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: autodetection.cpp
|
||||
*
|
||||
* Copyright (C) 2008 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "autodetection.h"
|
||||
#include "bootloaders.h"
|
||||
/***************************************************
|
||||
* General autodetection code
|
||||
****************************************************/
|
||||
|
||||
bool ipodpatcherDetect(UsbDeviceInfo* tempdevice)
|
||||
{
|
||||
/* use ipodpatcher for ipod detecting */
|
||||
struct ipod_t ipod;
|
||||
int n = ipod_scan(&ipod);
|
||||
if(n == 1) /* we found an ipod */
|
||||
{
|
||||
wxString temp(ipod.targetname,wxConvUTF8);
|
||||
int index = gv->plat_bootloadername.Index(temp); // use the bootloader names..
|
||||
tempdevice->device_index = index;
|
||||
tempdevice->status=DEVICEFOUND;
|
||||
|
||||
/* find mount point if possible */
|
||||
#if !(defined( __WXMSW__ ) || defined( __DARWIN__)) //linux code
|
||||
wxString tmp = resolve_mount_point(wxString(ipod.diskname,wxConvUTF8)+wxT("2"));
|
||||
if( tmp != wxT("") )
|
||||
tempdevice->path = tmp;
|
||||
#endif
|
||||
return true;
|
||||
|
||||
}
|
||||
else if (n > 1) /* to many ipods */
|
||||
{
|
||||
tempdevice->status = TOMANYDEVICES;
|
||||
return true;
|
||||
}
|
||||
else /* no ipod */
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool sansapatcherDetect(UsbDeviceInfo* tempdevice)
|
||||
{
|
||||
/* scann for sansas */
|
||||
struct sansa_t sansa;
|
||||
int n = sansa_scan(&sansa);
|
||||
if(n==1)
|
||||
{
|
||||
tempdevice->device_index = gv->plat_id.Index(wxT("sansae200"));
|
||||
tempdevice->status = DEVICEFOUND;
|
||||
/* find mount point if possible */
|
||||
#if !(defined( __WXMSW__ ) || defined( __DARWIN__)) //linux code
|
||||
wxString tmp = resolve_mount_point(wxString(sansa.diskname,wxConvUTF8)+wxT("1"));
|
||||
if( tmp != wxT("") )
|
||||
tempdevice->path = tmp;
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
else if (n > 1)
|
||||
{
|
||||
tempdevice->status = TOMANYDEVICES;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool rockboxinfoDetect(wxString filename,UsbDeviceInfo* tempdevice)
|
||||
{
|
||||
wxTextFile rockboxinfo(filename);
|
||||
rockboxinfo.Open();
|
||||
wxString line = rockboxinfo.GetFirstLine();
|
||||
wxString targetstring;
|
||||
if(line.StartsWith(wxT("Target: "), &targetstring))
|
||||
{
|
||||
int index = gv->plat_id.Index(targetstring);
|
||||
if(index < 0) return false;
|
||||
|
||||
tempdevice->device_index = index;
|
||||
wxString myPath;
|
||||
if(filename.EndsWith(wxT(".rockbox" PATH_SEP "rockbox-info.txt"),&myPath));
|
||||
tempdevice->path = myPath;
|
||||
|
||||
tempdevice->status = DEVICEFOUND;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool detectDevices(UsbDeviceInfo* tempdevice)
|
||||
{
|
||||
tempdevice->device_index= 0;
|
||||
tempdevice->path=wxT("");
|
||||
tempdevice->status =NODEVICE;
|
||||
|
||||
/* try ipodpatcher */
|
||||
if(ipodpatcherDetect(tempdevice))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/* try sansapatcher */
|
||||
if(sansapatcherDetect(tempdevice))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/*try via files on the devices */
|
||||
wxArrayString mountpoints = getPossibleMountPoints();
|
||||
|
||||
for(unsigned int i=0;i<mountpoints.GetCount();i++)
|
||||
{
|
||||
if(wxDir::Exists(mountpoints[i]))
|
||||
{
|
||||
/*check for rockbox-info.txt */
|
||||
wxString filename;
|
||||
filename.Printf("%s" PATH_SEP ".rockbox" PATH_SEP "rockbox-info.txt",mountpoints[i].c_str());
|
||||
if(wxFile::Exists(filename))
|
||||
{
|
||||
if(rockboxinfoDetect(filename,tempdevice))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/***************************************************
|
||||
* Windows code for autodetection
|
||||
****************************************************/
|
||||
#if defined( __WXMSW__ )
|
||||
|
||||
wxArrayString getPossibleMountPoints()
|
||||
{
|
||||
wxArrayString tempList;
|
||||
tempList.Add(wxT("D:\\"));
|
||||
tempList.Add(wxT("E:\\"));
|
||||
tempList.Add(wxT("F:\\"));
|
||||
tempList.Add(wxT("G:\\"));
|
||||
tempList.Add(wxT("H:\\"));
|
||||
tempList.Add(wxT("I:\\"));
|
||||
tempList.Add(wxT("J:\\"));
|
||||
tempList.Add(wxT("K:\\"));
|
||||
tempList.Add(wxT("L:\\"));
|
||||
tempList.Add(wxT("M:\\"));
|
||||
tempList.Add(wxT("N:\\"));
|
||||
tempList.Add(wxT("O:\\"));
|
||||
tempList.Add(wxT("P:\\"));
|
||||
tempList.Add(wxT("Q:\\"));
|
||||
tempList.Add(wxT("R:\\"));
|
||||
tempList.Add(wxT("S:\\"));
|
||||
tempList.Add(wxT("T:\\"));
|
||||
tempList.Add(wxT("U:\\"));
|
||||
tempList.Add(wxT("V:\\"));
|
||||
tempList.Add(wxT("W:\\"));
|
||||
tempList.Add(wxT("X:\\"));
|
||||
tempList.Add(wxT("Y:\\"));
|
||||
tempList.Add(wxT("Z:\\"));
|
||||
|
||||
return tempList;
|
||||
}
|
||||
|
||||
|
||||
#endif /* windows code */
|
||||
|
||||
/**********************************************************
|
||||
* Linux code for autodetection
|
||||
*******************************************************/
|
||||
#if !(defined( __WXMSW__ ) || defined( __DARWIN__))
|
||||
|
||||
wxArrayString getPossibleMountPoints()
|
||||
{
|
||||
wxArrayString tempList;
|
||||
|
||||
FILE *fp = fopen( "/proc/mounts", "r" );
|
||||
if( !fp ) return tempList;
|
||||
char *dev, *dir;
|
||||
while( fscanf( fp, "%as %as %*s %*s %*s %*s", &dev, &dir ) != EOF )
|
||||
{
|
||||
wxString directory = wxString( dir, wxConvUTF8 );
|
||||
tempList.Add(directory);
|
||||
free( dev );
|
||||
free( dir );
|
||||
}
|
||||
fclose( fp );
|
||||
|
||||
return tempList;
|
||||
}
|
||||
|
||||
wxString resolve_mount_point( const wxString device )
|
||||
{
|
||||
FILE *fp = fopen( "/proc/mounts", "r" );
|
||||
if( !fp ) return wxT("");
|
||||
char *dev, *dir;
|
||||
while( fscanf( fp, "%as %as %*s %*s %*s %*s", &dev, &dir ) != EOF )
|
||||
{
|
||||
if( wxString( dev, wxConvUTF8 ) == device )
|
||||
{
|
||||
wxString directory = wxString( dir, wxConvUTF8 );
|
||||
free( dev );
|
||||
free( dir );
|
||||
return directory;
|
||||
}
|
||||
free( dev );
|
||||
free( dir );
|
||||
}
|
||||
fclose( fp );
|
||||
return wxT("");
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* linux code */
|
||||
|
||||
/**********************************************************
|
||||
* MAC code for autodetection
|
||||
*******************************************************/
|
||||
#if defined( __DARWIN__)
|
||||
|
||||
wxArrayString getPossibleMountPoints()
|
||||
{
|
||||
wxArrayString tempList;
|
||||
|
||||
wxDir volumes;
|
||||
|
||||
if(volumes.Open(wxT("/Volumes")))
|
||||
{
|
||||
wxString filename;
|
||||
bool cont = volumes.GetFirst(&filename, wxEmptyString, wxDIR_DIRS);
|
||||
while ( cont )
|
||||
{
|
||||
tempList.Add(filename);
|
||||
cont = dir.GetNext(&filename);
|
||||
}
|
||||
}
|
||||
return tempList;
|
||||
|
||||
}
|
||||
|
||||
#endif /* Mac Code */
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: autodetection.h
|
||||
*
|
||||
* Copyright (C) 2008 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef AUTODETECTION_H_INCLUDED
|
||||
#define AUTODETECTION_H_INCLUDED
|
||||
|
||||
|
||||
/**************************************
|
||||
* General code for USB Device detection
|
||||
***************************************/
|
||||
#include "rbutil.h"
|
||||
|
||||
#define TOMANYDEVICES 2
|
||||
#define NODEVICE 1
|
||||
#define DEVICEFOUND 0
|
||||
|
||||
struct UsbDeviceInfo
|
||||
{
|
||||
int device_index;
|
||||
wxString path;
|
||||
int status;
|
||||
};
|
||||
|
||||
|
||||
bool detectDevices(UsbDeviceInfo* tempdevice);
|
||||
|
||||
wxArrayString getPossibleMountPoints(); /* this funktion has to be implemented for every OS */
|
||||
|
||||
|
||||
/********************************
|
||||
* Windows header for USB Device detection and information
|
||||
**************************************/
|
||||
|
||||
#if defined( __WXMSW__ )
|
||||
|
||||
|
||||
#endif /*__WXMSW__ */
|
||||
|
||||
|
||||
/************************************************************************+
|
||||
*Linux header for autodetection
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#if !(defined( __WXMSW__ ) || defined( __DARWIN__))
|
||||
|
||||
wxString resolve_mount_point( const wxString device );
|
||||
|
||||
|
||||
#endif /* Linux Code */
|
||||
|
||||
|
||||
|
||||
|
||||
/************************************************************************+
|
||||
*MAc header for autodetection
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#if defined( __DARWIN__)
|
||||
|
||||
|
||||
|
||||
#endif /* MAc Code */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,549 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: bootloaders.cpp
|
||||
*
|
||||
* Copyright (C) 2007 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "bootloaders.h"
|
||||
|
||||
|
||||
|
||||
int verbose =0;
|
||||
// reserves memory for ipodpatcher
|
||||
bool initIpodpatcher()
|
||||
{
|
||||
if (ipod_alloc_buffer(§orbuf,BUFFER_SIZE) < 0) return true;
|
||||
else return false;
|
||||
}
|
||||
// uses ipodpatcher for add and rem of bootloader
|
||||
bool ipodpatcher(int mode,wxString bootloadername)
|
||||
{
|
||||
wxString src,dest,buf;
|
||||
|
||||
struct ipod_t ipod;
|
||||
|
||||
int n = ipod_scan(&ipod);
|
||||
if (n == 0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] No ipods found."), wxT("Scanning for Ipods"));
|
||||
return false;
|
||||
}
|
||||
if (n > 1)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] to many ipods found."), wxT("Scanning for Ipods"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// downloading files
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
src = gv->bootloader_url + wxT("/ipod/")
|
||||
+ bootloadername + wxT(".ipod");
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
|
||||
if ( DownloadURL(src, dest) )
|
||||
{
|
||||
wxRemoveFile(dest);
|
||||
ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (ipod_open(&ipod, 0) < 0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] could not open ipod"), wxT("open Ipod"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (read_partinfo(&ipod,0) < 0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] could not read partitiontable"), wxT("reading partitiontable"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ipod.pinfo[0].start==0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] No partition 0 on disk"), wxT("reading partitiontable"));
|
||||
int i;
|
||||
double sectors_per_MB = (1024.0*1024.0)/ipod.sector_size;
|
||||
|
||||
buf.Printf(wxT("[INFO] Part Start Sector End Sector Size (MB) Type\n"));
|
||||
ERR_DIALOG(buf, wxT("reading partitiontable"));
|
||||
for ( i = 0; i < 4; i++ ) {
|
||||
if (ipod.pinfo[i].start != 0) {
|
||||
buf.Printf(wxT("[INFO] %d %10ld %10ld %10.1f %s (0x%02x)\n"),
|
||||
i,
|
||||
ipod.pinfo[i].start,
|
||||
ipod.pinfo[i].start+ipod.pinfo[i].size-1,
|
||||
ipod.pinfo[i].size/sectors_per_MB,
|
||||
get_parttype(ipod.pinfo[i].type),
|
||||
ipod.pinfo[i].type);
|
||||
ERR_DIALOG(buf, wxT("reading partitiontable"));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
read_directory(&ipod);
|
||||
|
||||
if (ipod.nimages <= 0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Failed to read firmware directory"), wxT("reading directory"));
|
||||
return false;
|
||||
}
|
||||
if (getmodel(&ipod,(ipod.ipod_directory[0].vers>>8)) < 0)
|
||||
{
|
||||
buf.Printf(wxT("[ERR] Unknown version number in firmware (%08x)\n"),
|
||||
ipod.ipod_directory[0].vers );
|
||||
ERR_DIALOG(buf, wxT("reading directory"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ipod.macpod)
|
||||
{
|
||||
WARN_DIALOG(wxT("Warning this is a MacPod, Rockbox doesnt work on this. Convert it to WinPod"),wxT("MacPod"));
|
||||
}
|
||||
|
||||
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
if (ipod_reopen_rw(&ipod) < 0) {
|
||||
ERR_DIALOG(wxT("[ERR] Could not open Ipod in RW mode"), wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (add_bootloader(&ipod, (char*)dest.c_str(), FILETYPE_DOT_IPOD)==0) {
|
||||
|
||||
} else {
|
||||
ERR_DIALOG(wxT("[ERR] failed to add Bootloader"), wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if(mode == BOOTLOADER_REM)
|
||||
{
|
||||
if (ipod_reopen_rw(&ipod) < 0) {
|
||||
ERR_DIALOG(wxT("[ERR] Could not open Ipod in RW mode"), wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ipod.ipod_directory[0].entryOffset==0) {
|
||||
ERR_DIALOG(wxT("[ERR] No bootloader detected.\n"), wxT("Bootloader del"));
|
||||
return false;
|
||||
} else {
|
||||
if (delete_bootloader(&ipod)==0) {
|
||||
|
||||
} else {
|
||||
ERR_DIALOG(wxT("[ERR] --delete-bootloader failed.\n"), wxT("Bootloader del"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ipod_close(&ipod);
|
||||
return true;
|
||||
}
|
||||
|
||||
// reserves memory for sansapatcher
|
||||
bool initSansaPatcher()
|
||||
{
|
||||
if (sansa_alloc_buffer(§orbuf,BUFFER_SIZE) < 0) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
|
||||
// sansainstallation
|
||||
bool sansapatcher(int mode,wxString bootloadername)
|
||||
{
|
||||
wxString src,dest,buf;
|
||||
|
||||
struct sansa_t sansa;
|
||||
|
||||
int n = sansa_scan(&sansa);
|
||||
if (n == 0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] No Sansa found."), wxT("Scanning for Sansa"));
|
||||
return false;
|
||||
}
|
||||
if (n > 1)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] to many Sansa found."), wxT("Scanning for Sansa"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// downloading files
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
src = gv->bootloader_url + wxT("/sandisk-sansa/e200/")
|
||||
+ bootloadername;
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
|
||||
if ( DownloadURL(src, dest) )
|
||||
{
|
||||
wxRemoveFile(dest);
|
||||
ERR_DIALOG(wxT("Unable to download ") + src, wxT("Download"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (sansa_open(&sansa, 0) < 0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] could not open sansa"), wxT("open Sansa"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (sansa_read_partinfo(&sansa,0) < 0)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] could not read partitiontable"), wxT("reading partitiontable"));
|
||||
return false;
|
||||
}
|
||||
|
||||
int i = is_e200(&sansa);
|
||||
if (i < 0) {
|
||||
ERR_DIALOG(wxT("[ERR] Disk is not an E200 (%d), aborting.\n"), wxT("Checking Disk"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (sansa.hasoldbootloader)
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] ************************************************************************\n"
|
||||
"[ERR] *** OLD ROCKBOX INSTALLATION DETECTED, ABORTING.\n"
|
||||
"[ERR] *** You must reinstall the original Sansa firmware before running\n"
|
||||
"[ERR] *** sansapatcher for the first time.\n"
|
||||
"[ERR] *** See http://www.rockbox.org/twiki/bin/view/Main/SansaE200Install\n"
|
||||
"[ERR] ************************************************************************\n"),wxT("Checking Disk"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
if (sansa_reopen_rw(&sansa) < 0) {
|
||||
ERR_DIALOG(wxT("[ERR] Could not open Sansa in RW mode"), wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (sansa_add_bootloader(&sansa, (char*)dest.c_str(), FILETYPE_MI4)==0) {
|
||||
|
||||
} else {
|
||||
ERR_DIALOG(wxT("[ERR] failed to add Bootloader"), wxT("Bootloader add"));
|
||||
}
|
||||
|
||||
}
|
||||
else if(mode == BOOTLOADER_REM)
|
||||
{
|
||||
if (sansa_reopen_rw(&sansa) < 0) {
|
||||
ERR_DIALOG(wxT("[ERR] Could not open Sansa in RW mode"), wxT("Bootloader Remove"));
|
||||
}
|
||||
|
||||
if (sansa_delete_bootloader(&sansa)==0) {
|
||||
|
||||
} else {
|
||||
ERR_DIALOG(wxT("[ERR] failed to remove Bootloader"), wxT("Bootloader remove"));
|
||||
}
|
||||
}
|
||||
|
||||
sansa_close(&sansa);
|
||||
return true;
|
||||
}
|
||||
|
||||
// gigabeatinstallation
|
||||
bool gigabeatf(int mode,wxString bootloadername,wxString deviceDir)
|
||||
{
|
||||
wxString path1,path2;
|
||||
wxString err;
|
||||
wxString src,dest;
|
||||
|
||||
path1 = deviceDir
|
||||
+ wxT("" PATH_SEP "GBSYSTEM" PATH_SEP "FWIMG" PATH_SEP "FWIMG01.DAT");
|
||||
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
//Files downloaden
|
||||
src = gv->bootloader_url + wxT("/gigabeat/") + bootloadername;
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
|
||||
if( DownloadURL(src, dest) )
|
||||
{
|
||||
wxRemoveFile(dest);
|
||||
ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(!wxFileExists(path1))
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not find ")+path1, wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
path2 = path1;
|
||||
path2.Append(wxT(".ORIG"));
|
||||
if(!wxFileExists(path2))
|
||||
{
|
||||
if(!wxRenameFile(path1,path2,false))
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not rename ") + path1 + wxT(" to ")
|
||||
+ path2, wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!wxCopyFile(dest,path1))
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not copy ") + dest + wxT(" to ")
|
||||
+ path2, wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if(mode == BOOTLOADER_REM)
|
||||
{
|
||||
path2 = path1;
|
||||
path2.Append(wxT(".ORIG"));
|
||||
if(!wxFileExists(path2))
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not find ") + path1,
|
||||
wxT("Bootloader del"));
|
||||
return false;
|
||||
}
|
||||
if(!wxRenameFile(path2,path1,true))
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not rename ") + path1 + wxT(" to ")
|
||||
+ path2, wxT("Bootloader del"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// iaudio bootloader install
|
||||
bool iaudiox5(int mode,wxString bootloadername,wxString deviceDir)
|
||||
{
|
||||
wxString path1,path2;
|
||||
wxString err;
|
||||
wxString src,dest;
|
||||
|
||||
path1 = deviceDir + wxT("" PATH_SEP "FIRMWARE" PATH_SEP)
|
||||
+ bootloadername;
|
||||
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
//Files downloaden
|
||||
src = gv->bootloader_url + wxT("/iaudio/") + bootloadername;
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP) + bootloadername;
|
||||
if( DownloadURL(src, dest) )
|
||||
{
|
||||
wxRemoveFile(dest);
|
||||
ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
|
||||
return false;
|
||||
}
|
||||
|
||||
// copy file
|
||||
if(!wxCopyFile(dest,path1))
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not copy ")+dest+wxT(" to ")+path2,
|
||||
wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true; // install ready
|
||||
}
|
||||
else
|
||||
return false; //no uninstallation possible
|
||||
}
|
||||
|
||||
// H10 install
|
||||
bool h10(int mode,wxString bootloadername,wxString deviceDir)
|
||||
{
|
||||
wxString err,src,dest,path1,path2;
|
||||
|
||||
int pos = bootloadername.Find('/');
|
||||
if(pos == wxNOT_FOUND) pos = 0;
|
||||
wxString firmwarename = bootloadername.SubString(pos,bootloadername.Length());
|
||||
//wxString firmDir = gv->curbootloader.SubString(0,pos);
|
||||
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
//Files downloaden
|
||||
src = gv->bootloader_url + wxT("/iriver/") + bootloadername;
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP) + firmwarename;
|
||||
if( DownloadURL(src, dest) )
|
||||
{
|
||||
wxRemoveFile(dest);
|
||||
ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install"));
|
||||
return false;
|
||||
}
|
||||
|
||||
path1 = deviceDir + wxT("SYSTEM" PATH_SEP) + firmwarename;
|
||||
path2 = deviceDir + wxT("SYSTEM" PATH_SEP "Original.mi4");
|
||||
|
||||
if(!wxFileExists(path1)) //Firmware dosent exists on player
|
||||
{
|
||||
path1 = deviceDir + wxT("SYSTEM" PATH_SEP "H10EMP.mi4"); //attempt other firmwarename
|
||||
if(!wxFileExists(path1)) //Firmware dosent exists on player
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] File ") + path1 + wxT(" does not Exist"),
|
||||
wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(!wxFileExists(path2)) //there is already a original firmware
|
||||
{
|
||||
if(!wxRenameFile(path1,path2,false)) //rename Firmware to Original
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not rename ") + path1 + wxT(" to ")
|
||||
+ path2, wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!wxCopyFile(dest,path1)) // copy file
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not copy ") + dest + wxT(" to ") + path1,
|
||||
wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true; //install ready
|
||||
|
||||
}
|
||||
else if(mode == BOOTLOADER_REM)
|
||||
{
|
||||
path1 = deviceDir + wxT("SYSTEM" PATH_SEP) + firmwarename;
|
||||
path2 = gv->curdestdir + wxT("SYSTEM" PATH_SEP "Original.mi4");
|
||||
if(!wxFileExists(path1)) //Firmware dosent exists on player
|
||||
{
|
||||
path1 = deviceDir + wxT("" PATH_SEP "SYSTEM" PATH_SEP "H10EMP.mi4"); //attempt other firmwarename
|
||||
if(!wxFileExists(path1)) //Firmware dosent exists on player
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] File ") + path1 + wxT(" does not Exist"),
|
||||
wxT("Bootloader rem"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(!wxFileExists(path2)) //Original Firmware dosent exists on player
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] File ") + path2 + wxT(" does not Exist"),
|
||||
wxT("Bootloader rem"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!wxRenameFile(path2,path1,true)) //rename Firmware to Original
|
||||
{
|
||||
ERR_DIALOG(wxT("[ERR] Coud not rename ") + path2 + wxT(" to ")
|
||||
+ path1, wxT("Bootloader add"));
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
// shouldn't get here
|
||||
return false;
|
||||
}
|
||||
|
||||
// FWPatcher
|
||||
bool fwpatcher(int mode,wxString bootloadername,wxString deviceDir,wxString firmware)
|
||||
{
|
||||
if(mode == BOOTLOADER_ADD)
|
||||
{
|
||||
char md5sum_str[32];
|
||||
wxString src,dest,err;
|
||||
int series,table_entry;
|
||||
|
||||
if (!FileMD5(firmware, md5sum_str)) {
|
||||
ERR_DIALOG(wxT("Could not open firmware"), wxT("Open Firmware"));
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
/* Check firmware against md5sums in h120sums and h100sums */
|
||||
series = 0;
|
||||
table_entry = intable(md5sum_str, &h120pairs[0],
|
||||
sizeof(h120pairs)/sizeof(struct sumpairs));
|
||||
if (table_entry >= 0) {
|
||||
series = 120;
|
||||
}
|
||||
else {
|
||||
table_entry = intable(md5sum_str, &h100pairs[0],
|
||||
sizeof(h100pairs)/sizeof(struct sumpairs));
|
||||
if (table_entry >= 0) {
|
||||
series = 100;
|
||||
}
|
||||
else {
|
||||
table_entry =
|
||||
intable(md5sum_str, &h300pairs[0],
|
||||
sizeof(h300pairs)/sizeof(struct sumpairs));
|
||||
if (table_entry >= 0)
|
||||
series = 300;
|
||||
}
|
||||
}
|
||||
if (series == 0) {
|
||||
ERR_DIALOG(wxT("Could not detect firmware type"), wxT("Detect Player out of Firmware"));
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Download bootloader
|
||||
src = gv->bootloader_url + wxT("/iriver/")
|
||||
+ bootloadername;
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP)
|
||||
+ bootloadername;
|
||||
if( DownloadURL(src, dest) )
|
||||
{
|
||||
wxRemoveFile(dest);
|
||||
ERR_DIALOG(wxT("Unable to download ") + src,
|
||||
wxT("Install"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!PatchFirmware(firmware,dest,series, table_entry)) // Patch firmware
|
||||
{
|
||||
ERR_DIALOG(wxT("Patching Firmware failed"),
|
||||
wxT("Patching Firmware"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Load patched Firmware to player
|
||||
src = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP "new.hex");
|
||||
|
||||
if(gv->curplat == wxT("h100"))
|
||||
dest = deviceDir + wxT("" PATH_SEP "ihp_100.hex");
|
||||
else if(gv->curplat == wxT("h120"))
|
||||
dest = deviceDir + wxT("" PATH_SEP "ihp_120.hex");
|
||||
else if(gv->curplat == wxT("h300"))
|
||||
dest = deviceDir + wxT("" PATH_SEP "H300.hex");
|
||||
|
||||
if(!wxRenameFile(src,dest))
|
||||
{
|
||||
ERR_DIALOG(wxT("Copying Firmware to Device failed"),
|
||||
wxT("Copying Firmware"));
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return false; //no uninstall possible
|
||||
}
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: bootloaders.h
|
||||
*
|
||||
* Copyright (C) 2007 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
|
||||
#ifndef BOOTLOADERS_H_INCLUDED
|
||||
#define BOOTLOADERS_H_INCLUDED
|
||||
|
||||
#include <wx/string.h>
|
||||
#include "irivertools.h"
|
||||
#include "md5sum.h"
|
||||
|
||||
#include "rbutil.h"
|
||||
#include "installlog.h"
|
||||
|
||||
extern "C" {
|
||||
// Ipodpatcher
|
||||
#include "ipodpatcher/ipodpatcher.h"
|
||||
// Sansapatcher
|
||||
#include "sansapatcher/sansapatcher.h"
|
||||
};
|
||||
|
||||
|
||||
bool initIpodpatcher();
|
||||
bool initSansaPatcher();
|
||||
bool ipodpatcher(int mode,wxString bootloadername);
|
||||
bool sansapatcher(int mode,wxString bootloadername);
|
||||
bool gigabeatf(int mode,wxString bootloadername,wxString deviceDir);
|
||||
bool iaudiox5(int mode,wxString bootloadername,wxString deviceDir);
|
||||
bool fwpatcher(int mode,wxString bootloadername,wxString deviceDir,wxString firmware);
|
||||
bool h10(int mode,wxString bootloadername,wxString deviceDir);
|
||||
|
||||
|
||||
#endif // BOOTLOADERS_H_INCLUDED
|
||||
|
|
@ -1,370 +0,0 @@
|
|||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: credits.h
|
||||
*
|
||||
* Copyright (C) 2006 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CREDITS_H_INCLUDED
|
||||
#define CREDITS_H_INCLUDED
|
||||
|
||||
#define RBUTIL_FULLNAME "The Rockbox Utility"
|
||||
#define RBUTIL_VERSION "Version 0.3.2.6"
|
||||
|
||||
static const wxString rbutil_developers[] = {
|
||||
wxT("Christi Alice Scarborough"),
|
||||
wxT("Dave Chapman"),
|
||||
wxT("Dominik Wenger"),
|
||||
wxT("Bryan Childs"),
|
||||
wxT("Dave Hooper"),
|
||||
wxT("")
|
||||
};
|
||||
|
||||
#define RBUTIL_WEBSITE "http://www.rockbox.org/"
|
||||
#define RBUTIL_COPYRIGHT wxT("© 2005-2007 The Rockbox Team\n" \
|
||||
"Released under the GNU General Public License v2.")
|
||||
#define RBUTIL_DESCRIPTION wxT("Installer and housekeeping utility for " \
|
||||
"the Rockbox open source digital audio player firmware.")
|
||||
|
||||
|
||||
class AboutDlg: public wxDialog
|
||||
{
|
||||
public:
|
||||
AboutDlg(rbutilFrm *parent);
|
||||
~AboutDlg();
|
||||
};
|
||||
|
||||
#include <wx/hyperlink.h>
|
||||
|
||||
#endif // CREDITS_H_INCLUDED
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
/* Checksums of firmwares for ihp_100 */
|
||||
/* order: unpatched, patched */
|
||||
|
||||
/* 1.63eu */
|
||||
{"86103cb05658970b43ce1f40f93d53a8", "4938420d83aa6da3764d33e5a008c8d4"},
|
||||
/* 1.63k */
|
||||
{"70127fa9ee69afab7645297fbb61636d", "044b737ddb74436353e290d3fbcc3333"},
|
||||
/* 1.63us */
|
||||
{"7a504a450c76a0dda757fdb6b5531b22", "e51883ed89d49f5677b0a976aef7b154"},
|
||||
/* 1.65eu */
|
||||
{"478dc657b97e77d1b4944ef26c3dcb8e", "528917d9e5b34a3e5bcac8fe1f4bd7a9"},
|
||||
/* 1.65k */
|
||||
{"97ba82fb8099bb23ca0c78fc119f8cce", "ef24f69a679e5eba2216045cb24d8b15"},
|
||||
/* 1.65us */
|
||||
{"d3725865e0948cd5f604b00db2ec89aa", "76d83812b9e1856f768ba913eeba44e1"},
|
||||
/* 1.66eu */
|
||||
{"fc59f742fe383da3e4d17a660c46afb9", "2aa9d16d3e166a7575fc652db8588daa"},
|
||||
/* 1.66k */
|
||||
{"22d214401994c276ec6878288caa0dba", "a87dbe604ea98d035450a34b6e184a08"},
|
||||
/* 1.66us */
|
||||
{"0ae247f567aeafcafecf823a50cbf33e", "f7668e8949f1a78e8ecd685db78b6824"},
|
||||
/* 1.66jp */
|
||||
{"8bfc8ae5805c270597232efeafade5fd", "72613b75c5196f63e99e41b7a88d7241"},
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
/* Checksums of firmwares for ihp_120 */
|
||||
/* order: unpatched, patched */
|
||||
|
||||
/* 1.63eu */
|
||||
{"14488347a171480c63c94bc7b885225d", "15f09130a1aa02c25f820e8cc68259a4"},
|
||||
/* 1.63k */
|
||||
{"3401fe8845e569156abfaddf05ca7771", "55e4cb20e36f4da06ad80b31aaaa3054"},
|
||||
/* 1.63us */
|
||||
{"d9078209105c186cee5246055fdb99c9", "dbdd012a3d821d26f907879cca71e9f4"},
|
||||
/* 1.65eu */
|
||||
{"c9e71aac4a498f1e2f0e684c2d554ea1", "43454df30c176e55d0df7e3c48e67785"},
|
||||
/* 1.65k */
|
||||
{"360c0c565266f84e9bca610c596f3207", "d8cb7d9f586186bf9780ee761fc8a677"},
|
||||
/* 1.65us */
|
||||
{"b9e516d4b8a0265605f46f254897bfb0", "99c5666e990dc782b9daefcb1a087ec0"},
|
||||
/* 1.66eu */
|
||||
{"a094999b41781f4322a57b9be7fa4534", "e26d2574f39cee0adcdd54fb9f316293"},
|
||||
/* 1.66k */
|
||||
{"79daba973bb31b60b4b87c2ef497587d", "e76121ba9efe72ecfbb6392eaefe6d96"},
|
||||
/* 1.66us */
|
||||
{"7fa020a3104c76fbbfcb8313e287dbe2", "12194678a2fdd0814d2e0bb57c8e8e6e"},
|
||||
/* 1.66jp */
|
||||
{"271d151eb6586929da24b3458ea965fe", "51716393ea0605d225e70a6be29dfdbd"},
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
/* Checksums of firmwares for ihp_300 */
|
||||
/* order: unpatched, patched */
|
||||
|
||||
/* 1.28eu */
|
||||
{"0b2083d37f24899b82d21a14d2b38060", "9cd7e291a66f55335c619d63f3a7634b"},
|
||||
/* 1.28k */
|
||||
{"c6f854ae3d8f48e8982819a4b5302fb0", "90967247ba3f1bcb257432a4d78553bf"},
|
||||
/* 1.28jp */
|
||||
{"7fcd7bca6b98a34134e2518a616f4e85", "cfd22c20e473727148f11f83d0028fb3"},
|
||||
/* 1.29eu */
|
||||
{"27d90fc316709c096979ab24c914ee31", "5982302507d57c2a96e9480c242b5de0"},
|
||||
/* 1.29k */
|
||||
{"44416d97737fc47cd417a64d44064768", "1303e22ef5b1af866aa4def03d6c5f5a"},
|
||||
/* 1.29jp */
|
||||
{"1ac242c645572a0a5de99ae2b23453b8", "ce433c404ff7531f5852ce3cb61143ee"},
|
||||
/* 1.30eu */
|
||||
{"8d2d775b018f0532235d38f5317ae10c", "7fb49041294b3e6aea3894218d6d64cf"},
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
# __________ __ ___.
|
||||
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
# \/ \/ \/ \/ \/
|
||||
# $Id$
|
||||
#
|
||||
CC = gcc
|
||||
CXX = $(shell $(PREFIX)wx-config --version=2.8 --cxx)
|
||||
INC = `$(PREFIX)wx-config --version=2.8 --cxxflags`
|
||||
LIBS = `$(PREFIX)wx-config --version=2.8 --libs`
|
||||
|
||||
CFLAGS = -Wall -Wundef -DRBUTIL -D_LARGEFILE64_SOURCE
|
||||
ICONS := $(wildcard *.png)
|
||||
HEADERS := $(subst .png,.h,$(ICONS))
|
||||
OBJS := $(subst .png,.o,$(ICONS))
|
||||
CXXSOURCES = $(subst .png,.cpp,$(ICONS))
|
||||
SILENT = @
|
||||
BIN2C = ./bin2c
|
||||
|
||||
all: $(OBJS)
|
||||
|
||||
|
||||
bin2c: bin2c.c
|
||||
$(SILENT) echo CC $<
|
||||
$(SILENT) $(CC) -o $@ $<
|
||||
|
||||
%.cpp: %.png bin2c
|
||||
$(SILENT) echo BIN2C $<
|
||||
$(SILENT) $(BIN2C) $<
|
||||
|
||||
%.o: %.cpp
|
||||
$(SILENT) echo CXX $<
|
||||
$(SILENT) $(CXX) $(CFLAGS) $(INC) -c -o $@ $<
|
||||
|
||||
clean:
|
||||
$(SILENT) echo cleaning icons.
|
||||
$(SILENT) rm -f bin2c $(OBJS) $(HEADERS) $(CXXSOURCES)
|
||||
|
|
@ -1,172 +0,0 @@
|
|||
// bin2c.c
|
||||
//
|
||||
// convert a binary file into a C source vector
|
||||
//
|
||||
// put into the public domain by Sandro Sigala
|
||||
//
|
||||
// syntax: bin2c [-c] [-z] <input_file> <output_file>
|
||||
//
|
||||
// -c add the "const" keyword to definition
|
||||
// -z terminate the array with a zero (useful for embedded C strings)
|
||||
//
|
||||
// examples:
|
||||
// bin2c -c myimage.png myimage_png.cpp
|
||||
// bin2c -z sometext.txt sometext_txt.cpp
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#define PATH_MAX 1024
|
||||
#endif
|
||||
|
||||
int useconst = 0;
|
||||
int zeroterminated = 0;
|
||||
|
||||
int myfgetc(FILE *f)
|
||||
{
|
||||
int c = fgetc(f);
|
||||
if (c == EOF && zeroterminated) {
|
||||
zeroterminated = 0;
|
||||
return 0;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
void process(const char *ifname, const char *ofname)
|
||||
{
|
||||
FILE *ifile, *ofile;
|
||||
/* modified */
|
||||
int counter=0;
|
||||
char buf2[PATH_MAX];
|
||||
char* cp2;
|
||||
char* cp3;
|
||||
if ((cp3 = strrchr(ofname, '/')) != NULL)
|
||||
++cp3;
|
||||
else {
|
||||
if ((cp3 = strrchr(ofname, '\\')) != NULL)
|
||||
++cp3;
|
||||
else
|
||||
cp3 = (char*) ofname;
|
||||
}
|
||||
|
||||
strcpy(buf2, cp3);
|
||||
cp2 = strrchr(buf2, '.');
|
||||
*cp2 = '.';
|
||||
cp2++;
|
||||
*cp2 = 'h';
|
||||
cp2++;
|
||||
*cp2 ='\0';
|
||||
|
||||
|
||||
ifile = fopen(ifname, "rb");
|
||||
if (ifile == NULL) {
|
||||
fprintf(stderr, "cannot open %s for reading\n", ifname);
|
||||
exit(1);
|
||||
}
|
||||
ofile = fopen(ofname, "wb");
|
||||
if (ofile == NULL) {
|
||||
fprintf(stderr, "cannot open %s for writing\n", ofname);
|
||||
exit(1);
|
||||
}
|
||||
char buf[PATH_MAX], *p;
|
||||
const char *cp;
|
||||
if ((cp = strrchr(ifname, '/')) != NULL)
|
||||
++cp;
|
||||
else {
|
||||
if ((cp = strrchr(ifname, '\\')) != NULL)
|
||||
++cp;
|
||||
else
|
||||
cp = ifname;
|
||||
}
|
||||
strcpy(buf, cp);
|
||||
for (p = buf; *p != '\0'; ++p)
|
||||
if (!isalnum(*p))
|
||||
*p = '_';
|
||||
fprintf(ofile,"#include \"%s\" \n\n",buf2);
|
||||
fprintf(ofile, "%sunsigned char %s[] = {\n", useconst ? "const " : "", buf);
|
||||
int c, col = 1;
|
||||
while ((c = myfgetc(ifile)) != EOF) {
|
||||
counter++;
|
||||
if (col >= 78 - 6) {
|
||||
fputc('\n', ofile);
|
||||
col = 1;
|
||||
}
|
||||
fprintf(ofile, "0x%.2x, ", c);
|
||||
col += 6;
|
||||
|
||||
}
|
||||
fprintf(ofile, "\n};\n");
|
||||
|
||||
/* modified */
|
||||
fprintf(ofile,"int %s_length = %i; \n",buf,counter);
|
||||
|
||||
|
||||
FILE *o2file;
|
||||
o2file = fopen(buf2, "wb");
|
||||
if (o2file == NULL) {
|
||||
fprintf(stderr, "cannot open %s for writing\n", buf2);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fprintf(o2file, "#ifndef __%s__ \n", buf);
|
||||
fprintf(o2file, "#define __%s__ \n", buf);
|
||||
|
||||
fprintf(o2file, "extern %sunsigned char %s[]; \n\n", useconst ? "const " : "", buf);
|
||||
fprintf(o2file, "extern int %s_length; \n\n", buf);
|
||||
|
||||
fprintf(o2file, "#endif \n");
|
||||
|
||||
fclose(ifile);
|
||||
fclose(ofile);
|
||||
fclose(o2file);
|
||||
}
|
||||
|
||||
void usage(void)
|
||||
{
|
||||
fprintf(stderr, "usage: bin2c <input_files> \n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (argc < 2) {
|
||||
usage();
|
||||
}
|
||||
int i;
|
||||
for(i = 1;i < argc ; i++)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
char* cp;
|
||||
strcpy(buf, argv[i]);
|
||||
cp = strrchr(buf, '.');
|
||||
cp++;
|
||||
strcpy(cp,"cpp");
|
||||
process(argv[i], buf);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
while (argc > 3) {
|
||||
if (!strcmp(argv[1], "-c")) {
|
||||
useconst = 1;
|
||||
--argc;
|
||||
++argv;
|
||||
} else if (!strcmp(argv[1], "-z")) {
|
||||
zeroterminated = 1;
|
||||
--argc;
|
||||
++argv;
|
||||
} else {
|
||||
usage();
|
||||
}
|
||||
}
|
||||
if (argc != 3) {
|
||||
usage();
|
||||
}
|
||||
process(argv[1], argv[2]);
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
|
@ -1,70 +0,0 @@
|
|||
/* WxBitmapButton1 XPM */
|
||||
static char *install_3d_xpm[]={
|
||||
"56 46 20 1",
|
||||
" c None",
|
||||
"0 c #BEBABE",
|
||||
"1 c #BEC3BE",
|
||||
"2 c #000011",
|
||||
"3 c #AEAAAE",
|
||||
"4 c #9E9A9E",
|
||||
"5 c #010101",
|
||||
"6 c #79869E",
|
||||
"7 c #C7BAC7",
|
||||
"8 c #5155FF",
|
||||
"9 c #8E8A8E",
|
||||
"a c #AEAEB6",
|
||||
"b c #202496",
|
||||
"c c #B6AEB6",
|
||||
"d c #CFC7CF",
|
||||
"e c #9696AE",
|
||||
"f c #7992B6",
|
||||
"g c #717986",
|
||||
"h c #28FF20",
|
||||
"i c #A69EA6",
|
||||
" 0",
|
||||
" 0101010101010101010101010101010101010101010101010101012",
|
||||
" 1010101010101010101010101010101010101010101010101010102",
|
||||
" 1001000100010001000100010001000100010001000100010001002",
|
||||
" 3030410331304103313041033130410331304103313041033130312",
|
||||
" 0101010100101010100101010010101010010101001010101001002",
|
||||
" 3030303030303030313030303030303031303030303030303130302",
|
||||
" 0101030010101301001015555555555555555300101013101001032",
|
||||
" 3041303140303045503050101010101010010530403030403040302",
|
||||
" 0103010300130153510350552552525252520563010310131013012",
|
||||
" 3030374131303530503051288888888888851566373040303130302",
|
||||
" 0301031303005305155150588888881818850296031013030300132",
|
||||
" 3030403030453051305555558888883838851266a03030304131302",
|
||||
" 0373030303151503050301558888880818850566030313730303032",
|
||||
" 3131303030355030513135b58888888838851566c03040313030412",
|
||||
" 330333d33303535555035bb58888888818820566330333033373332",
|
||||
" 30303040303035303055bbb58888888888851546303130303030302",
|
||||
" 3333333333333555555bbbb58888888888850566333333333333332",
|
||||
" 30303030373035bbbb5bbb35888888888885126e303030413030302",
|
||||
" 33333333333335bbbb5bb33588888888888505fg333333333333332",
|
||||
" 33303330333035bbbb5b33355555555555551566a33033303330332",
|
||||
" 3333333333333533335333351111110dhh110566333333333333332",
|
||||
" 3333333333333533335333355252552555252555333333333333332",
|
||||
" 3333333333333533335335051001001000100100533333333333332",
|
||||
" 4333433343334533435353350 10 10 10 10 10563343334333432",
|
||||
" 3333333333333533335335351001001055555500566333333333332",
|
||||
" 3343434333434545335353450101010105505551566c43433343432",
|
||||
" 3333333333333533535335350 10 00 10555555566333333333332",
|
||||
" 4343434343434545435353455555555555555555666343434343432",
|
||||
" 333333333333353353533335666666666666666fge6333333333332",
|
||||
" 434343434343454543534355666egf66966669gfgf4343434343432",
|
||||
" 34333433343335335453356555555552a3a7aaa7343334333433342",
|
||||
" 4343434343434545435356654000305555555343434343434343432",
|
||||
" 3434343434343534345566665555555300303534343434343434342",
|
||||
" 434343434343454343566egc4555505555555553434343434343432",
|
||||
" 443444344434455555egfga44455555555545555443444344434442",
|
||||
" 434343434343434666666ce34346555555555555534343434343432",
|
||||
" 4444444444444446666644444444666666555555564444444444442",
|
||||
" 4343434343434343i34a43434340434743666666666343434343432",
|
||||
" 444444444444444444i44444444444444444444444i444444444442",
|
||||
" 4443444344434443444344434443444344434443444344434443442",
|
||||
" 4444444444444444444444444444444444444444444444444444442",
|
||||
" 4344444443444444434444444344444443444444434444444344442",
|
||||
" 4444444444444444444444444444444444444444444444444444442",
|
||||
" 4444444444444444444444444444444444444444444444444444442",
|
||||
"12222222222222222222222222222222222222222222222222222222"};
|
||||
|
||||
|
|
@ -1,948 +0,0 @@
|
|||
|
||||
#include "install_dialogs.h"
|
||||
#include "wizard.xpm"
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////
|
||||
//// Bootloader Installation
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
IMPLEMENT_CLASS( bootloaderInstallDlg, wxDialog )
|
||||
|
||||
BEGIN_EVENT_TABLE( bootloaderInstallDlg, wxDialog )
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
bootloaderInstallDlg::bootloaderInstallDlg( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
bootloaderInstallDlg::bootloaderInstallDlg( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
}
|
||||
|
||||
void bootloaderInstallDlg::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// bitmap
|
||||
wxBitmap sidebmp(wizard_xpm);
|
||||
ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
|
||||
sideimage->SetBitmap(sidebmp);
|
||||
wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
|
||||
|
||||
wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
|
||||
wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_firmwarepos = new FirmwarePositionCtrl(this,ID_FIRMWARE);
|
||||
wxBoxSizer3->Add(m_firmwarepos, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
|
||||
topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
}
|
||||
|
||||
//init the local variables
|
||||
void bootloaderInstallDlg::Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// create the window
|
||||
bool bootloaderInstallDlg::Create( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
|
||||
if (!wxDialog::Create( parent, id, caption, pos, size, style ))
|
||||
return false;
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
Centre();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// tranver data from the controls
|
||||
bool bootloaderInstallDlg::TransferDataFromWindow()
|
||||
{
|
||||
|
||||
if( m_devicepos->IsShown())
|
||||
{
|
||||
gv->curdestdir = m_devicepos->getDevicePos();
|
||||
if(!wxDirExists(gv->curdestdir))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Devicepostion is not valid"),
|
||||
wxT("Select a Deviceposition"));
|
||||
gv->curdestdir = wxT("");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(m_firmwarepos->IsShown())
|
||||
{
|
||||
gv->curfirmware = m_firmwarepos->getFirmwarePos();
|
||||
if(!wxFileExists(gv->curfirmware))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Firmware position is not valid"),
|
||||
wxT("Select a original Firmware"));
|
||||
gv->curfirmware = wxT("");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
// tranver data to the controls
|
||||
bool bootloaderInstallDlg::TransferDataToWindow()
|
||||
{
|
||||
if(gv->curplat == wxT(""))
|
||||
{
|
||||
WARN_DIALOG(wxT("You have not selected a audio device"),
|
||||
wxT("Select a Device"));
|
||||
return false;
|
||||
}
|
||||
int index = gv->plat_id.Index(gv->curplat);
|
||||
|
||||
if(!gv->plat_needsbootloader[index])
|
||||
{
|
||||
WARN_DIALOG(wxT("This Device doesnt need a Bootloader"),
|
||||
wxT("Bootloader"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(gv->plat_bootloadermethod[index] != wxT("ipodpatcher") && gv->plat_bootloadermethod[index] != wxT("sansapatcher"))
|
||||
{
|
||||
m_devicepos->Show(true);
|
||||
}else
|
||||
{
|
||||
m_devicepos->Show(false);
|
||||
}
|
||||
if(gv->plat_bootloadermethod[index] == wxT("fwpatcher"))
|
||||
{
|
||||
m_firmwarepos->Show(true);
|
||||
}else
|
||||
{
|
||||
m_firmwarepos->Show(false);
|
||||
}
|
||||
|
||||
m_devicepos->setDefault();
|
||||
m_firmwarepos->setDefault();
|
||||
return true;
|
||||
}
|
||||
////////////////////////////////////////////////
|
||||
//// Talk file creation
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
|
||||
IMPLEMENT_CLASS( talkInstallDlg, wxDialog )
|
||||
|
||||
BEGIN_EVENT_TABLE( talkInstallDlg, wxDialog )
|
||||
EVT_BUTTON(ID_BROWSE_ENC_BTN, talkInstallDlg::OnBrowseEncBtn)
|
||||
EVT_BUTTON(ID_BROWSE_TTS_BTN, talkInstallDlg::OnBrowseTtsBtn)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
talkInstallDlg::talkInstallDlg(TalkFileCreator* talkcreator )
|
||||
{
|
||||
m_talkCreator = talkcreator;
|
||||
Init();
|
||||
}
|
||||
|
||||
talkInstallDlg::talkInstallDlg(TalkFileCreator* talkcreator, wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
m_talkCreator = talkcreator;
|
||||
Init();
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
}
|
||||
|
||||
void talkInstallDlg::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// bitmap
|
||||
wxBitmap sidebmp(wizard_xpm);
|
||||
|
||||
ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
|
||||
sideimage->SetBitmap(sidebmp);
|
||||
wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
|
||||
|
||||
wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// Device position
|
||||
m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
|
||||
wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// Encoder
|
||||
wxStaticBox* WxStaticBoxSizer2_StaticBoxObj = new wxStaticBox(this,
|
||||
wxID_ANY, wxT("Encoder"));
|
||||
wxStaticBoxSizer* WxStaticBoxSizer2 =
|
||||
new wxStaticBoxSizer(WxStaticBoxSizer2_StaticBoxObj,wxVERTICAL);
|
||||
wxBoxSizer3->Add(WxStaticBoxSizer2,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
m_Enc = new wxComboBox(this,ID_ENC_CBX,wxT("lame"),
|
||||
wxDefaultPosition,wxDefaultSize,m_talkCreator->getSupportedEnc(),wxCB_READONLY);
|
||||
m_Enc->SetToolTip(wxT("Select your Encoder."));
|
||||
m_Enc->SetHelpText(wxT("Select your Encoder."));
|
||||
WxStaticBoxSizer2->Add(m_Enc,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
wxStaticText* enc_desc = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("Select the Encoder executable"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
WxStaticBoxSizer2->Add(enc_desc, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
WxStaticBoxSizer2->Add(horizontalSizer, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_EncExe = new wxTextCtrl(this,wxID_ANY,gv->pathToEnc);
|
||||
m_EncExe->SetToolTip(wxT("Type the folder where your Encoder exe is"));
|
||||
m_EncExe->SetHelpText(wxT("Type the folder where your Encoder exe is"));
|
||||
horizontalSizer->Add(m_EncExe,0,wxGROW | wxALL,5);
|
||||
|
||||
m_browseEncBtn = new wxButton(this, ID_BROWSE_ENC_BTN, wxT("Browse"),
|
||||
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
|
||||
wxT("BrowseEncBtn"));
|
||||
m_browseEncBtn->SetToolTip(wxT("Browse for your Encoder Exe"));
|
||||
m_browseEncBtn->SetHelpText(wxT("Browse for your Encoder exe"));
|
||||
horizontalSizer->Add(m_browseEncBtn,0,wxGROW | wxALL,5);
|
||||
|
||||
wxStaticText* enc_desc_opt = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("Encoder Options"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
WxStaticBoxSizer2->Add(enc_desc_opt, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_EncOpts = new wxTextCtrl(this,wxID_ANY,m_talkCreator->getEncOpts(wxT("lame")));
|
||||
m_EncOpts->SetToolTip(wxT("Encoder Options"));
|
||||
m_EncOpts->SetHelpText(wxT("Encoder Options"));
|
||||
WxStaticBoxSizer2->Add(m_EncOpts, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// TTS
|
||||
wxStaticBox* WxStaticBoxSizer3_StaticBoxObj = new wxStaticBox(this,
|
||||
wxID_ANY, wxT("Text to Speach"));
|
||||
wxStaticBoxSizer* WxStaticBoxSizer3 =
|
||||
new wxStaticBoxSizer(WxStaticBoxSizer3_StaticBoxObj,wxVERTICAL);
|
||||
wxBoxSizer3->Add(WxStaticBoxSizer3,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
m_Tts = new wxComboBox(this,ID_TTS_CBX,wxT("espeak"),
|
||||
wxDefaultPosition,wxDefaultSize,m_talkCreator->getSupportedTTS(),wxCB_READONLY);
|
||||
m_Tts->SetToolTip(wxT("Select your TTS."));
|
||||
m_Tts->SetHelpText(wxT("Select your TTS."));
|
||||
WxStaticBoxSizer3->Add(m_Tts,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
wxStaticText* tts_desc = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("Select the TTS executable"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
WxStaticBoxSizer3->Add(tts_desc, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
wxBoxSizer* horizontalSizer2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
WxStaticBoxSizer3->Add(horizontalSizer2, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_TtsExe = new wxTextCtrl(this,wxID_ANY,gv->pathToTts);
|
||||
m_TtsExe->SetToolTip(wxT("Type the folder where your TTS exe is"));
|
||||
m_TtsExe->SetHelpText(wxT("Type the folder where your TTS exe is"));
|
||||
horizontalSizer2->Add(m_TtsExe,0,wxGROW | wxALL,5);
|
||||
|
||||
m_browseTtsBtn = new wxButton(this, ID_BROWSE_TTS_BTN, wxT("Browse"),
|
||||
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
|
||||
wxT("BrowseEncBtn"));
|
||||
m_browseTtsBtn->SetToolTip(wxT("Browse for your Encoder Exe"));
|
||||
m_browseTtsBtn->SetHelpText(wxT("Browse for your Encoder exe"));
|
||||
horizontalSizer2->Add(m_browseTtsBtn,0,wxGROW | wxALL,5);
|
||||
|
||||
wxStaticText* tts_desc_opt = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("TTS Options"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
WxStaticBoxSizer3->Add(tts_desc_opt, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_TtsOpts = new wxTextCtrl(this,wxID_ANY,m_talkCreator->getTTsOpts(wxT("espeak")));
|
||||
m_TtsOpts->SetToolTip(wxT("TTS Options"));
|
||||
m_TtsOpts->SetHelpText(wxT("TTS Options"));
|
||||
WxStaticBoxSizer3->Add(m_TtsOpts, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_OverwriteWave = new wxCheckBox(this,wxID_ANY,wxT("Overwrite Wav"));
|
||||
m_OverwriteWave->SetToolTip(wxT("Overwrite Wavefiles"));
|
||||
m_OverwriteWave->SetHelpText(wxT("Overwrite Wavefiles"));
|
||||
wxBoxSizer3->Add(m_OverwriteWave,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
m_OverwriteTalk = new wxCheckBox(this,wxID_ANY,wxT("Overwrite Talk"));
|
||||
m_OverwriteTalk->SetToolTip(wxT("Overwrite Talkfiles"));
|
||||
m_OverwriteTalk->SetHelpText(wxT("Overwrite Talkfiles"));
|
||||
wxBoxSizer3->Add(m_OverwriteTalk,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
m_RemoveWave = new wxCheckBox(this,wxID_ANY,wxT("Remove Wav"));
|
||||
m_RemoveWave->SetToolTip(wxT("Remove Wavfiles"));
|
||||
m_RemoveWave->SetHelpText(wxT("Remove Wavfiles"));
|
||||
wxBoxSizer3->Add(m_RemoveWave,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
m_Recursive = new wxCheckBox(this,wxID_ANY,wxT("Recursive"));
|
||||
m_Recursive->SetToolTip(wxT("Recursive"));
|
||||
m_Recursive->SetHelpText(wxT("Recursive"));
|
||||
wxBoxSizer3->Add(m_Recursive,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
m_StripExtensions = new wxCheckBox(this,wxID_ANY,wxT("Strip Extensions"));
|
||||
m_StripExtensions->SetToolTip(wxT("Strip Extensions"));
|
||||
m_StripExtensions->SetHelpText(wxT("Strip Extensions"));
|
||||
wxBoxSizer3->Add(m_StripExtensions,0,wxALIGN_CENTER_HORIZONTAL|wxGROW | wxALL, 5);
|
||||
|
||||
OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
|
||||
topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
// controls at the bottom
|
||||
wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
|
||||
topSizer->Add(wxBoxSizer7, 0, wxGROW | wxALL, 5);
|
||||
|
||||
}
|
||||
|
||||
//init the local variables
|
||||
void talkInstallDlg::Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// create the window
|
||||
bool talkInstallDlg::Create( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
|
||||
if (!wxDialog::Create( parent, id, caption, pos, size, style ))
|
||||
return false;
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
Centre();
|
||||
return true;
|
||||
}
|
||||
|
||||
void talkInstallDlg::OnBrowseEncBtn(wxCommandEvent& event)
|
||||
{
|
||||
const wxString& temp = wxFileSelector(
|
||||
wxT("Please select the location of your encoder"), wxT(""),
|
||||
wxT(""),wxT(""),wxT("*.*"),0, this);
|
||||
|
||||
if (!temp.empty())
|
||||
{
|
||||
m_EncExe->SetValue(temp);
|
||||
}
|
||||
}
|
||||
|
||||
void talkInstallDlg::OnBrowseTtsBtn(wxCommandEvent& event)
|
||||
{
|
||||
const wxString& temp = wxFileSelector(
|
||||
wxT("Please select the location of your TTS engine"), wxT(""),
|
||||
wxT(""),wxT(""),wxT("*.*"),0, this);
|
||||
|
||||
|
||||
if (!temp.empty())
|
||||
{
|
||||
m_TtsExe->SetValue(temp);
|
||||
}
|
||||
}
|
||||
|
||||
// tranver data from the controls
|
||||
bool talkInstallDlg::TransferDataFromWindow()
|
||||
{
|
||||
gv->curdestdir = m_devicepos->getDevicePos();
|
||||
if(!wxDirExists(gv->curdestdir))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Devicepostion is not valid"),
|
||||
wxT("Select a Deviceposition"));
|
||||
gv->curdestdir = wxT("");
|
||||
return false;
|
||||
}
|
||||
m_talkCreator->setDir(gv->curdestdir);
|
||||
|
||||
gv->pathToEnc = m_EncExe->GetValue();
|
||||
if(!wxFileExists(gv->pathToEnc))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Encoder exe is not valid"),
|
||||
wxT("Select an Encoder"));
|
||||
gv->pathToEnc = wxT("");
|
||||
return false;
|
||||
}
|
||||
m_talkCreator->setEncexe(gv->pathToEnc);
|
||||
|
||||
gv->pathToTts = m_TtsExe->GetValue();
|
||||
if(!wxFileExists(gv->pathToTts))
|
||||
{
|
||||
WARN_DIALOG(wxT("The TTs exe is not valid"),
|
||||
wxT("Select an TTS engine"));
|
||||
gv->pathToTts = wxT("");
|
||||
return false;
|
||||
}
|
||||
m_talkCreator->setTTSexe(gv->pathToTts);
|
||||
|
||||
m_talkCreator->setTTsType(m_Tts->GetValue());
|
||||
m_talkCreator->setEncType(m_Enc->GetValue());
|
||||
|
||||
|
||||
m_talkCreator->setOverwriteTalk(m_OverwriteWave->IsChecked());
|
||||
m_talkCreator->setOverwriteWav(m_OverwriteTalk->IsChecked());
|
||||
m_talkCreator->setRemoveWav(m_RemoveWave->IsChecked());
|
||||
m_talkCreator->setRecursive(m_Recursive->IsChecked());
|
||||
m_talkCreator->setStripExtensions(m_StripExtensions->IsChecked());
|
||||
|
||||
m_talkCreator->setEncOpts(m_EncOpts->GetValue());
|
||||
m_talkCreator->setTTsOpts(m_TtsOpts->GetValue());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// tranver data to the controls
|
||||
bool talkInstallDlg::TransferDataToWindow()
|
||||
{
|
||||
m_devicepos->setDefault();
|
||||
|
||||
m_OverwriteWave->SetValue(true);
|
||||
m_OverwriteTalk->SetValue(true);
|
||||
m_RemoveWave->SetValue(true);
|
||||
m_Recursive->SetValue(true);
|
||||
m_StripExtensions->SetValue(false);
|
||||
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
//// Font Installation
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
|
||||
IMPLEMENT_CLASS( fontInstallDlg, wxDialog )
|
||||
|
||||
BEGIN_EVENT_TABLE( fontInstallDlg, wxDialog )
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
fontInstallDlg::fontInstallDlg( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
fontInstallDlg::fontInstallDlg( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
}
|
||||
|
||||
void fontInstallDlg::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// bitmap
|
||||
wxBitmap sidebmp(wizard_xpm);
|
||||
|
||||
ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
|
||||
sideimage->SetBitmap(sidebmp);
|
||||
wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
|
||||
|
||||
wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
|
||||
wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
|
||||
OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
|
||||
topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
// controls at the bottom
|
||||
wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
|
||||
topSizer->Add(wxBoxSizer7, 0, wxGROW | wxALL, 5);
|
||||
|
||||
}
|
||||
|
||||
//init the local variables
|
||||
void fontInstallDlg::Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// create the window
|
||||
bool fontInstallDlg::Create( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
|
||||
if (!wxDialog::Create( parent, id, caption, pos, size, style ))
|
||||
return false;
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
Centre();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// tranver data from the controls
|
||||
bool fontInstallDlg::TransferDataFromWindow()
|
||||
{
|
||||
gv->curdestdir = m_devicepos->getDevicePos();
|
||||
if(!wxDirExists(gv->curdestdir))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Devicepostion is not valid"),
|
||||
wxT("Select a Deviceposition"));
|
||||
gv->curdestdir = wxT("");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// tranver data to the controls
|
||||
bool fontInstallDlg::TransferDataToWindow()
|
||||
{
|
||||
m_devicepos->setDefault();
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
//// Rockbox DeInstallation
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
IMPLEMENT_CLASS( rockboxDeInstallDlg, wxDialog )
|
||||
|
||||
BEGIN_EVENT_TABLE( rockboxDeInstallDlg, wxDialog )
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
rockboxDeInstallDlg::rockboxDeInstallDlg( )
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
rockboxDeInstallDlg::rockboxDeInstallDlg( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
}
|
||||
|
||||
void rockboxDeInstallDlg::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// bitmap
|
||||
wxBitmap sidebmp(wizard_xpm);
|
||||
|
||||
ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
|
||||
sideimage->SetBitmap(sidebmp);
|
||||
wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
|
||||
|
||||
wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
|
||||
wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// Full deinstallation ?
|
||||
wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY,
|
||||
wxT("Rockbox Utility normally uninstalls Rockbox using an uninstall\n"
|
||||
"file created during installation. This means that when Rockbox is\n"
|
||||
"uninstalled all your configuration files are preserved. However,\n"
|
||||
"you can also perform a full uninstall, which will completely\n"
|
||||
"remove all traces of Rockbox from your system, and can be used\n"
|
||||
"even if Rockbox was previously installed manually."));
|
||||
wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5);
|
||||
|
||||
wxCheckBox* FullCheckBox = new wxCheckBox(this, ID_FULL_CHCKBX,
|
||||
wxT("Perform a full uninstall"));
|
||||
wxBoxSizer3->Add(FullCheckBox, 0, wxALL, 5);
|
||||
|
||||
// controls at the bottom
|
||||
OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
|
||||
topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
}
|
||||
|
||||
//init the local variables
|
||||
void rockboxDeInstallDlg::Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// create the window
|
||||
bool rockboxDeInstallDlg::Create( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
if (!wxDialog::Create( parent, id, caption, pos, size, style ))
|
||||
return false;
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
Centre();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// tranver data from the controls
|
||||
bool rockboxDeInstallDlg::TransferDataFromWindow()
|
||||
{
|
||||
|
||||
gv->curdestdir = m_devicepos->getDevicePos();
|
||||
if(!wxDirExists(gv->curdestdir))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Devicepostion is not valid"),
|
||||
wxT("Select a Deviceposition"));
|
||||
gv->curdestdir = wxT("");
|
||||
return false;
|
||||
}
|
||||
|
||||
wxCheckBox* fullchkbx = (wxCheckBox*) FindWindow(ID_FULL_CHCKBX);
|
||||
gv->curisfull = fullchkbx->IsChecked();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// tranver data to the controls
|
||||
bool rockboxDeInstallDlg::TransferDataToWindow()
|
||||
{
|
||||
m_devicepos->setDefault();
|
||||
return true;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
//// Themes Installation
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
IMPLEMENT_CLASS( themesInstallDlg, wxDialog )
|
||||
|
||||
BEGIN_EVENT_TABLE( themesInstallDlg, wxDialog )
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
themesInstallDlg::themesInstallDlg( )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
themesInstallDlg::themesInstallDlg( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
}
|
||||
|
||||
void themesInstallDlg::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
wxBoxSizer* topHoriSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(topHoriSizer, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// bitmap
|
||||
wxBitmap sidebmp(wizard_xpm);
|
||||
|
||||
ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
|
||||
sideimage->SetBitmap(sidebmp);
|
||||
topHoriSizer->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
|
||||
|
||||
wxBoxSizer* mainVertiSizer = new wxBoxSizer(wxVERTICAL);
|
||||
topHoriSizer->Add(mainVertiSizer, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxBoxSizer* wxBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
|
||||
mainVertiSizer->Add(wxBoxSizer4, 0, wxGROW|wxALL, 0);
|
||||
|
||||
wxBoxSizer* wxBoxSizer5 = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer4->Add(wxBoxSizer5, 0, wxGROW|wxALL, 0);
|
||||
|
||||
m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
|
||||
wxBoxSizer5->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_theme = new ThemeCtrl(this,ID_THEME);
|
||||
wxBoxSizer5->Add(m_theme, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// controls at the bottom
|
||||
OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
|
||||
topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// create the window
|
||||
bool themesInstallDlg::Create( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
|
||||
if (!wxDialog::Create( parent, id, caption, pos, size, style ))
|
||||
return false;
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
Centre();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// tranver data from the controls
|
||||
bool themesInstallDlg::TransferDataFromWindow()
|
||||
{
|
||||
|
||||
gv->curdestdir = m_devicepos->getDevicePos();
|
||||
if(!wxDirExists(gv->curdestdir))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Devicepostion is not valid"),
|
||||
wxT("Select a Deviceposition"));
|
||||
gv->curdestdir = wxT("");
|
||||
return false;
|
||||
}
|
||||
|
||||
gv->themesToInstall.Clear();
|
||||
gv->themesToInstall = m_theme->getThemesToInstall();
|
||||
|
||||
if(gv->themesToInstall.GetCount() == 0)
|
||||
{
|
||||
WARN_DIALOG(wxT("You have not selected a Theme to Install"), wxT("Select a Theme"));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// tranver data to the controls
|
||||
bool themesInstallDlg::TransferDataToWindow()
|
||||
{
|
||||
if(gv->curplat == wxT(""))
|
||||
{
|
||||
WARN_DIALOG(wxT("You have not selected a audio device"),
|
||||
wxT("Select a Device"));
|
||||
return false;
|
||||
}
|
||||
|
||||
m_devicepos->setDefault();
|
||||
m_theme->setDevice(gv->curplat);
|
||||
return true;
|
||||
}
|
||||
////////////////////////////////////////////////
|
||||
//// Rockbox Installation
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
IMPLEMENT_CLASS( rockboxInstallDlg, wxDialog )
|
||||
|
||||
BEGIN_EVENT_TABLE( rockboxInstallDlg, wxDialog )
|
||||
EVT_RADIOBOX(ID_BUILD_BOX, rockboxInstallDlg::OnBuildBox)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
rockboxInstallDlg::rockboxInstallDlg( )
|
||||
{
|
||||
}
|
||||
|
||||
rockboxInstallDlg::rockboxInstallDlg( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
}
|
||||
|
||||
void rockboxInstallDlg::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
wxBoxSizer* wxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(wxBoxSizer2, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// bitmap
|
||||
wxBitmap sidebmp(wizard_xpm);
|
||||
|
||||
ImageCtrl* sideimage = new ImageCtrl(this,wxID_ANY);
|
||||
sideimage->SetBitmap(sidebmp);
|
||||
wxBoxSizer2->Add(sideimage,0,wxALIGN_LEFT | wxALL,5);
|
||||
|
||||
wxBoxSizer* wxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer2->Add(wxBoxSizer3, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_devicepos = new DevicePositionCtrl(this,ID_DEVICEPOS);
|
||||
wxBoxSizer3->Add(m_devicepos, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// Build information
|
||||
wxStaticText* WxStaticText1 = new wxStaticText(this, wxID_ANY,
|
||||
wxT("Please select the Rockbox version you would like "
|
||||
"to install on your audio\ndevice:"));
|
||||
wxBoxSizer3->Add(WxStaticText1,0,wxGROW | wxALL,5);
|
||||
|
||||
wxArrayString array;
|
||||
array.Add(wxT("Rockbox stable version (") + gv->last_release + wxT(")"));
|
||||
array.Add(wxT("Archived Build"));
|
||||
array.Add(wxT("Current Build "));
|
||||
|
||||
wxRadioBox* BuildRadioBox = new wxRadioBox(this, ID_BUILD_BOX, wxT("Version"),
|
||||
wxDefaultPosition, wxDefaultSize, array, 0, wxRA_SPECIFY_ROWS);
|
||||
wxBoxSizer3->Add(BuildRadioBox, 0, wxGROW | wxALL, 5);
|
||||
|
||||
wxStaticBox* WxStaticBox1 = new wxStaticBox(this, wxID_ANY, wxT("Details:"));
|
||||
wxStaticBoxSizer* WxStaticBoxSizer2 = new wxStaticBoxSizer(WxStaticBox1,
|
||||
wxVERTICAL);
|
||||
wxStaticText* DetailText = new wxStaticText(this, ID_DETAIL_TXT, wxT(""));
|
||||
wxBoxSizer3->Add(WxStaticBoxSizer2, 1, wxGROW | wxALL, 5);
|
||||
WxStaticBoxSizer2->Add(DetailText, 1, wxGROW | wxALL, 5);
|
||||
|
||||
wxStaticText* WxStaticText2 = new wxStaticText(this, wxID_ANY,
|
||||
wxT("Rockbox Utility stores copies of Rockbox it has downloaded on the\n"
|
||||
"local hard disk to save network traffic. If your local copy is\n"
|
||||
"no longer working, tick this box to download a fresh copy.") );
|
||||
wxBoxSizer3->Add(WxStaticText2, 0 , wxALL, 5);
|
||||
|
||||
wxCheckBox* NoCacheCheckBox = new wxCheckBox(this, ID_NOCACHE_CHCKBX,
|
||||
wxT("Don't use locally cached copies of Rockbox") );
|
||||
wxBoxSizer3->Add(NoCacheCheckBox, 0, wxALL, 5);
|
||||
// controls at the bottom
|
||||
OkCancelCtrl* okCancel = new OkCancelCtrl(this,wxID_ANY);
|
||||
topSizer->Add(okCancel, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
}
|
||||
|
||||
// create the window
|
||||
bool rockboxInstallDlg::Create( wxWindow* parent,
|
||||
wxWindowID id, const wxString& caption,
|
||||
const wxPoint& pos, const wxSize& size, long style )
|
||||
{
|
||||
|
||||
if (!wxDialog::Create( parent, id, caption, pos, size, style ))
|
||||
return false;
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
Centre();
|
||||
return true;
|
||||
}
|
||||
|
||||
void rockboxInstallDlg::OnBuildBox(wxCommandEvent& event)
|
||||
{
|
||||
wxString str;
|
||||
wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
|
||||
wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX);
|
||||
wxStaticText* DetailText = (wxStaticText*)FindWindow(ID_DETAIL_TXT);
|
||||
|
||||
switch(BuildRadioBox->GetSelection() )
|
||||
{
|
||||
case BUILD_RELEASE:
|
||||
str = _("This is the last released version of Rockbox, and is the\n"
|
||||
"recommended version to install.");
|
||||
NoCacheCheckBox->Enable();
|
||||
break;
|
||||
case BUILD_DAILY:
|
||||
str = _("These are automatically built each day from the current\n"
|
||||
"development source code. This generally has more features\n"
|
||||
"than the last release but may be much less stable. Features\n"
|
||||
"may change regularly.");
|
||||
NoCacheCheckBox->Enable();
|
||||
break;
|
||||
case BUILD_BLEEDING:
|
||||
str = _("This is the absolute up to the minute Rockbox built after\n"
|
||||
"the last change was made.\n\n"
|
||||
"Note: This option will always download a fresh copy from the\n"
|
||||
"web server.\n");
|
||||
NoCacheCheckBox->Enable(false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
DetailText->SetLabel(str);
|
||||
|
||||
this->GetSizer()->Layout();
|
||||
this->GetSizer()->Fit(this);
|
||||
this->GetSizer()->SetSizeHints(this);
|
||||
Refresh();
|
||||
}
|
||||
|
||||
|
||||
// tranver data from the controls
|
||||
bool rockboxInstallDlg::TransferDataFromWindow()
|
||||
{
|
||||
wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
|
||||
wxCheckBox* NoCacheCheckBox = (wxCheckBox*) FindWindow(ID_NOCACHE_CHCKBX);
|
||||
|
||||
gv->curdestdir = m_devicepos->getDevicePos();
|
||||
if(!wxDirExists(gv->curdestdir))
|
||||
{
|
||||
WARN_DIALOG(wxT("The Devicepostion is not valid"),
|
||||
wxT("Select a Deviceposition"));
|
||||
gv->curdestdir = wxT("");
|
||||
return false;
|
||||
}
|
||||
|
||||
gv->curbuild = BuildRadioBox->GetSelection();
|
||||
gv->nocache = (gv->curbuild == BUILD_BLEEDING) ? true :
|
||||
NoCacheCheckBox->IsChecked();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// tranver data to the controls
|
||||
bool rockboxInstallDlg::TransferDataToWindow()
|
||||
{
|
||||
m_devicepos->setDefault();
|
||||
|
||||
if(gv->curplat == wxT(""))
|
||||
{
|
||||
WARN_DIALOG(wxT("You have not selected a audio device"),
|
||||
wxT("Select a Device"));
|
||||
return false;
|
||||
}
|
||||
|
||||
wxRadioBox* BuildRadioBox = (wxRadioBox*) FindWindow(ID_BUILD_BOX);
|
||||
|
||||
int index =gv->plat_id.Index(gv->curplat);
|
||||
|
||||
wxCommandEvent updateradiobox(wxEVT_COMMAND_RADIOBOX_SELECTED,
|
||||
ID_BUILD_BOX);
|
||||
|
||||
if (gv->plat_released[index] )
|
||||
{
|
||||
BuildRadioBox->Enable(BUILD_RELEASE, true);
|
||||
BuildRadioBox->SetSelection(BUILD_RELEASE);
|
||||
} else {
|
||||
BuildRadioBox->Enable(BUILD_RELEASE, false);
|
||||
BuildRadioBox->SetSelection(BUILD_BLEEDING);
|
||||
|
||||
}
|
||||
wxPostEvent(this, updateradiobox);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1,261 +0,0 @@
|
|||
#ifndef INSTALL_DIALOGS_H_INCLUDED
|
||||
#define INSTALL_DIALOGS_H_INCLUDED
|
||||
|
||||
#include "rbutil.h"
|
||||
#include "talkfile.h"
|
||||
|
||||
#include "rbutilCtrls.h"
|
||||
class bootloaderInstallDlg : public wxDialog
|
||||
{
|
||||
DECLARE_CLASS( bootloaderInstallDlg )
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DEVICEPOS = 1002,
|
||||
ID_FIRMWARE = 1003,
|
||||
}; //End of Enum
|
||||
public:
|
||||
bootloaderInstallDlg( );
|
||||
bootloaderInstallDlg( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Bootloader Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
// Member initialization
|
||||
void Init();
|
||||
//Creation
|
||||
bool Create( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Bootloader Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
bool TransferDataFromWindow();
|
||||
bool TransferDataToWindow();
|
||||
|
||||
private:
|
||||
|
||||
DevicePositionCtrl* m_devicepos;
|
||||
FirmwarePositionCtrl* m_firmwarepos;
|
||||
|
||||
|
||||
};
|
||||
|
||||
class talkInstallDlg : public wxDialog
|
||||
{
|
||||
DECLARE_CLASS( talkInstallDlg )
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DEVICEPOS = 1002,
|
||||
ID_BROWSE_ENC_BTN = 1003,
|
||||
ID_BROWSE_TTS_BTN = 1004,
|
||||
ID_TTS_CBX = 1005,
|
||||
ID_ENC_CBX = 1006,
|
||||
}; //End of Enum
|
||||
public:
|
||||
talkInstallDlg(TalkFileCreator* talkcreator);
|
||||
talkInstallDlg(TalkFileCreator* talkcreator, wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Talk file creation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
/// Member initialization
|
||||
void Init();
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Talk file creation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
void OnBrowseEncBtn(wxCommandEvent& event);
|
||||
void OnBrowseTtsBtn(wxCommandEvent& event);
|
||||
|
||||
bool TransferDataFromWindow();
|
||||
bool TransferDataToWindow();
|
||||
|
||||
private:
|
||||
TalkFileCreator* m_talkCreator;
|
||||
|
||||
DevicePositionCtrl* m_devicepos;
|
||||
|
||||
wxTextCtrl* m_EncExe;
|
||||
wxButton* m_browseEncBtn;
|
||||
wxTextCtrl* m_EncOpts;
|
||||
wxComboBox* m_Enc;
|
||||
|
||||
wxTextCtrl* m_TtsExe;
|
||||
wxButton* m_browseTtsBtn;
|
||||
wxTextCtrl* m_TtsOpts;
|
||||
wxComboBox* m_Tts;
|
||||
|
||||
|
||||
wxCheckBox* m_OverwriteWave;
|
||||
wxCheckBox* m_OverwriteTalk;
|
||||
wxCheckBox* m_RemoveWave;
|
||||
wxCheckBox* m_Recursive;
|
||||
wxCheckBox* m_StripExtensions;
|
||||
|
||||
};
|
||||
|
||||
|
||||
class fontInstallDlg : public wxDialog
|
||||
{
|
||||
DECLARE_CLASS( fontInstallDlg )
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DEVICEPOS = 1002,
|
||||
}; //End of Enum
|
||||
public:
|
||||
fontInstallDlg( );
|
||||
fontInstallDlg( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Font Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
/// Member initialization
|
||||
void Init();
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Font Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
bool TransferDataFromWindow();
|
||||
bool TransferDataToWindow();
|
||||
|
||||
private:
|
||||
DevicePositionCtrl* m_devicepos;
|
||||
};
|
||||
|
||||
|
||||
class rockboxDeInstallDlg : public wxDialog
|
||||
{
|
||||
DECLARE_CLASS( rockboxDeInstallDlg )
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DEVICEPOS = 1002,
|
||||
ID_FULL_CHCKBX = 1003,
|
||||
}; //End of Enum
|
||||
public:
|
||||
rockboxDeInstallDlg( );
|
||||
rockboxDeInstallDlg( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Rockbox Deinstallation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style =wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
/// Member initialization
|
||||
void Init();
|
||||
/// Creation
|
||||
bool Create( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Rockbox Deinstallation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style =wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
bool TransferDataFromWindow();
|
||||
bool TransferDataToWindow();
|
||||
|
||||
private:
|
||||
DevicePositionCtrl* m_devicepos;
|
||||
};
|
||||
|
||||
class themesInstallDlg : public wxDialog
|
||||
{
|
||||
DECLARE_CLASS( themesInstallDlg )
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DEVICE = 1001,
|
||||
ID_DEVICEPOS = 1002,
|
||||
ID_THEME = 1006,
|
||||
}; //End of Enum
|
||||
public:
|
||||
themesInstallDlg( );
|
||||
themesInstallDlg( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Themes Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
|
||||
// Creation
|
||||
bool Create( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Themes Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
bool TransferDataFromWindow();
|
||||
bool TransferDataToWindow();
|
||||
|
||||
private:
|
||||
wxString currentPreview;
|
||||
DevicePositionCtrl* m_devicepos;
|
||||
ThemeCtrl* m_theme;
|
||||
|
||||
};
|
||||
|
||||
class rockboxInstallDlg : public wxDialog
|
||||
{
|
||||
DECLARE_CLASS( rockboxInstallDlg )
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DEVICEPOS = 1002,
|
||||
ID_BUILD_BOX = 1006,
|
||||
ID_DEVICE_POS_CTRL = 1007,
|
||||
ID_DETAIL_TXT = 1008,
|
||||
ID_NOCACHE_CHCKBX =1009,
|
||||
|
||||
}; //End of Enum
|
||||
public:
|
||||
rockboxInstallDlg( );
|
||||
rockboxInstallDlg( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Rockbox Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
|
||||
// Creation
|
||||
bool Create( wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxString& caption = wxT("Rockbox Installation"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE |wxRESIZE_BORDER );
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
void OnBuildBox(wxCommandEvent& event);
|
||||
|
||||
bool TransferDataFromWindow();
|
||||
bool TransferDataToWindow();
|
||||
|
||||
private:
|
||||
DevicePositionCtrl* m_devicepos;
|
||||
};
|
||||
|
||||
#endif // INSTALL_DIALOGS_H_INCLUDED
|
||||
|
|
@ -1,150 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: installlog.cpp
|
||||
*
|
||||
* Copyright (C) 2006 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "installlog.h"
|
||||
#include "rbutil.h"
|
||||
|
||||
InstallLog::InstallLog(wxString logname, bool CreateLog)
|
||||
{
|
||||
wxString buf;
|
||||
dirtyflag = true;
|
||||
|
||||
if (! CreateLog && ! wxFileExists(logname) ) return;
|
||||
|
||||
logfile = new wxFileConfig(wxEmptyString, wxEmptyString, logname);
|
||||
|
||||
|
||||
if (!logfile)
|
||||
{
|
||||
wxLogWarning(_("Failed to create install log file: ") + logname);
|
||||
return;
|
||||
}
|
||||
|
||||
logfile->SetPath(wxT("/InstallLog"));
|
||||
if (logfile->Exists(wxT("Version")) &&
|
||||
logfile->Read(wxT("Version"), 0l) != LOGFILE_VERSION )
|
||||
{
|
||||
wxLogWarning(_("Logfile version mismatch: ") + logname);
|
||||
delete logfile;
|
||||
return;
|
||||
}
|
||||
|
||||
logfile->Write(wxT("Version"), LOGFILE_VERSION);
|
||||
dirtyflag = false;
|
||||
}
|
||||
|
||||
InstallLog::~InstallLog()
|
||||
{
|
||||
if (dirtyflag) return;
|
||||
|
||||
delete logfile;
|
||||
}
|
||||
|
||||
unsigned int InstallLog::WriteFile(wxString filepath, bool isDir)
|
||||
{
|
||||
wxString key, buf;
|
||||
long installcount = 0;
|
||||
|
||||
if (dirtyflag) return true;
|
||||
|
||||
filepath.Replace(PATH_SEP, wxT("/") );
|
||||
|
||||
if (filepath.GetChar(0) == '/')
|
||||
filepath = filepath.Right(filepath.Len() - 1);
|
||||
|
||||
logfile->SetPath(wxT("/FilePaths"));
|
||||
installcount = logfile->Read(filepath, 0l);
|
||||
|
||||
if (isDir)
|
||||
{
|
||||
filepath.Append(wxT("/" DIRECTORY_KLUDGE) ); // Needed for empty dirs
|
||||
}
|
||||
|
||||
logfile->Write(filepath, ++installcount);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
unsigned int InstallLog::WriteFile(wxArrayString filepaths)
|
||||
{
|
||||
unsigned long i;
|
||||
unsigned int finalrc = false;
|
||||
wxString thisone;
|
||||
|
||||
if (dirtyflag) return true;
|
||||
|
||||
for (i = 0; i < filepaths.GetCount(); i++);
|
||||
{
|
||||
if ( WriteFile(filepaths[i]) )
|
||||
{
|
||||
finalrc++;
|
||||
}
|
||||
}
|
||||
|
||||
return finalrc;
|
||||
}
|
||||
|
||||
wxArrayString* InstallLog::GetInstalledFiles()
|
||||
{
|
||||
wxString curdir = wxT("");
|
||||
|
||||
if (dirtyflag) return NULL;
|
||||
workingAS.Clear();
|
||||
|
||||
EnumerateCurDir(wxT(""));
|
||||
|
||||
wxArrayString* out = new wxArrayString(workingAS);
|
||||
return out;
|
||||
}
|
||||
|
||||
void InstallLog::EnumerateCurDir(wxString curdir)
|
||||
{
|
||||
bool contflag;
|
||||
wxString curname, buf, buf2, pathcache;
|
||||
long dummy;
|
||||
|
||||
buf = wxT("/FilePaths/") + curdir;
|
||||
pathcache = logfile->GetPath();
|
||||
logfile->SetPath(buf);
|
||||
|
||||
contflag = logfile->GetFirstGroup(curname, dummy);
|
||||
while (contflag)
|
||||
{
|
||||
buf = curdir + wxT("/") + curname;
|
||||
buf2 = buf; buf2.Replace(wxT("/"), PATH_SEP);
|
||||
workingAS.Add(buf2);
|
||||
EnumerateCurDir(buf);
|
||||
contflag = logfile->GetNextGroup(curname, dummy);
|
||||
}
|
||||
|
||||
contflag = logfile->GetFirstEntry(curname, dummy);
|
||||
while (contflag)
|
||||
{
|
||||
if (curname != wxT(DIRECTORY_KLUDGE) )
|
||||
{
|
||||
buf = curdir + wxT("" PATH_SEP) + curname;
|
||||
workingAS.Add(buf);
|
||||
}
|
||||
contflag = logfile->GetNextEntry(curname, dummy);
|
||||
}
|
||||
|
||||
logfile->SetPath(pathcache);
|
||||
}
|
||||
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: installlog.h
|
||||
*
|
||||
* Copyright (C) 2006 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef INSTALLLOG_H_INCLUDED
|
||||
#define INSTALLLOG_H_INCLUDED
|
||||
|
||||
#include <wx/wxprec.h>
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
#ifndef WX_PRECOMP
|
||||
#include <wx/wx.h>
|
||||
#endif
|
||||
|
||||
#include <wx/confbase.h>
|
||||
#include <wx/fileconf.h>
|
||||
|
||||
#define LOGFILE_VERSION 1
|
||||
#define DIRECTORY_KLUDGE "_DIRECTORY_MARKER_RECORD_KLUDGE_"
|
||||
class InstallLog
|
||||
{
|
||||
// Class variables
|
||||
wxFileConfig* logfile;
|
||||
|
||||
// Methods
|
||||
public:
|
||||
InstallLog(wxString logname, bool CreateLog = true);
|
||||
~InstallLog();
|
||||
unsigned int WriteFile(wxString filepath, bool isDir = false);
|
||||
unsigned int WriteFile(wxArrayString filepaths);
|
||||
wxArrayString* GetInstalledFiles();
|
||||
|
||||
private:
|
||||
bool dirtyflag;
|
||||
wxArrayString workingAS;
|
||||
// long dummy;
|
||||
|
||||
private:
|
||||
void EnumerateCurDir(wxString curdir);
|
||||
}; // InstallLog
|
||||
|
||||
|
||||
#endif // INSTALLLOG_H_INCLUDED
|
||||
|
|
@ -1,604 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: irivertools.cpp
|
||||
*
|
||||
* Copyright (C) 2007 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "irivertools.h"
|
||||
|
||||
|
||||
const unsigned char munge[] = {
|
||||
0x7a, 0x36, 0xc4, 0x43, 0x49, 0x6b, 0x35, 0x4e, 0xa3, 0x46, 0x25, 0x84,
|
||||
0x4d, 0x73, 0x74, 0x61
|
||||
};
|
||||
|
||||
const unsigned char header_modify[] = "* IHPFIRM-DECODED ";
|
||||
|
||||
const char * const models[] = { "iHP-100", "iHP-120/iHP-140", "H300 series",
|
||||
NULL };
|
||||
|
||||
/* aligns with models array; expected min firmware size */
|
||||
const unsigned int firmware_minsize[] = { 0x100000, 0x100000, 0x200000 };
|
||||
/* aligns with models array; expected max firmware size */
|
||||
const unsigned int firmware_maxsize[] = { 0x200000, 0x200000, 0x400000 };
|
||||
|
||||
const unsigned char header[][16] = {
|
||||
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
|
||||
{ 0x20, 0x03, 0x08, 0x27, 0x24, 0x00, 0x02, 0x30, 0x19, 0x17, 0x65, 0x73,
|
||||
0x85, 0x32, 0x83, 0x22 },
|
||||
{ 0x20, 0x04, 0x03, 0x27, 0x20, 0x50, 0x01, 0x70, 0x80, 0x30, 0x80, 0x06,
|
||||
0x30, 0x19, 0x17, 0x65 }
|
||||
};
|
||||
|
||||
/* begin mkboot.c excerpt */
|
||||
unsigned char image[0x400000 + 0x220 + 0x400000/0x200];
|
||||
|
||||
bool mkboot(wxString infile, wxString outfile,wxString bootloader,int origin)
|
||||
{
|
||||
wxString err;
|
||||
int i;
|
||||
int len,bllen;
|
||||
int actual_length, total_length, binary_length, num_chksums;
|
||||
|
||||
memset(image, 0xff, sizeof(image));
|
||||
|
||||
/* First, read the iriver original firmware into the image */
|
||||
wxFile f;
|
||||
if(!f.Open(infile))
|
||||
{
|
||||
ERR_DIALOG(wxT("Could not open: ") + infile, wxT("mkboot"));
|
||||
return false;
|
||||
}
|
||||
i = f.Read(image,16);
|
||||
if(i < 16) {
|
||||
ERR_DIALOG(wxT("reading header failed"), wxT("mkboot"));
|
||||
return false;
|
||||
}
|
||||
|
||||
/* This is the length of the binary image without the scrambling
|
||||
overhead (but including the ESTFBINR header) */
|
||||
binary_length = image[4] + (image[5] << 8) +
|
||||
(image[6] << 16) + (image[7] << 24);
|
||||
|
||||
/* Read the rest of the binary data, but not the checksum block */
|
||||
len = binary_length+0x200-16;
|
||||
i = f.Read(image+16, len);
|
||||
if(i < len) {
|
||||
ERR_DIALOG(wxT("reading firmware failed"),wxT("mkboot"));
|
||||
return false;
|
||||
}
|
||||
|
||||
f.Close();
|
||||
/* Now, read the boot loader into the image */
|
||||
if(!f.Open(bootloader))
|
||||
{
|
||||
ERR_DIALOG(wxT("Could not open: ") + bootloader, wxT("mkboot"));
|
||||
return false;
|
||||
}
|
||||
|
||||
bllen = f.Length();
|
||||
|
||||
i = f.Read(image+0x220 + origin, bllen);
|
||||
if(i < bllen) {
|
||||
ERR_DIALOG(wxT("reading bootloader failed"), wxT("mkboot"));
|
||||
return false;
|
||||
}
|
||||
|
||||
f.Close();
|
||||
|
||||
if(!f.Open(outfile,wxFile::write))
|
||||
{
|
||||
ERR_DIALOG(wxT("Could not open: ") + outfile, wxT("mkboot"));
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Patch the reset vector to start the boot loader */
|
||||
image[0x220 + 4] = image[origin + 0x220 + 4];
|
||||
image[0x220 + 5] = image[origin + 0x220 + 5];
|
||||
image[0x220 + 6] = image[origin + 0x220 + 6];
|
||||
image[0x220 + 7] = image[origin + 0x220 + 7];
|
||||
|
||||
/* This is the actual length of the binary, excluding all headers */
|
||||
actual_length = origin + bllen;
|
||||
|
||||
/* Patch the ESTFBINR header */
|
||||
image[0x20c] = (actual_length >> 24) & 0xff;
|
||||
image[0x20d] = (actual_length >> 16) & 0xff;
|
||||
image[0x20e] = (actual_length >> 8) & 0xff;
|
||||
image[0x20f] = actual_length & 0xff;
|
||||
|
||||
image[0x21c] = (actual_length >> 24) & 0xff;
|
||||
image[0x21d] = (actual_length >> 16) & 0xff;
|
||||
image[0x21e] = (actual_length >> 8) & 0xff;
|
||||
image[0x21f] = actual_length & 0xff;
|
||||
|
||||
/* This is the length of the binary, including the ESTFBINR header and
|
||||
rounded up to the nearest 0x200 boundary */
|
||||
binary_length = (actual_length + 0x20 + 0x1ff) & 0xfffffe00;
|
||||
|
||||
/* The number of checksums, i.e number of 0x200 byte blocks */
|
||||
num_chksums = binary_length / 0x200;
|
||||
|
||||
/* The total file length, including all headers and checksums */
|
||||
total_length = binary_length + num_chksums + 0x200;
|
||||
|
||||
/* Patch the scrambler header with the new length info */
|
||||
image[0] = total_length & 0xff;
|
||||
image[1] = (total_length >> 8) & 0xff;
|
||||
image[2] = (total_length >> 16) & 0xff;
|
||||
image[3] = (total_length >> 24) & 0xff;
|
||||
|
||||
image[4] = binary_length & 0xff;
|
||||
image[5] = (binary_length >> 8) & 0xff;
|
||||
image[6] = (binary_length >> 16) & 0xff;
|
||||
image[7] = (binary_length >> 24) & 0xff;
|
||||
|
||||
image[8] = num_chksums & 0xff;
|
||||
image[9] = (num_chksums >> 8) & 0xff;
|
||||
image[10] = (num_chksums >> 16) & 0xff;
|
||||
image[11] = (num_chksums >> 24) & 0xff;
|
||||
|
||||
i = f.Write(image,total_length);
|
||||
if(i < total_length) {
|
||||
ERR_DIALOG(wxT("writing bootloader failed"), wxT("mkboot"));
|
||||
return false;
|
||||
}
|
||||
|
||||
f.Close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* end mkboot.c excerpt */
|
||||
|
||||
|
||||
int intable(char *md5, struct sumpairs *table, int len)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < len; i++) {
|
||||
if (strncmp(md5, table[i].unpatched, 32) == 0) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static int testheader( const unsigned char * const data )
|
||||
{
|
||||
const unsigned char * const d = data+16;
|
||||
const char * const * m = models;
|
||||
int index = 0;
|
||||
while( *m )
|
||||
{
|
||||
if( memcmp( header[ index ], d, 16 ) == 0 )
|
||||
return index;
|
||||
index++;
|
||||
m++;
|
||||
};
|
||||
return -1;
|
||||
};
|
||||
|
||||
static void modifyheader( unsigned char * data )
|
||||
{
|
||||
const unsigned char * h = header_modify;
|
||||
int i;
|
||||
for( i=0; i<512; i++ )
|
||||
{
|
||||
if( *h == '\0' )
|
||||
h = header_modify;
|
||||
*data++ ^= *h++;
|
||||
};
|
||||
};
|
||||
|
||||
int iriver_decode(wxString infile_name, wxString outfile_name, unsigned int modify,
|
||||
enum striptype stripmode )
|
||||
{
|
||||
wxString err;
|
||||
wxFile infile;
|
||||
wxFile outfile;
|
||||
int i = -1;
|
||||
unsigned char headerdata[512];
|
||||
unsigned long dwLength1, dwLength2, dwLength3, fp = 0;
|
||||
unsigned char blockdata[16+16];
|
||||
unsigned char out[16];
|
||||
unsigned char newmunge;
|
||||
signed long lenread;
|
||||
int s = 0;
|
||||
unsigned char * pChecksums, * ppChecksums = 0;
|
||||
unsigned char ck;
|
||||
|
||||
if(!infile.Open(infile_name))
|
||||
{
|
||||
ERR_DIALOG(wxT("Could not open: ") + infile_name, wxT("iriver_decode"));
|
||||
return -1;
|
||||
}
|
||||
if(!outfile.Open(outfile_name,wxFile::write))
|
||||
{
|
||||
ERR_DIALOG(wxT("Could not open: ") + outfile_name,
|
||||
wxT("iriver_decode"));
|
||||
return -1;
|
||||
}
|
||||
lenread = infile.Read( headerdata, 512);
|
||||
if( lenread != 512 )
|
||||
{
|
||||
ERR_DIALOG(wxT("This doesn't look like a valid encrypted iHP "
|
||||
"firmware - reason: header length\n"),wxT("iriver_decode"));
|
||||
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return -1;
|
||||
};
|
||||
|
||||
i = testheader( headerdata );
|
||||
if( i == -1 )
|
||||
{
|
||||
ERR_DIALOG( wxT( "This firmware is for an unknown model, or is not"
|
||||
" a valid encrypted iHP firmware\n" ),wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return -1;
|
||||
};
|
||||
fprintf( stderr, "Model %s\n", models[ i ] );
|
||||
|
||||
dwLength1 = headerdata[0] | (headerdata[1]<<8) |
|
||||
(headerdata[2]<<16) | (headerdata[3]<<24);
|
||||
dwLength2 = headerdata[4] | (headerdata[5]<<8) |
|
||||
(headerdata[6]<<16) | (headerdata[7]<<24);
|
||||
dwLength3 = headerdata[8] | (headerdata[9]<<8) |
|
||||
(headerdata[10]<<16) | (headerdata[11]<<24);
|
||||
|
||||
if( dwLength1 < firmware_minsize[ i ] ||
|
||||
dwLength1 > firmware_maxsize[ i ] ||
|
||||
dwLength2 < firmware_minsize[ i ] ||
|
||||
dwLength2 > dwLength1 ||
|
||||
dwLength3 > dwLength1 ||
|
||||
dwLength2>>9 != dwLength3 ||
|
||||
dwLength2+dwLength3+512 != dwLength1 )
|
||||
{
|
||||
ERR_DIALOG( wxT( "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: file 'length' data\n" ),wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return -1;
|
||||
};
|
||||
|
||||
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
||||
|
||||
if( modify )
|
||||
{
|
||||
modifyheader( headerdata );
|
||||
};
|
||||
|
||||
if( stripmode == STRIP_NONE )
|
||||
outfile.Write( headerdata, 512);
|
||||
|
||||
memset( blockdata, 0, 16 );
|
||||
|
||||
ck = 0;
|
||||
while( ( fp < dwLength2 ) &&
|
||||
( lenread = infile.Read( blockdata+16, 16) == 16) )
|
||||
{
|
||||
fp += 16;
|
||||
|
||||
for( i=0; i<16; ++i )
|
||||
{
|
||||
newmunge = blockdata[16+i] ^ munge[i];
|
||||
out[i] = newmunge ^ blockdata[i];
|
||||
blockdata[i] = newmunge;
|
||||
ck += out[i];
|
||||
}
|
||||
|
||||
if( fp > ESTF_SIZE || stripmode != STRIP_HEADER_CHECKSUM_ESTF )
|
||||
{
|
||||
outfile.Write( out+4, 12);
|
||||
outfile.Write( out, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ESTF_SIZE - fp < 16 )
|
||||
{
|
||||
memcpy( out+4, blockdata+16, 12 );
|
||||
memcpy( out, blockdata+28, 4 );
|
||||
outfile.Write( blockdata+16+ESTF_SIZE-fp, ESTF_SIZE-fp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( s == 496 )
|
||||
{
|
||||
s = 0;
|
||||
memset( blockdata, 0, 16 );
|
||||
*ppChecksums++ = ck;
|
||||
ck = 0;
|
||||
}
|
||||
else
|
||||
s+=16;
|
||||
};
|
||||
|
||||
if( fp != dwLength2 )
|
||||
{
|
||||
ERR_DIALOG( wxT( "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: 'length2' mismatch\n" ),wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return -1;
|
||||
};
|
||||
|
||||
fp = 0;
|
||||
ppChecksums = pChecksums;
|
||||
while( ( fp < dwLength3 ) &&
|
||||
( lenread = infile.Read( blockdata, 32 ) ) > 0 )
|
||||
{
|
||||
fp += lenread;
|
||||
if( stripmode == STRIP_NONE )
|
||||
outfile.Write( blockdata, lenread );
|
||||
if( memcmp( ppChecksums, blockdata, lenread ) != 0 )
|
||||
{
|
||||
ERR_DIALOG( wxT( "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: Checksum mismatch!" ),wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return -1;
|
||||
};
|
||||
ppChecksums += lenread;
|
||||
};
|
||||
|
||||
if( fp != dwLength3 )
|
||||
{
|
||||
ERR_DIALOG(wxT( "This doesn't look like a valid encrypted "
|
||||
"iHP firmware - reason: 'length3' mismatch\n" ),wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return -1;
|
||||
};
|
||||
|
||||
|
||||
fprintf( stderr, "File decoded correctly and all checksums matched!\n" );
|
||||
switch( stripmode )
|
||||
{
|
||||
default:
|
||||
case STRIP_NONE:
|
||||
fprintf(stderr, "Output file contains all headers and "
|
||||
"checksums\n");
|
||||
break;
|
||||
case STRIP_HEADER_CHECKSUM:
|
||||
fprintf( stderr, "NB: output file contains only ESTFBINR header"
|
||||
" and decoded firmware code\n" );
|
||||
break;
|
||||
case STRIP_HEADER_CHECKSUM_ESTF:
|
||||
fprintf( stderr, "NB: output file contains only raw decoded "
|
||||
"firmware code\n" );
|
||||
break;
|
||||
};
|
||||
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return 0;
|
||||
|
||||
};
|
||||
|
||||
int iriver_encode(wxString infile_name, wxString outfile_name, unsigned int modify )
|
||||
{
|
||||
wxString err;
|
||||
wxFile infile;
|
||||
wxFile outfile;
|
||||
int i = -1;
|
||||
unsigned char headerdata[512];
|
||||
unsigned long dwLength1, dwLength2, dwLength3, fp = 0;
|
||||
unsigned char blockdata[16+16];
|
||||
unsigned char out[16];
|
||||
unsigned char newmunge;
|
||||
signed long lenread;
|
||||
int s = 0;
|
||||
unsigned char * pChecksums, * ppChecksums;
|
||||
unsigned char ck;
|
||||
|
||||
if(!infile.Open(infile_name,wxFile::read))
|
||||
{
|
||||
ERR_DIALOG(wxT("Could not open: ") + infile_name, wxT("iriver_decode"));
|
||||
return -1;
|
||||
}
|
||||
if(!outfile.Open(outfile_name,wxFile::write))
|
||||
{
|
||||
ERR_DIALOG(wxT("Could not open: ") + outfile_name,
|
||||
wxT("iriver_decode"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
lenread = infile.Read( headerdata, 512 );
|
||||
if( lenread != 512 )
|
||||
{
|
||||
ERR_DIALOG(wxT("This doesn't look like a valid decoded "
|
||||
"iHP firmware - reason: header length\n"), wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
};
|
||||
|
||||
if( modify )
|
||||
{
|
||||
modifyheader( headerdata ); /* reversible */
|
||||
};
|
||||
|
||||
i = testheader( headerdata );
|
||||
if( i == -1 )
|
||||
{
|
||||
ERR_DIALOG(wxT("This firmware is for an unknown model, or is not"
|
||||
" a valid decoded iHP firmware\n"), wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
};
|
||||
fprintf( stderr, "Model %s\n", models[ i ] );
|
||||
|
||||
dwLength1 = headerdata[0] | (headerdata[1]<<8) |
|
||||
(headerdata[2]<<16) | (headerdata[3]<<24);
|
||||
dwLength2 = headerdata[4] | (headerdata[5]<<8) |
|
||||
(headerdata[6]<<16) | (headerdata[7]<<24);
|
||||
dwLength3 = headerdata[8] | (headerdata[9]<<8) |
|
||||
(headerdata[10]<<16) | (headerdata[11]<<24);
|
||||
|
||||
if( dwLength1 < firmware_minsize[i] ||
|
||||
dwLength1 > firmware_maxsize[i] ||
|
||||
dwLength2 < firmware_minsize[i] ||
|
||||
dwLength2 > dwLength1 ||
|
||||
dwLength3 > dwLength1 ||
|
||||
dwLength2+dwLength3+512 != dwLength1 )
|
||||
{
|
||||
ERR_DIALOG(wxT("This doesn't look like a valid decoded iHP"
|
||||
" firmware - reason: file 'length' data\n"), wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
};
|
||||
|
||||
pChecksums = ppChecksums = (unsigned char *)( malloc( dwLength3 ) );
|
||||
|
||||
outfile.Write( headerdata, 512);
|
||||
|
||||
memset( blockdata, 0, 16 );
|
||||
ck = 0;
|
||||
while( ( fp < dwLength2 ) &&
|
||||
( lenread = infile.Read( blockdata+16, 16) ) == 16 )
|
||||
{
|
||||
fp += 16;
|
||||
for( i=0; i<16; ++i )
|
||||
{
|
||||
newmunge = blockdata[16+((12+i)&0xf)] ^ blockdata[i];
|
||||
out[i] = newmunge ^ munge[i];
|
||||
ck += blockdata[16+i];
|
||||
blockdata[i] = newmunge;
|
||||
};
|
||||
outfile.Write( out, 16);
|
||||
|
||||
if( s == 496 )
|
||||
{
|
||||
s = 0;
|
||||
memset( blockdata, 0, 16 );
|
||||
*ppChecksums++ = ck;
|
||||
ck = 0;
|
||||
}
|
||||
else
|
||||
s+=16;
|
||||
};
|
||||
|
||||
if( fp != dwLength2 )
|
||||
{
|
||||
ERR_DIALOG(wxT("This doesn't look like a valid decoded "
|
||||
"iHP firmware - reason: 'length1' mismatch\n"), wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
};
|
||||
|
||||
/* write out remainder w/out applying descrambler */
|
||||
fp = 0;
|
||||
lenread = dwLength3;
|
||||
ppChecksums = pChecksums;
|
||||
while( ( fp < dwLength3) &&
|
||||
( lenread = outfile.Write( ppChecksums, lenread) ) > 0 )
|
||||
{
|
||||
fp += lenread;
|
||||
ppChecksums += lenread;
|
||||
lenread = dwLength3 - fp;
|
||||
};
|
||||
|
||||
if( fp != dwLength3 )
|
||||
{
|
||||
ERR_DIALOG(wxT("This doesn't look like a valid decoded "
|
||||
"iHP firmware - reason: 'length2' mismatch\n"), wxT("iriver_decode"));
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
};
|
||||
|
||||
fprintf( stderr, "File encoded successfully and checksum table built!\n" );
|
||||
|
||||
infile.Close();
|
||||
outfile.Close();
|
||||
return 0;
|
||||
|
||||
};
|
||||
|
||||
bool PatchFirmware(wxString firmware,wxString bootloader,int series, int table_entry)
|
||||
{
|
||||
wxString name1, name2, name3;
|
||||
|
||||
char md5sum_str[32];
|
||||
struct sumpairs *sums;
|
||||
int origin;
|
||||
|
||||
/* get pointer to the correct bootloader.bin */
|
||||
switch(series) {
|
||||
case 100:
|
||||
sums = &h100pairs[0];
|
||||
origin = 0x1f0000;
|
||||
break;
|
||||
case 120:
|
||||
sums = &h120pairs[0];
|
||||
origin = 0x1f0000;
|
||||
break;
|
||||
case 300:
|
||||
sums = &h300pairs[0];
|
||||
origin = 0x3f0000;
|
||||
break;
|
||||
}
|
||||
|
||||
name1 = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP "firmware.bin"),
|
||||
/* descrambled file */
|
||||
name2 = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP "new.bin");
|
||||
/* patched file */
|
||||
name3 = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP "new.hex");
|
||||
if (iriver_decode(firmware, name1, FALSE, STRIP_NONE) == -1) {
|
||||
ERR_DIALOG(wxT("Error in descramble"), wxT("Descramble Firmware"));
|
||||
wxRemoveFile(name1);
|
||||
wxRemoveFile(name2);
|
||||
wxRemoveFile(name3);
|
||||
return false;
|
||||
}
|
||||
if (!mkboot(name1, name2, bootloader, origin)) {
|
||||
ERR_DIALOG(wxT("Error in patching"),wxT("Patching Firmware"));
|
||||
wxRemoveFile(name1);
|
||||
wxRemoveFile(name2);
|
||||
wxRemoveFile(name3);
|
||||
return false;
|
||||
}
|
||||
if (iriver_encode(name2, name3, FALSE) == -1) {
|
||||
ERR_DIALOG(wxT("Error in scramble"),wxT("Scramble Firmware"));
|
||||
wxRemoveFile(name1);
|
||||
wxRemoveFile(name2);
|
||||
wxRemoveFile(name3);
|
||||
return false;
|
||||
}
|
||||
/* now md5sum it */
|
||||
if (!FileMD5(name3, md5sum_str)) {
|
||||
ERR_DIALOG(wxT("Error in checksumming"),wxT("Checksumming Firmware"));
|
||||
wxRemoveFile(name1);
|
||||
wxRemoveFile(name2);
|
||||
wxRemoveFile(name3);
|
||||
return false;
|
||||
}
|
||||
if (strncmp(sums[table_entry].patched, md5sum_str, 32) == 0) {
|
||||
/* delete temp files */
|
||||
wxRemoveFile(name1);
|
||||
wxRemoveFile(name2);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: irivertools.h
|
||||
*
|
||||
* Copyright (C) 2007 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef IRIVERTOOLS_H_INCLUDED
|
||||
#define IRIVERTOOLS_H_INCLUDED
|
||||
|
||||
#include "rbutil.h"
|
||||
#include "installlog.h"
|
||||
#include "md5sum.h"
|
||||
|
||||
#define ESTF_SIZE 32
|
||||
|
||||
struct sumpairs {
|
||||
char *unpatched;
|
||||
char *patched;
|
||||
};
|
||||
|
||||
/* precalculated checksums for H110/H115 */
|
||||
static struct sumpairs h100pairs[] = {
|
||||
#include "h100sums.h"
|
||||
};
|
||||
|
||||
/* precalculated checksums for H120/H140 */
|
||||
static struct sumpairs h120pairs[] = {
|
||||
#include "h120sums.h"
|
||||
};
|
||||
|
||||
/* precalculated checksums for H320/H340 */
|
||||
static struct sumpairs h300pairs[] = {
|
||||
#include "h300sums.h"
|
||||
};
|
||||
|
||||
|
||||
enum striptype
|
||||
{
|
||||
STRIP_NONE,
|
||||
STRIP_HEADER_CHECKSUM,
|
||||
STRIP_HEADER_CHECKSUM_ESTF
|
||||
};
|
||||
|
||||
/* protos for iriver.c */
|
||||
|
||||
int intable(char *md5, struct sumpairs *table, int len);
|
||||
|
||||
bool PatchFirmware(wxString firmware,wxString bootloader,int series, int table_entry);
|
||||
|
||||
|
||||
#endif // IRIVERTOOLS_H_INCLUDED
|
||||
|
|
@ -1,298 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: md5sum.cpp
|
||||
*
|
||||
* Copyright (C) 2007 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
* RFC 1321 compliant MD5 implementation
|
||||
*
|
||||
* Copyright (C) 2001-2003 Christophe Devine
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program 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
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#include "md5sum.h"
|
||||
|
||||
|
||||
#define GET_UINT32(n,b,i) \
|
||||
{ \
|
||||
(n) = ( (uint32) (b)[(i) ] ) \
|
||||
| ( (uint32) (b)[(i) + 1] << 8 ) \
|
||||
| ( (uint32) (b)[(i) + 2] << 16 ) \
|
||||
| ( (uint32) (b)[(i) + 3] << 24 ); \
|
||||
}
|
||||
|
||||
#define PUT_UINT32(n,b,i) \
|
||||
{ \
|
||||
(b)[(i) ] = (uint8) ( (n) ); \
|
||||
(b)[(i) + 1] = (uint8) ( (n) >> 8 ); \
|
||||
(b)[(i) + 2] = (uint8) ( (n) >> 16 ); \
|
||||
(b)[(i) + 3] = (uint8) ( (n) >> 24 ); \
|
||||
}
|
||||
|
||||
void md5_starts( md5_context *ctx )
|
||||
{
|
||||
ctx->total[0] = 0;
|
||||
ctx->total[1] = 0;
|
||||
|
||||
ctx->state[0] = 0x67452301;
|
||||
ctx->state[1] = 0xEFCDAB89;
|
||||
ctx->state[2] = 0x98BADCFE;
|
||||
ctx->state[3] = 0x10325476;
|
||||
}
|
||||
|
||||
void md5_process( md5_context *ctx, uint8 data[64] )
|
||||
{
|
||||
uint32 X[16], A, B, C, D;
|
||||
|
||||
GET_UINT32( X[0], data, 0 );
|
||||
GET_UINT32( X[1], data, 4 );
|
||||
GET_UINT32( X[2], data, 8 );
|
||||
GET_UINT32( X[3], data, 12 );
|
||||
GET_UINT32( X[4], data, 16 );
|
||||
GET_UINT32( X[5], data, 20 );
|
||||
GET_UINT32( X[6], data, 24 );
|
||||
GET_UINT32( X[7], data, 28 );
|
||||
GET_UINT32( X[8], data, 32 );
|
||||
GET_UINT32( X[9], data, 36 );
|
||||
GET_UINT32( X[10], data, 40 );
|
||||
GET_UINT32( X[11], data, 44 );
|
||||
GET_UINT32( X[12], data, 48 );
|
||||
GET_UINT32( X[13], data, 52 );
|
||||
GET_UINT32( X[14], data, 56 );
|
||||
GET_UINT32( X[15], data, 60 );
|
||||
|
||||
#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
|
||||
|
||||
#define P(a,b,c,d,k,s,t) \
|
||||
{ \
|
||||
a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
|
||||
}
|
||||
|
||||
A = ctx->state[0];
|
||||
B = ctx->state[1];
|
||||
C = ctx->state[2];
|
||||
D = ctx->state[3];
|
||||
|
||||
#define F(x,y,z) (z ^ (x & (y ^ z)))
|
||||
|
||||
P( A, B, C, D, 0, 7, 0xD76AA478 );
|
||||
P( D, A, B, C, 1, 12, 0xE8C7B756 );
|
||||
P( C, D, A, B, 2, 17, 0x242070DB );
|
||||
P( B, C, D, A, 3, 22, 0xC1BDCEEE );
|
||||
P( A, B, C, D, 4, 7, 0xF57C0FAF );
|
||||
P( D, A, B, C, 5, 12, 0x4787C62A );
|
||||
P( C, D, A, B, 6, 17, 0xA8304613 );
|
||||
P( B, C, D, A, 7, 22, 0xFD469501 );
|
||||
P( A, B, C, D, 8, 7, 0x698098D8 );
|
||||
P( D, A, B, C, 9, 12, 0x8B44F7AF );
|
||||
P( C, D, A, B, 10, 17, 0xFFFF5BB1 );
|
||||
P( B, C, D, A, 11, 22, 0x895CD7BE );
|
||||
P( A, B, C, D, 12, 7, 0x6B901122 );
|
||||
P( D, A, B, C, 13, 12, 0xFD987193 );
|
||||
P( C, D, A, B, 14, 17, 0xA679438E );
|
||||
P( B, C, D, A, 15, 22, 0x49B40821 );
|
||||
|
||||
#undef F
|
||||
|
||||
#define F(x,y,z) (y ^ (z & (x ^ y)))
|
||||
|
||||
P( A, B, C, D, 1, 5, 0xF61E2562 );
|
||||
P( D, A, B, C, 6, 9, 0xC040B340 );
|
||||
P( C, D, A, B, 11, 14, 0x265E5A51 );
|
||||
P( B, C, D, A, 0, 20, 0xE9B6C7AA );
|
||||
P( A, B, C, D, 5, 5, 0xD62F105D );
|
||||
P( D, A, B, C, 10, 9, 0x02441453 );
|
||||
P( C, D, A, B, 15, 14, 0xD8A1E681 );
|
||||
P( B, C, D, A, 4, 20, 0xE7D3FBC8 );
|
||||
P( A, B, C, D, 9, 5, 0x21E1CDE6 );
|
||||
P( D, A, B, C, 14, 9, 0xC33707D6 );
|
||||
P( C, D, A, B, 3, 14, 0xF4D50D87 );
|
||||
P( B, C, D, A, 8, 20, 0x455A14ED );
|
||||
P( A, B, C, D, 13, 5, 0xA9E3E905 );
|
||||
P( D, A, B, C, 2, 9, 0xFCEFA3F8 );
|
||||
P( C, D, A, B, 7, 14, 0x676F02D9 );
|
||||
P( B, C, D, A, 12, 20, 0x8D2A4C8A );
|
||||
|
||||
#undef F
|
||||
|
||||
#define F(x,y,z) (x ^ y ^ z)
|
||||
|
||||
P( A, B, C, D, 5, 4, 0xFFFA3942 );
|
||||
P( D, A, B, C, 8, 11, 0x8771F681 );
|
||||
P( C, D, A, B, 11, 16, 0x6D9D6122 );
|
||||
P( B, C, D, A, 14, 23, 0xFDE5380C );
|
||||
P( A, B, C, D, 1, 4, 0xA4BEEA44 );
|
||||
P( D, A, B, C, 4, 11, 0x4BDECFA9 );
|
||||
P( C, D, A, B, 7, 16, 0xF6BB4B60 );
|
||||
P( B, C, D, A, 10, 23, 0xBEBFBC70 );
|
||||
P( A, B, C, D, 13, 4, 0x289B7EC6 );
|
||||
P( D, A, B, C, 0, 11, 0xEAA127FA );
|
||||
P( C, D, A, B, 3, 16, 0xD4EF3085 );
|
||||
P( B, C, D, A, 6, 23, 0x04881D05 );
|
||||
P( A, B, C, D, 9, 4, 0xD9D4D039 );
|
||||
P( D, A, B, C, 12, 11, 0xE6DB99E5 );
|
||||
P( C, D, A, B, 15, 16, 0x1FA27CF8 );
|
||||
P( B, C, D, A, 2, 23, 0xC4AC5665 );
|
||||
|
||||
#undef F
|
||||
|
||||
#define F(x,y,z) (y ^ (x | ~z))
|
||||
|
||||
P( A, B, C, D, 0, 6, 0xF4292244 );
|
||||
P( D, A, B, C, 7, 10, 0x432AFF97 );
|
||||
P( C, D, A, B, 14, 15, 0xAB9423A7 );
|
||||
P( B, C, D, A, 5, 21, 0xFC93A039 );
|
||||
P( A, B, C, D, 12, 6, 0x655B59C3 );
|
||||
P( D, A, B, C, 3, 10, 0x8F0CCC92 );
|
||||
P( C, D, A, B, 10, 15, 0xFFEFF47D );
|
||||
P( B, C, D, A, 1, 21, 0x85845DD1 );
|
||||
P( A, B, C, D, 8, 6, 0x6FA87E4F );
|
||||
P( D, A, B, C, 15, 10, 0xFE2CE6E0 );
|
||||
P( C, D, A, B, 6, 15, 0xA3014314 );
|
||||
P( B, C, D, A, 13, 21, 0x4E0811A1 );
|
||||
P( A, B, C, D, 4, 6, 0xF7537E82 );
|
||||
P( D, A, B, C, 11, 10, 0xBD3AF235 );
|
||||
P( C, D, A, B, 2, 15, 0x2AD7D2BB );
|
||||
P( B, C, D, A, 9, 21, 0xEB86D391 );
|
||||
|
||||
#undef F
|
||||
#undef S
|
||||
#undef P
|
||||
|
||||
|
||||
ctx->state[0] += A;
|
||||
ctx->state[1] += B;
|
||||
ctx->state[2] += C;
|
||||
ctx->state[3] += D;
|
||||
}
|
||||
|
||||
void md5_update( md5_context *ctx, uint8 *input, uint32 length )
|
||||
{
|
||||
uint32 left, fill;
|
||||
|
||||
if( ! length ) return;
|
||||
|
||||
left = ctx->total[0] & 0x3F;
|
||||
fill = 64 - left;
|
||||
|
||||
ctx->total[0] += length;
|
||||
ctx->total[0] &= 0xFFFFFFFF;
|
||||
|
||||
if( ctx->total[0] < length )
|
||||
ctx->total[1]++;
|
||||
|
||||
if( left && length >= fill )
|
||||
{
|
||||
memcpy( (void *) (ctx->buffer + left),
|
||||
(void *) input, fill );
|
||||
md5_process( ctx, ctx->buffer );
|
||||
length -= fill;
|
||||
input += fill;
|
||||
left = 0;
|
||||
}
|
||||
|
||||
while( length >= 64 )
|
||||
{
|
||||
md5_process( ctx, input );
|
||||
length -= 64;
|
||||
input += 64;
|
||||
}
|
||||
|
||||
if( length )
|
||||
{
|
||||
memcpy( (void *) (ctx->buffer + left),
|
||||
(void *) input, length );
|
||||
}
|
||||
}
|
||||
|
||||
static uint8 md5_padding[64] =
|
||||
{
|
||||
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
void md5_finish( md5_context *ctx, uint8 digest[16] )
|
||||
{
|
||||
uint32 last, padn;
|
||||
uint32 high, low;
|
||||
uint8 msglen[8];
|
||||
|
||||
high = ( ctx->total[0] >> 29 )
|
||||
| ( ctx->total[1] << 3 );
|
||||
low = ( ctx->total[0] << 3 );
|
||||
|
||||
PUT_UINT32( low, msglen, 0 );
|
||||
PUT_UINT32( high, msglen, 4 );
|
||||
|
||||
last = ctx->total[0] & 0x3F;
|
||||
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
|
||||
|
||||
md5_update( ctx, md5_padding, padn );
|
||||
md5_update( ctx, msglen, 8 );
|
||||
|
||||
PUT_UINT32( ctx->state[0], digest, 0 );
|
||||
PUT_UINT32( ctx->state[1], digest, 4 );
|
||||
PUT_UINT32( ctx->state[2], digest, 8 );
|
||||
PUT_UINT32( ctx->state[3], digest, 12 );
|
||||
}
|
||||
|
||||
int FileMD5(wxString name, char *md5)
|
||||
{
|
||||
int i, read;
|
||||
md5_context ctx;
|
||||
unsigned char md5sum[16];
|
||||
unsigned char block[32768];
|
||||
|
||||
wxFile file;
|
||||
|
||||
file.Open(name);
|
||||
|
||||
if (!file.IsOpened()) {
|
||||
ERR_DIALOG(wxT("Could not open patched firmware for checksum check"), wxT("Open Firmware"));
|
||||
return 0;
|
||||
}
|
||||
md5_starts(&ctx);
|
||||
while ( !file.Eof() ) {
|
||||
read = file.Read(block, sizeof(block));
|
||||
md5_update(&ctx, block, read);
|
||||
}
|
||||
file.Close();
|
||||
md5_finish(&ctx, md5sum);
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
sprintf(md5 + 2*i, "%02x", md5sum[i]);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: md5sum.h
|
||||
*
|
||||
* Copyright (C) 2007 Dominik Wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef MD5SUM_H_INCLUDED
|
||||
#define MD5SUM_H_INCLUDED
|
||||
|
||||
#ifndef uint8
|
||||
#define uint8 unsigned char
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef uint32
|
||||
#define uint32 unsigned long int
|
||||
#endif
|
||||
|
||||
#include "rbutil.h"
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32 total[2];
|
||||
uint32 state[4];
|
||||
uint8 buffer[64];
|
||||
}
|
||||
md5_context;
|
||||
|
||||
void md5_starts( md5_context *ctx );
|
||||
void md5_update( md5_context *ctx, uint8 *input, uint32 length );
|
||||
void md5_finish( md5_context *ctx, uint8 digest[16] );
|
||||
|
||||
int FileMD5(wxString name, char *md5);
|
||||
|
||||
#endif // MD5SUM_H_INCLUDED
|
||||
|
|
@ -1,254 +0,0 @@
|
|||
/* WxStaticBitmap1_XPM XPM */
|
||||
static char * rblogo_xpm[] = {
|
||||
"400 123 128 2",
|
||||
" c #FFC500",
|
||||
". c #DBA500",
|
||||
"+ c #C79600",
|
||||
"@ c #A1B4C5",
|
||||
"# c #798C9C",
|
||||
"$ c #8C8F92",
|
||||
"% c #6B7176",
|
||||
"& c #B38700",
|
||||
"* c #876601",
|
||||
"= c #B3C3D2",
|
||||
"- c #392B00",
|
||||
"; c #E7E7E7",
|
||||
"> c #EBB200",
|
||||
", c #9CB1C4",
|
||||
"' c #FFC800",
|
||||
") c #8497A9",
|
||||
"! c #4A4D4F",
|
||||
"~ c #2D2E30",
|
||||
"{ c #FEFEFE",
|
||||
"] c #CCD8E2",
|
||||
"^ c #E3AC00",
|
||||
"/ c #745801",
|
||||
"( c #BBC9D6",
|
||||
"_ c #97ADC1",
|
||||
": c #A5B9CA",
|
||||
"< c #C7C7C7",
|
||||
"[ c #C6D2DD",
|
||||
"} c #8AA1B6",
|
||||
"| c #493801",
|
||||
"1 c #C1CDD9",
|
||||
"2 c #654D00",
|
||||
"3 c #A37B00",
|
||||
"4 c #9A7400",
|
||||
"5 c #F4B800",
|
||||
"6 c #BECBD8",
|
||||
"7 c #5A4401",
|
||||
"8 c #AABCCC",
|
||||
"9 c #D5D5D5",
|
||||
"0 c #B8B8B8",
|
||||
"a c #A6A6A6",
|
||||
"b c #ACBECD",
|
||||
"c c #FFC300",
|
||||
"d c #93AABE",
|
||||
"e c #000000",
|
||||
"f c #FCBE00",
|
||||
"g c #98ABBD",
|
||||
"h c #A2B6C7",
|
||||
"i c #FFD200",
|
||||
"j c #FFCC00",
|
||||
"k c #AC8200",
|
||||
"l c #AFC1D0",
|
||||
"m c #EFB500",
|
||||
"n c #B2C1CE",
|
||||
"o c #757D86",
|
||||
"p c #F2F2F2",
|
||||
"q c #6E5300",
|
||||
"r c #191300",
|
||||
"s c #A8BACA",
|
||||
"t c #FABD00",
|
||||
"u c #D09D01",
|
||||
"v c #92A3B4",
|
||||
"w c #AEBFCE",
|
||||
"x c #171718",
|
||||
"y c #DCE0E4",
|
||||
"z c #261D00",
|
||||
"A c #A8BCCC",
|
||||
"B c #B8C6D3",
|
||||
"C c #616468",
|
||||
"D c #AFBECC",
|
||||
"E c #ABB0B5",
|
||||
"F c #A1AEB9",
|
||||
"G c #BE8F00",
|
||||
"H c #AABED0",
|
||||
"I c #969DA4",
|
||||
"J c #8F6C00",
|
||||
"K c #A7BBCD",
|
||||
"L c #F7BB00",
|
||||
"M c #8FA6BB",
|
||||
"N c #9BA9B6",
|
||||
"O c #7E5F01",
|
||||
"P c #ACBDCB",
|
||||
"Q c #54595D",
|
||||
"R c #0B0B0C",
|
||||
"S c #B7CADA",
|
||||
"T c #F9C000",
|
||||
"U c #130E00",
|
||||
"V c #ABB9C5",
|
||||
"W c #A5B7C7",
|
||||
"X c #424446",
|
||||
"Y c #0C0900",
|
||||
"Z c #FCC000",
|
||||
"` c #9D7B0F",
|
||||
" . c #FFC000",
|
||||
".. c #080A10",
|
||||
"+. c #FDC200",
|
||||
"@. c #B3C6D5",
|
||||
"#. c #FFC202",
|
||||
"$. c #A7B6C3",
|
||||
"%. c #DFE8EF",
|
||||
"&. c #9DAFBF",
|
||||
"*. c #98A5B0",
|
||||
"=. c #FAC500",
|
||||
"-. c #ACBBC8",
|
||||
";. c #393A3C",
|
||||
">. c #232425",
|
||||
",. c #1C1D1E",
|
||||
"'. c #B7C7D5",
|
||||
"). c #ECF4FA",
|
||||
"!. c #F7BE05",
|
||||
"~. c #070500",
|
||||
"{. c #644F0B",
|
||||
"]. c #FFC100",
|
||||
"^. c #050506",
|
||||
"/. c #080909",
|
||||
"(. c #101011",
|
||||
"_. c #FEBF00",
|
||||
":. c #FDC100",
|
||||
"<. c #F5BF00",
|
||||
"[. c #8A6B0B",
|
||||
"}. c #8E6F0D",
|
||||
"|. c #FCC003",
|
||||
"1. c #FFC102",
|
||||
"2. c #B78F0B",
|
||||
"3. c #716027",
|
||||
"4. c #FEC304",
|
||||
"5. c #F7C10D",
|
||||
"6. c #977E20",
|
||||
"7. c #FBC303",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e ~.r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r Y e e ",
|
||||
"e e - _. ._._._._._._._._._._._._._.c ]._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.].' ]._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._. J e e ",
|
||||
"e e - ].c ].].].].].].].].].].].].].L f ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].c c ].].].].].].].].].].].].].].].].].].].].].].].].]. m 3 > c ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .].t | 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' ' ' c . . . . . . . . . . . . . . . . . . . . . . . . . .> m . . . . . . . . . . . . . . . . . . . . . . . . .' 3 e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L ~.O ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u | 7 * & ^ t j c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j t ^ . G 3 k k + ^ > j . . . . . . . . . . . . . . . . . . . . . .c t - / ]. . . . . . . . . . . . . . . . . . . . . . . . - z m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . ' T ~.O j ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u - z Y e Y - J > ' . . . . . . . . . . . . . . . . . . . . . . . . . .c ' u O | r e e e e e e ~.z 7 J . c ' ' ]. . .].' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' T z 7 j ' . . . . . . . ' ' ' ' ' ' ' ' ' ' ' ' ' i G e J i ' c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . .' k 2 q e - / / / / / / / / / / / / / / / / / / / q / ^ c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .]._.L m ^ G / z e U / ^ ' c . . . . . . . . . . . . . . . . . . . . . . . =.G | e e z q 4 G . . u & * | r e e - 4 . ' ' c 5 / / / / / / / / / / / / / / / / q U z / q 4 .]. . . .c 5 J q / / / / / / / / / / / / O - e 7 / q G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . .j / ~.r e Y r r r r r r r r r r r r r r r r r r r r r u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' ' ' j i i T G | e r 4 +.' . . . . . . . . . . . . . . . . . . . .].' ^ 7 e U / u ' i i j ' ' ' j j i =.+ O - e Y 2 + j > e Y r r r r r r r r r r r r r r r ~.Y r Y 7 .c . . . m | U r r r r r r r r r r r r U e r r r U 4 ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . .].5 m > e / L m m m m m m m m m m m m m m m m m m m m _.].].].]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j > + J q | | | 7 O & . ' i G - e | ^ ' . . . . . . . . . . . . . . . . . .].' k r e / > j i T u 3 / | | | 7 q J + 5 i +.+ 7 ~.e 7 G e J L m m m m m m m m m m m m m > z 7 5 m 5 . . . . . ._.m m m m m m m m m m m m m _.q e G L m m L ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . .c T e O j c c c c c c c c c c c c c c c c c c c . . .c ' ' . . . . . . . . . . . . . . . . . . . . . . . . ' . q z e e e e e e e e e U 7 k +.i T * e r + j ]. . . . . . . . . . . . . . . .c ' * e z + j j 5 4 | Y e e e e e e e e e z 2 + ' i . q ~.~.e 4 j c c c c c c c c c c c T z 2 ' c . . . . . . .c c c c c c c c c c c m r | c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' 5 - - - - - - - - - - - - - - - - - - - - - - 7 / 3 + 5 j c . . . . . . . . . . . . . . . . . . . . .' > / Y e e e e e e e e e e e e e e - + j j G r ~.k j . . . . . . . . . . . . . .]. O e | > j ' & z e e e e e e e e e e e e e e e - G j j . | e 4 j + - - - - - - - - - - - G ].z 7 ]. . . . . . . . .' u - - - - - - - - - - - z e 4 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e ~.- J L ' . . . . . . . . . . . . . . . . . .].j G z e e e e e e e e e e e e e e e e e Y * j . - e k ' ]. . . . . . . . . . . .].j J e 7 ].j L q e e e e e e e e e e e e e e e e e e e 7 > i 4 & j & e e e e e e e e e e e 3 c z 7 ]. . . . . . . . .' q e e e e e e e e e e e e z m c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e - u ' ]. . . . . . . . . . . . . . . .].j 3 ~.e e e e e e e e e e e e e e e e e e e e 2 L i > - ~.G ' . . . . . . . . . . .j & e | L j ^ | e e e e e e e e e e e e e e e e e e e e e z + ' ' .' & e e e e e e e e e e e 3 c z 7 ]. . . . . . . .c m r e e e e e e e e e e e e O ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e U & ' . . . . . . . . . . . . . .].' 3 ~.e e e e e e e e e e e e e e e e e e e e e e 7 <.j . z r . . . . . . . . . . . U z > i ^ - e e e e e e e e e e e e e e e e e e e e e e e Y k ' c ' & e e e e e e e e e e e 3 c z 7 ]. . . . . . . .j 4 e e e e e e e e e e e e Y . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e U + ' . . . . . . . . . . . . .j & ~.e e e e e e e e e e e e e e e e e e e e e e e e / ' j + ~.| T c . . . . . . .c T | e + j L | e e e e e e e e e e e e e e e e e e e e e e e e e e J ' & e e e e e e e e e e e 3 c z 7 ]. . . . . . .c t | e e e e e e e e e e e e 7 c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e z ^ . . . . . . . . . . . . z e e e e e e e e e e e e e e e e e e e e e e e e e e 4 ' ' J e J ' . . . . . . .' 4 e J j +.2 e e e e e e e e e e e e e e e e e e e e e e e e e e e e 3 j & e e e e e e e e e e e 3 c z 7 ]. . . . . . .' u e e e e e e e e e e e e ~.& ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 7 c . . . . . . . . .c +.| e e e e e e e e e e e e e e e e e e e e e e e e e e e r . ' c | Y ^ . . . . . > U - L i 3 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . . . .' q e e e e e e e e e e e e - c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e k ' . . . . . . . . .j 4 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e | .j G e / ' . . . .].' q e G j ^ r e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . . .c m z e e e e e e e e e e e e 4 ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e z 5 c . . . . . . . ^ r e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 3 j | Y . ' . . .' . e 7 j 2 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . . .j 4 e e e e e e e e e e e e z ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 3 ' . . . . . .].' / e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e z > j + e J ' . . .' q e u j + ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . .c Z | e e e e e e e e e e e e q ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e - c c . . . . . ^ U e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e J j :.- r L ]. . . Y 7 ' 7 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . .' u ~.e e e e e e e e e e e Y u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L e O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e Y + ' . . . . .' / e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e z 5 j 3 e 3 ' .' O e + i + Y e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . . .' / e e e e e e e e e e e e | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .c L ~.O ' m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e * ' ]. . . . ^ z e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 3 j m r | m z - ' ' 2 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . .c m z e e e e e e e e e e e e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .].f 4 + m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e - t c . . .' 4 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e | _.j q e u j & e k i . U e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . .j 3 e e e e e e e e e e e e - 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . .' c m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ~.^ . .c t - e e e e e e e e e e e e e e e e e ~.e e e e e e e e e e e e e e e e e ~.+ i u e J i 7 U ^ j J e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . .c c 7 e e e e e e e e e e e e * j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e & ' . . u e e e e e e e e e e e e e e e Y 7 k u G O z e e e e e e e e e e e e e e e O ' t - z > U 2 ' - e e e e e e e e e e e e e e e e ~.- 2 O 2 - ~.e e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . . u ~.e e e e e e e e e e e U ^ c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e r - - - - - - - U e e e e e e e e e e e e e e e e * ' . .j O e e e e e e e e e e e e e e - + ' i i j j > 2 e e e e e e e e e e e e e e z f j O Y / ~.k i + Y e e e e e e e e e e e e e e e - G L j j j T + | e e e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . .' O e e e e e e e e e e e e q ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 i L & - e e e e e e e e e e e e e e 2 j .c _.- e e e e e e e e e e e e e - ^ j Z + & ^ ' ' ' O e e e e e e e e e e e e e ~.+ j + U e r > j * e e e e e e e e e e e e e e e O +.' c .c ' :.* ~.e e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. .c 5 z e e e e e e e e e e e ~.+ ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e | + G G G G G . 5 i <.2 e e e e e e e e e e e e e | j .' u U e e e e e e e e e e e e r u ' c L - e U * T ' 7 e e e e e e e e e e e e e / j ].- e | j t | e e e e e e e e e e e e e e O ' c ' m > . . .c ' 3 ~.e e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. .j k e e e e e e e e e e e e | ].c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e e e e e e e e e z 3 j L - e e e e e e e e e e e e - L c j 4 e e e e e e e e e e e e e J j .c L z - | e | L j . r e e e e e e e e e e e e | _.j q e * j ^ Y e e e e e e e e e e e e e 7 c L O Y 7 c c . .].j 3 ~.e e e e e q j & e e e e e e e e e e e 3 c z 7 ].c c 7 e e e e e e e e e e e e & i ' ' ' ' ' ' ' ' ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e | u + + + + G 4 z e 3 i k e e e e e e e e e e e e - 5 c 2 e e e e e e e e e e e e - L c .c L z 2 ' O e / ' ' O e e e e e e e e e e e e r . j + | u j & e e e e e e e e e e e e e z . > | e 7 + ].]. . . .].' J e e e e e q j & e e e e e e e e e e e 3 c z 7 ]. . ~.e e e e e e e e e e e Y O [.[.* * * * * * * * 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 i ' ' ' ' ' j m z r ^ - e e e e e e e e e e e z . ' 5 z e e e e e e e e e e e e k ' . .c L z 7 ' ' 7 e G j ^ r e e e e e e e e e e e e & ' c ' c ' q e e e e e e e e e e e e e J j c | e 3 ' . . . . . .c 7 e e e e q j & e e e e e e e e e e e 3 c z 7 .' O e e e e e e e e e e e e e e e e e e e e e e e e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 ' . . . . ._.' & e 4 i q e e e e e e e e e e e r . j u e e e e e e e e e e e e z m c . .c L z 7 ' ^ U | ].j 2 e e e e e e e e e e e e O . . . - e e e e e e e e e e e e z t ].' 4 e * j ]. . . . . . . . . > z e e e q j & e e e e e e e e e e e 3 c z 7 c t z e e e e e e e e e e e R Q C C C C C C C C C Q e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . ._. ' ' ' c . . . . .c m ~.e e e e e e e e e e 2 ' . . . . . .c 5 r 7 j 4 e e e e e e e e e e e r . j 3 e e e e e e e e e e e e / ' ]. . .c L z 7 .j / e u i + e e e e e e e e e e e e | ]. . ^ r e e e e e e e e e e e e 4 ' > r - <. . . . . . . . . . .' & e e e q j & e e e e e e e e e e e 3 c z 7 j & e e e e e e e e e e e e X [ 6 ( ( ( 6 6 1 6 [ $.e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . q | O + ].c . . . .c m ~.e e e e e e e e e e 2 ' . . . . . .c .| z ' G e e e e e e e e e e e r . i q e e e e e e e e e e e ~.G ' . . .c L z 7 ]. . e O j m z e e e e e e e e e e e r L ]. .' G Y e e e e e e e e e e e r . ' j 4 e k ' . . . . . . . . . . .].' / e e q j & e e e e e e e e e e e 3 c z 7 c 7 e e e e e e e e e e e e ) S = = = = = = @.= S F e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . .j O e e e ~.7 . c f . .c m ~.e e e e e e e e e e 2 ' . . . . . .]. q Y ' ^ e e e e e e e e e e e r . i | e e e e e e e e e e e z m c . . .c L z 7 ].c f | z .' q e e e e e e e e e e e Y . .j J e e e e e e e e e e e e 7 ' c t - z .]. . . . . . . . . . . . . > z e q j & e e e e e e e e e e e 3 c z 7 ' . Y e e e e e e e e e e e >., , , , , , , , , , h ) e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . .j O e z z e e r & t t _.c m ~.e e e e e e e e e e 2 ' . . . . . .].' / ~.f ^ e e e e e e e e e e e r ^ t - e e e e e e e e e e e 7 j . . . .c L z 7 ]. .j J e + i 3 e e e e e e e e e e e e k ' ].' / e e e e e e e e e e e e 3 ' u e * ' . . . . . . . . . . . . . .' k e q j & e e e e e e e e e e e 3 c z 7 i * e e e e e e e e e e e e % H , , @ @ , @ , , , : v e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . .j O e 2 & 7 Y e U k m L c m ~.e e e e e e e e e e 2 ' . . . . . . .j 4 e . ^ e e e e e e e e e e e r ^ . U e e e e e e e e e e e * ' . . . .c L z 7 ]. .' + ~.* i . U e e e e e e e e e e e * j c t | e e e e e e e e e e e Y ^ c ' O e + ' . . . . . . . . . . . . . .].T G . ' & e e e e e e e e e e e 3 c z 2 .- e e e e e e e e e e e ,.*.b : : : s s s W : : H N e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . .j O e r * J 2 Y e r G > t > ~.e e e e e e e e e e 2 ' . . . . . . .j J e > ^ e e e e e e e e e e e z m + e e e e e e e e e e e e + . . . .c L z 7 ]. .c t r 7 c z e e e e e e e e e e e 2 j m z e e e e e e e e e e e - :.c ' - - 5 . . . . . . . . . . . . . . .].' ' & e e e e e e e e e e e 3 c z q G e e e e e e e e e e e e Q l s s s s : 8 s s s : H N e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . .' k ~.e | * * 7 e e 7 u > ^ ~.e e e e e e e e e e 2 ' . . . . . .]. q Y ' ^ e e e e e e e e e e e - k e e e e e e e e e e e ~.^ . . . .c L z 7 ]. . .' | z m ' | e e e e e e e e e e e | ].' ^ Y e e e e e e e e e e e / ^ U 2 j . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c z 2 2 e e e e e e e e e e e e *.A : : : s : : s s s W H *.e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . .t 7 e Y / 4 3 z e U 4 . . ~.e e e e e e e e e e 2 ' . . . . . .]. q Y u e e e e e e e e e e e - J e e e e e e e e e e e z m . . . .c L z 7 ]. . .' O ~.^ j * e e e e e e e e e e e - m ' u e e e e e e e e e e e e k j ' & e 4 ' . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c z - U e e e e e e e e e e e e N : @ W h h h @ @ @ W h K v e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . .t + r e - 3 G q e e 7 + u ~.e e e e e e e e e e 2 ' . . . . . .c .| z ' & e e e e e e e e e e e | i q e e e e e e e e e e e 7 _.c . . . .c L z 7 ]. . .' k e + i k e e e e e e e e e e e z ^ j & e e e e e e e e e e e ~.+ ' j J e u . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c - e e e e e e e e e e e e e e v , d _ _ _ _ _ _ &., &.h ) e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . .L m * e e O + 4 ~.e - 3 G ~.e e e e e e e e e e 2 ' . . . . . .c 5 r 7 j J e e e e e e e e e e e 7 j 7 e e e e e e e e e e e q ]. . . . .c L z 7 ]. . .' u e 3 i u e e e e e e e e e e e U . i 4 e e e e e e e e e e e z ^ ' 2 Y f ]. . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c - e e e e e e e e e e e e e e F @.l l l l l l l = l l @.N e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . .f m . - e z & 3 U e z 4 k ~.e e e e e e e e e e 2 ' . . . . . .' G e 3 i 7 e e e e e e e e e e e * ' - e e e e e e e e e e e * j . . . . .c L z 7 ]. . . ^ ~.* j . Y e e e e e e e e e e e u i * e e e e e e e e e e e - L f | - c . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 c - e e e e e e e e e e e ~.7 e F = w w l l l l l = l w @.F e - ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .L m 3 e e / J e e z J 4 ~.e e e e e e e e e e 2 ' . . . . .c j 7 U ^ L z e e e e e e e e e e e k - e e e e e e e e e e e 3 j . . . . .c L z 7 ]. . . > z 2 j ^ z e e e e e e e e e e e G i q e e e e e e e e e e e | j c 5 r 2 . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 - e e e e e e e e e e e z k e F l 8 8 8 8 8 8 8 b 8 8 l *.e - ' . . ' ' ' ' ' ' ' ' ' ' ' ' ' c . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' ' ' ' ' ' ' ' ' ' ]. .].c c c c c c c c c c c c c c c c c c c ]. . . . . . . . . . . .].c c c c c c c c c c c c c c c c c c c c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . ._.5 . | e z 7 e e - * 4 ~.e e e e e e e e e e 2 ' ]. ' ' j j 3 e / i 3 e e e e e e e e e e e e u f r e e e e e e e e e e e k ' . . . . .c L z 7 ]. . .c 5 - | j m - e e e e e e e e e e e & i 2 e e e e e e e e e e e 2 j c > e * ' . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e 3 m U e e e e e e e e e e e O + e F = w w w w w w w w w b '.N e - ' ' j 5 . k * 7 | z z z z | 7 * & ^ t ' . . . . . . . . . . . . . . . . . . . . . . . . . j t ^ G J 2 | z z z z - 7 O 4 u > ' ' .c c #.#.#.#.#.#.#.#.#.#.c c c c c #.c c . . . . . . . . . . c #.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.1._. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . .f 5 k ~.e Y e e | * J ~.e e e e e e e e e e 2 j t + G 3 J 7 e - m T - e e e e e e e e e e e r L L Y e e e e e e e e e e Y + ' . . . . .c L z 7 ]. . .c _.| z ' _.| e e e e e e e e e e e 4 i | e e e e e e e e e e e O j . e k ' . . . . . . . . . . . . . . . . . . . .' & e e e e e e e e e e e k 4 e e e e e e e e e e e Y u + e F = w w w w w w w w l b = F e - j + / - e e e e e e e e e e e e e Y | * . ' ' c . . . . . . . . . . . . . . . . . . .c ' ' . * | Y e e e e e e e e e e e e e z 2 k J 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 2 ^ . . . . . . . .' 4 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . ._.L ^ | e e e Y 2 * J ~.e e e e e e e e e e 2 j > - e ~.~.U 2 ^ i J e e e e e e e e e e e e | ].5 Y e e e e e e e e e e U + ' . . . . .c L z 7 ]. . .c c 7 z j _.| e e e e e e e e e e e 4 i - e e e e e e e e e e e 4 ' G e G ' . . . .]. ]. . . . . . . . . . . . . .' & e e e e e e e e e e e 4 | e e e e e e e e e e e | i G e F @.l w w w l l n l w w = F e r 7 ~.e ^.>.~ % # o # # # ) ) # C ~ ,.^.e Y 7 + =.' . . . . . . . . . . . . . . . . .' t & 7 Y e e ,.~ C $ I I *.*.*.I ) o X >...e e ~.e e e e e e e e e e e e e e e e e e e e {.' ]. . . . . . .' u U e e e e e e e e e e e e e e e e e e e 7 f c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . .f L 3 e e e z q O 4 ~.e e e e e e e e e e 2 j ^ z 7 G u 5 i j & U e e e e e e e e e e e e * j u ~.e e e e e e e e e e r ^ . . . . .c L z 7 ]. . .]. 7 r _.' 2 e e e e e e e e e e e * i - e e e e e e e e e e e 3 ' ' 3 ~.u ' . . .].L . 5 ]. . . . . . . . . . . . .' & e e e e e e e e e e ~.7 Y e e e e e e e e e e e k i G e F @.= w 8 b w w l l w b @.N e e e x C ) l @.@., # ) , d , d d _ h F % Q (.e ~.7 u ' c . . . . . . . . . . . . . G - e e (.Q # -.S l 1 H h @.S 1 = H : [ ( I o ;.e e e /.% % % % % % o % % % % % % o o o x e 2.' . . . . .c +.| e X o % % % % % % % % % % % o C % ! e r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . ._.f u z e e | 2 * 3 ~.e e e e e e e e e e 2 i m z 3 i c m + q ~.e e e e e e e e e e e e Y + j + ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e q z e e e e e e e e e e e k ' ' 4 ~.u ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e U e e e e e e e e e e e - 5 j G e F = l n b b w b b b b H @.N e x % $.S @.A -.w g o ) d M d M M d , &.} S $.% ,.e Y O L ' . . . . . . . . . .].' > 2 ~.e >.% F = @.8 8 8 b s @ 8 b b P s h @.l @.y N N Q (.e $ %.] ] ] ] ] ] ] ] ] ] [ %.%.).C e - !.c . . . .j 3 e >.( %.] ] ] y ] ] ] ] ] [ ] %.@.1 ~ e J ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . G e e e | 2 J & ~.e e e e e e e e e e z 2 7 Y - 7 - z ~.e e e e e e e e e e e e e e - .' u ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e ~.+ ' * r . . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e J ' ' G e F = w l l l l = b b b b @.*.~ F S w 8 w s -.w g o ) d M _ } M M &.N ) = 1 ] @ Q ^.e | . ' . . . . . . . .c ' G z e /.% P @.H A s s s 8 : l : s 8 8 : W @ l w n 1 M S ).E ;.x V [ 6 1 1 1 1 1 ( ( ( B [ ] ] n ~ e }.j . . . > z e # ] 1 ( 6 6 [ 6 ( ( 6 6 = 1 [ l % e - <. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . / e e e z / 3 G ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e J ' u ~.e e e e e e e e e e z > . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e e + ' 2 z > . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e & j ' G e F = b b l l l B l w w b b B $.= b 8 8 w 8 s b g o ) M M @ M M M _ N ) = 1 1 H S ) >.e r + ' . . . . . .c J ~.e X F @.H b A A A A A A h = A 8 w = s : @ s 8 w [ v = %.] [ o % [ ( 6 6 1 6 1 ( 6 ( = [ ] ] '.$ e r . ' .]. q e X B [ 6 '.( 6 1 6 ( ( 6 6 = 1 ] I /.~.+ ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . .].t z e e e Y 2 k + ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e Y ^ u ~.e e e e e e e e e e z > c . .]. ' T z 2 ' ' i O Y m i / e e e e e e e e e e e / <.z e e e e e e e e e e e u j i q z > j j u e & j . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e q j G e F l 8 b l l l n n l w b 8 ( K K w 8 A b b D w g o ) d } , } M _ _ N ) = 6 1 s P l V X e R & j . . . . / e ^.C = l A A b A A A A A A : s h b w w 8 l K h W 8 [ v @.y 1 1 ] E n 1 6 6 1 1 1 ( 1 1 B [ ] ] n 6 ! e 7 .' + e (.N @.1 1 ( ( ( 1 ( '.( 6 6 = [ y ;.e q ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . .' G ~.e U U e | k + ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e / ' ]. u ~.e e e e e e e e e e - ' . .].L . . . u z | . . . . . > 2 Y + > 7 e e e e e e e e e e e 2 u r e e e e e e e e e e e k ^ ^ 7 r + . . . . ^ & e 4 ^ . . . ^ _. . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e r > j G e F = b 8 l l l = w n l l w ( : A 8 8 8 b A P w g o ) d M _ M M M _ N ) l 6 6 8 w h @.@.Q e U u ' . .c c q e (.# S b 8 b A A A A A 8 K : = s , A b w : = = 8 W s [ v @.%.1 6 1 [ 1 6 6 1 1 6 6 ( 6 1 6 ] ] [ n = V x e & j L - e % 6 n [ 1 ( ( ( ( ( ( ( ( ( = ] $ e z > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . .j O e e | - e U 4 G ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e r . ' . u ~.e e e e e e e e e e - ' . . . r U U U e ~.U U U U U U Y e U U ~.e e e e e e e e e e e ~.U e e e e e e e e e e e e U U U ~.e U U U U U U U e Y U U U Y - L c . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e k i G e F = b 8 l l l = w w w l n ( : 8 b 8 8 w A -.b g o # M M _ M M M _ N ) l 1 1 s w h w w @.Q e r . ' ].' O e (.$ @.8 8 8 b A A A A K 8 8 : l w h s 8 8 h : b n s 8 [ v = %.1 6 1 1 1 6 6 6 1 6 ( '.'.( ( [ ] ] n D ] o e - T J e ;.n D = [ 1 ( ( 6 '.( ( ( 6 ( '.n ,.e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . .c _.| e ~./ 7 e e q k ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e O j . . u ~.e e e e e e e e e e - ' . .c > * O * O U - * * * * * J - ~./ J - e e e e e e e e e e e - O U e e e e e e e e e e e 2 * * - U / * * * * * q e 7 * * * O 4 t ]. . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e | i G e F = w b l l l = w w w w w 6 W A w 8 A b b P w d o # } } d M M M _ N ) = 6 6 8 w h w P H @.! e | !.j 3 e (.$ S 8 8 8 s b K A A A b s K K : w : A b l s : h b 8 w [ v = %.1 6 [ 1 6 6 6 6 1 1 1 '.( ( '.[ ] ] D D ( y X e 2 r e E [ -.D [ 1 ( ( ( ( ( ( ( 6 ( 1 Q e 7 ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . ^ r e z O q z e - 3 ~.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e - m c . . u ~.e e e e e e e e e e z 5 c . .c j j j =.z 2 i j j j j i O Y m i / e e e e e e e e e e e / T z e e e e e e e e e e e u i i q z m i j j j i . e G i j j j ' . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e U . + e F = w b w l l = w l w b b 6 W A w 8 8 b 8 P l d o # } } M M M M _ N ) = 6 6 8 w h w b K l -.~ e O . U e o S b 8 s 8 P 8 K : A A 8 8 A K h = : K b l 8 W @ b 8 w [ v = %.1 6 1 6 6 6 6 6 1 1 1 B ( ( B [ ] ] n D = %.E e e e Q %.1 D D [ 1 6 ( ( 6 ( 6 ( 6 [ ) e U . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . .' G e e | * O 7 e Y O Y e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ~.G ' . . . u ~.e e e e e e e e e e z > . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e e + ' 2 z ^ . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e e J u e F = w H l l l l w l w b b 1 : K b 8 8 w : s l g o # d M M d M M _ N ) l 1 1 8 w h w b A s S I /.U z e Q @.b b 8 8 8 8 b K : A A A b 8 K h w : s b l b A @ 8 s b [ v = %.1 6 1 6 6 6 6 1 1 1 1 6 6 6 B [ ] ] n n B y ] Q e ,.-.%.1 n D [ 6 6 ( ( ( ( 6 ( 1 6 ~ e [.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . .' J e e 2 * J J r e | Y e e e e e e e e e e e e e e e e e e e e e e e e e e e e e * ' . . . . u ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y > i q e e e e e e e e e e e / 5 z e e e e e e e e e e ~.+ ' q r ^ . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e e - & e F = b b l l l = w w w b b ( : 8 l 8 K l 8 s b g o ) d _ } d M M &.v ) l 6 1 8 w h w P b 8 8 S C e e >.W H b b s b 8 s b K : A A A A 8 8 K b h b b b : l b : s b [ v = %.1 6 1 6 6 6 6 1 1 6 1 ( ( ( B [ ] ] D D ( y ] $.,.o [ y 1 D D 1 1 ( ( ( ( ( ( ( [ % e - !.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . 7 e U O * 4 G | e U e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 7 +.c . . . . + ~.e e e e e e e e e e z > c . . . . .c L z 7 ]. . . .j O Y ^ i q e e e e e e e e e e e q t z e e e e e e e e e e e G ' 4 Y u ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e e ~./ e F = b b l w b = w w w b b 6 W 8 8 l b 8 w D w g o } , _ M M M } d ) ) l 6 1 8 w : w b 8 b 8 l -.>.e $ @.8 b b b b b 8 8 A : : : : : s 8 K H H = @.@.H l l : W 8 6 v = %.[ 1 1 6 1 1 ( 1 1 6 1 6 ( ( B [ [ [ -.D = y [ B $ B [ y 1 D D 1 [ 6 ( ( ( 6 ( 1 E (.e 2.' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . .c z e z J * 3 u 3 e e U Y U Y e e e e e e e e e e e e e e e e e e e e e e e e z 5 . . . . . u ~.e e e e e e e e e e z > . . . . . ._.. ^ ]. . . .].' 2 U 5 j 2 e e e e e e e e e e e O i - e e e e e e e e e e e 3 ' ' 4 ~.u ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e e e r e F @.w b l = l = w w w b s 1 W P W w @.h b @.'.) C o # o ) , d ) } ) ) l ( ( s b : w b K w w w S % ;.l K 8 8 K b 8 8 8 A 8 K K K 8 8 A l S W ) ) ) ) v l S : W 8 1 v = y [ 1 1 ( 1 [ ( ( 1 6 ( [ 6 6 B [ ] y D n b ] ] 1 w = [ y [ n D 6 1 1 1 6 B 6 1 1 X e {.' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .c > r e - J J & . > z e 4 + u + 4 - e e e e e e e e e e e e e e e e e e e e e e U u ' . . . . .c > Y e e e e e e e e e e U u . . . . . . . . . . .c c 7 z j .| e e e e e e e e e e e 4 i - e e e e e e e e e e e 3 ' ' & e + ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e e e e e F = b b b b b = b b b w w B s s 8 8 b @.D % X x e e e e >.X o M d v ) = 1 [ W 8 s w b K b b 8 l $.V b s s 8 b 8 8 8 b b K A A : s l @.$ ! ~ e e e e (.X C &.l b 1 v = ] 1 1 [ 1 ( [ 6 6 1 6 6 1 ( 6 B 1 [ y = = B ] [ B D = [ y 1 = D ( 6 6 6 ( ( 6 [ $ e x > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . + Y e - J J + > 4 Y ~.u i i i j L O e e e e e e e e e e e e e e e e e e e e e e O ' ]. . . . .c 5 Y e e e e e e e e e e U u ' . . . . . . . . . . . . .c ].| z ' _.| e e e e e e e e e e e 4 i - e e e e e e e e e e e * ' + e & ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e e e e e e e e e e e e e e e e F = l w b b b l b b b w w n b A b w l o ,.e e r - | | - Y e ^.~ # g ) = 1 [ : s s w b K w w 8 b b l 8 8 8 8 8 8 8 8 8 l : : A A @.*.;.^.e ~.z | | | z e e (.% D ] v = y 1 1 1 6 6 1 6 1 [ ( '.6 [ 1 ( ( 1 ] B ( [ 1 6 6 6 ( 6 1 1 6 1 [ ( 6 6 6 B [ n >.e ` ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .' k e e | * 4 u / e e ~.u + 2 J m ' ' / e e e e e e e e e e e e e e e e e e e e e z m . . . .c 5 U e e e e e e e e e e ~.& ' . . . . . . . . . . . . .c 5 - | j m - e e e e e e e e e e e k i 7 e e e e e e e e e e e / j > e 4 ' . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e Y Y e e e e e e e e e e e e e F = l w b b b l w w w b w B l = @.$.! e e | k ^ ' ^ 4 3 k }.z e ^.% } = 6 1 8 8 : w b K b w b b s w 8 8 8 b b b 8 8 8 l 8 s 8 S o (.e r * u T m 3 3 3 k 2 ~.e ;.( g = y 1 6 6 6 6 1 6 6 [ ( '.6 6 1 6 ( ( 1 '.B [ B B ( 6 1 ( ( 6 6 1 1 6 6 ( ( '.[ C e | 4.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .' 4 e e - * k / e e z z u & e e - m ' > z e e e e e e e e e e e e e e e e e e e e e k ' . . . .c t - e e e e e e e e e e e k j . . . . . . . . . . . . . m z 7 j > z e e e e e e e e e e e G i 7 e e e e e e e e e e e 7 i c m Y / . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e e q | e e e e e e e e e e e e e ) @.l l w w w w w w w P : '.s [ @ ;.e x & j . 4 J q O + O e e % 1 '.( b b : w b s 8 b w b s 8 8 8 8 8 8 8 b 8 8 K 8 b @.% e e q m ' ' > 4 4 * q 3 & - e >.v S y [ 1 1 1 6 [ ( 6 [ 6 ( 1 6 1 1 1 1 1 6 6 1 B ( 1 6 6 1 6 6 6 1 1 1 1 6 ( [ *.e Y u ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .j J e e - J * U e | k q + 5 r e e J ' j * e e e e e e e e e e e e e e e e e e e e e | ' . . . .c f - e e e e e e e e e e e J j . . . . . . . . . . . . . ^ Y O j . U e e e e e e e e e e e + i / e e e e e e e e e e e | c L - | . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e ~.u 3 e e e e e e e e e e e e e ! S l l l l l l l l l l w = : [ ! e ~ u j c . . u q 2 4 4 7 & 4 e ^.) [ ( s P K b 8 8 8 8 b 8 A 8 8 8 8 s s s 8 8 8 8 K @.$ e e J ' . . . * q O k * q u | e ~ ( y 1 1 1 1 6 [ 6 6 [ 6 ( 1 6 6 6 1 1 [ 1 6 6 1 1 1 ( 6 1 1 1 6 6 1 1 1 1 1 ( ~ e * ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .j / e e r J 2 e 7 + 3 O u ' q e e - c ' G Y e z O q U | 2 e e e e e e e e e e e e e U u ' . . .].].7 e e e e e e e e e e e O ' ]. . . . . . . . . . . . . . e 4 i u e e e e e e e e e e e Y u i * e e e e e e e e e e e z > ].7 z . . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e z > U e e e e e e e e e e e e ,.g H h h h h : h h h W 8 l l o e x . j . . . . ._.5 . * 7 k 2 & 4 e >.n 1 : s b s 8 8 8 8 b 8 s 8 8 8 8 8 s s s s s 8 H @ >.e * ' c . . . ._.L m G q O 3 2 u - e o %.1 6 6 ( ( 1 ( 6 1 B = '.B '.= B @.B = n l = B B n = B B B B = = = B = 1 % e - m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .j / e e U / J * G & 4 O J i & e e r > ^ r e 7 i m z 4 ' r e e e e e e e e e e e e e * ' ]. . .]. q e e e e e e e e e e e 7 ].c . . . . . . . . . . . .' G e G i & e e e e e e e e e e e z ^ j 3 e e e e e e e e e e e U u ' ' O e ^ c . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e e ~.u ' 2 e e e e e e e e e e e e e % @.s : : : s W W W h h b P ,.e 6.j . . . . . . .c c j + | & 7 u | e o ] W W w s s 8 8 8 s 8 : s s s s b s s s s s 8 l % e | T . . . . . .].c J q 3 / G e ,.6 [ 6 1 6 B 1 ( 6 [ = l B B F ( B B 6 B ( = B = B = = n B B B B B = B 6 E (.e 2.' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .' J e e e 7 4 G G k 3 J | .5 z e U . ' ^ r e 7 .^ z J j / e e e e e e e e e e e e e z 5 c . . .' * e e e e e e e e e e e - 5 c . . . . . . . . . . . .' J e . j J e e e e e e e e e e e - m j G e e e e e e e e e e e e & j j 3 e & ' . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e Y e / i & e e e e e e e e e e e e e ;.8 s s s s w s s s W , @.o e | 5.c . . . . . . . . . .j + 7 3 / G e >.1 b s : b 8 : s 8 b s : s s s : s s 8 s s s b s x e G ' . . . . . . . . . .c j * J q & 7 e $ ] 1 6 6 B 1 6 1 y ( = B B $ I 1 B ( ( B n 1 ( D B 6 = n B B 1 B n B 1 X e 2 ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .' 4 e e e - J k G G + G Y + i 7 e z t ' + Y e | t ^ z J i G e e e e e e e e e e e e e e G ' . . .j 3 e e e e e e e e e e e Y ^ . . . . . . . . . . . .' 7 z > j 7 e e e e e e e e e e e | .' . e e e e e e e e e e e e J ' ' u ~.O j . .' u e & ' . . . . . . . . . . . .' & e e e e e e e e e e e O | z L L z e e e e e e e e e e e e ^.v b @ W W W $.@ W $.8 l ! e 4 j . . . . . . . . . . . .j * J 2 + | e $ 6 = b l w w w w l l l w w l l w w l b w l @.I e >.!.c . . . . . . . . . . .].L 2 3 / & e ;.'.1 ( '.'.'.'.( 1 = l = S # ;.'.= = '.@.l n P s b @.= = = = = = n 6 # e r ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . + Y e e Y O k + . > . e O j & e 7 ' j * e e | L ^ z J j t - e e e e e e e e e e e e e 7 ' . . .' G e e e e e e e e e e e e + . . . . . . . . . . .].c z | ]. - e e e e e e e e e e e 2 j ^ U e e e e e e e e e e e | c c .z | c c .' u e & ' . . . . . . . . . . ' & e e e e e e e e e e e & 3 e G i / e e e e e e e e e e e e e Q H g &.&.g &.g &.g , $.>.Y u ' . . . . . . . . . . . . . q J k O e % @.h : h h h h h h h h : h h h h h h h h h H Q e 3.' ]. . . . . . . . . . . . .' 4 J / u U /.D ( B B B B B ( 1 n l = 6 ) e o 1 l n = = B D D D n n B n n n = B B ,.e 3 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . .].5 z e e e | k u > t > e z c ^ - u j > z e e | t ^ z J ' ' * e e e e e e e e e e e e e r . . .' u U e e e e e e e e e e e J ' . . . . . . . . . . . u ~.O i ^ r e e e e e e e e e e e * j c 5 - e e e e e e e e e e e U 5 c j 2 Y ^ .' u e & ' . . . . . . . . .+.^ > ' & e e e e e e e e e e e 3 > e q j u e e e e e e e e e e e e e >.h l b l s l P D B ] F e z m c . . . . . . . . . . . . .c 2 3 3 ` e Q : , , _ _ _ _ _ _ &.g d _ _ _ _ _ _ _ _ _ h X e 3 j . . . . . . . . . . . . .' G O * G - e I v ) v v v } v &.} ) } v o e ,.) } } } ) ) # # # # # # # # # # ) ! e | f c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . .].O e e e ~.7 + m m ~.~.G _.^ ' 2 e e e 7 _.^ z J ' . Y e e e e e e e e e e e e e J j . . > z e e e e e e e e e e e 7 j . . . . . . . . . . .j 3 e & i k e e e e e e e e e e e e 3 ' c .7 e e e e e e e e e e e e & ' & e & ' .' u e & ' . . . . . . . . . ~.q j & e e e e e e e e e e e 3 j 7 U t :.| e e e e e e e e e e e e e # @.b w 8 = l n 1 y E e - j . . . . . . . . . . . . . . O 4 3 ` e ! P W W @ @ @ @ @ @ h @ , @ @ @ @ @ @ @ @ @ H X e 2.' . . . . . . . . . . . . .' + * 4 k | e ) g d g g d M g $.v v v g o e e C , N v } v # # # ) ) ) ) # # ) o (.e 2.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . .u z e e e e z * u u z 2 u ' 5 q e e e e 7 ^ z J ' ].c 7 e e e e e e e e e e e e e - L c .].' | e e e e e e e e e e e z 5 c . . . . . . . . .c 7 U 5 j / e e e e e e e e e e e Y u .j O e e e e e e e e e e e e q j > U | .' u e & ' . . . . . . .c c | e q j & e e e e e e e e e e e 3 i 3 e k i 4 e e e e e e e e e e e e e ! @.n = 8 B = = 6 [ 0 e z f c . . . . . . . . . . . . .c 2 3 3 3 e Q l W h h h h h h h @ h h @ @ @ h h @ @ @ @ H X e k j . . . . . . . . . . . . .' G O * G - e F = w P P s W D [ s @ W H # e /.# l P W , W v v d &.V @ &.g d &.$.! e 7 c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . .f 5 3 U e e e e e e U + i ' c > | e e e e e 7 ' ^ z J ' .j k e e e e e e e e e e e e e e + ' . .j 2 e e e e e e e e e e e ~.G ' . . . . . . . . . ^ ~.2 j 5 - e e e e e e e e e e e r L c .j 3 e e e e e e e e e e e e - m ' q e . ' u e & ' . . . . . . .j k e e q j & e e e e e e e e e e e 3 j ^ U 7 j ^ r e e e e e e e e e e e e R &.@.= 8 B = l '.1 -.x U . . . . . . . . . . . . . ^ q J k J e C l W W @ @ h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ l X e J ' . . . . . . . . . . . . .' 4 J / . r ^.&.b b h : s h 8 1 W , @ H # e Q = h s @ _ , ) } } M _ , _ _ d _ W } x e & ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . .5 ^ 3 - Y ~.e e ~.U k G * ^ f z e e e e e 7 j ^ z J ' . > z e e e e e e e e e e e e e 2 ' . .' 3 e e e e e e e e e e e e O ' ]. . . . .j ' . .j O e + j u e e e e e e e e e e e e | c ]. .' + Y e e e e e e e e e e e e & ' ' + e q ' ' u e & ' . . . . . . > z e e q j & e e e e e e e e e e e 3 ' j 7 U ^ i 7 e e e e e e e e e e e e e % 6 = s ( '.l 6 [ [ ! e k j . . . . . . . . . . . .j * J 2 u 7 e o = &.8 h h h h h h h h @ @ @ @ W @ , @ @ @ : o e | +.]. . . . . . . . . . . .].L 2 3 q u e >.@ @ s s W h h s 6 W , h H # x &.: h 8 h , , } } } M _ , , _ d _ s h % e z m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._._. ._. . . ._.f _.' J e e ",
|
||||
"e e - .]. . . . . . . .t > u k / 7 | | 2 / Y e e k i 2 e e e e e 2 j ^ z J ' . .j 2 e e e e e e e e e e e e e r . . u e e e e e e e e e e e e z 5 c . .].t O 3 c ' ^ Y 7 j / e e e e e e e e e e e e O . .c L z e e e e e e e e e e e e | ].' 7 e + i u e & ' . . . . .c ' 2 e e e q j & e e e e e e e e e e e 3 ' ' & e k i G e e e e e e e e e e e e e ~ = '.: '.( b ( ] ] C e 7 c . . . . . . . . . .j + 7 3 / . ~.>.g 8 = d @ @ @ @ @ @ @ @ W @ @ @ @ @ @ @ @ @ , @ R ~.. . . . . . . . . . .c j * * q & / e % S n : h s W h 8 1 h , W K o % l W @ s h , , } M } d _ _ _ , _ d : , , ~ e O ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .f t L f L .t L L 5 t ' * e e ",
|
||||
"e e - .]. . . . . . . ._.5 ^ + 3 J O O * O ~.e e 2 j & e e e e e 2 j ^ z J ' . . + e e e e e e e e e e e e e e 4 ' .c 5 r e e e e e e e e e e e e k ' . .c L r 7 j 2 e + j > r e e e e e e e e e e e e & ' . . .' | e e e e e e e e e e e e e & ' ^ U - 5 . e & ' . . . . .' 3 e e e e q j & e e e e e e e e e e e 3 ' c 5 r | ' m z e e e e e e e e e e e e ^.) 1 : '.B l ( [ ] N x e + ' . . . . . . .].c j u | & 7 . / e X = W @ s @ @ @ @ @ @ @ @ @ @ @ @ W @ , @ @ @ h 8 ! e q ' ]. . . . . . .].]. 4 2 3 q u /.R ) = 8 : w : s h 8 [ h _ @ h I W : W @ h h , @ } M M d _ _ _ _ d _ _ , , # ^.~.u ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.L 5 t m c 5 5 L m L ' J e e ",
|
||||
"e e - .]. . . . . . . . .f 5 ^ u G 3 4 4 J ~.e e z c ^ Y e e e e 2 j ^ z J ' . .c L - e e e e e e e e e e e e e - T c ].c 7 e e e e e e e e e e e e - Z c .c L z 2 i 3 e 2 ' j J e e e e e e e e e e e e Y u ' . . .' * e e e e e e e e e e e e e - 5 ' & e - 4 e & ' . . . .' u U e e e e q j & e e e e e e e e e e e 3 ' ].' / ~.^ j / e e e e e e e e e e e e e Q 6 8 = ( w ( [ [ H C e - 5 . . . . ._.L ^ * 7 k 2 k 2.e (.v K h @ s h h h h h h h h @ @ @ @ h h @ @ @ @ h A v (.e & j ]. . . . ._.t 5 u q / 3 7 ^ 7 e ! l : s 8 b s s @ 8 [ h , @ @ s W W W @ : @ , @ } } d _ d _ _ _ d _ d , _ h Q e | 7.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .].L m > t 5 > ^ > > ^ 5 ' J e e ",
|
||||
"e e - .]. . . . . . . . . .f L m ^ . u + & ~.e e Y u f - e e e e 2 j ^ z J ' . . .' J e e e e e e e e e e e e e e + .' 4 e e e e e e e e e e e e e k j .c L z | J e z > j ^ z e e e e e e e e e e e e - L c . . .' + e e e e e e e e e e e e e e / j ].' & r e e & ' . . .' > z e e e e e q j & e e e e e e e e e e e 3 ' .' G e J i + Y e e e e e e e e e e e e x V w l 6 b 6 ] 1 : g ~ e 7 |. . . . . 2 2 4 4 7 k u r e % w , @ @ h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W , H % e r u ' ]. . . ^ * q O k J 2 ^ {.e >.&.8 W W 8 s P 8 h 8 [ W , @ , s s @ W @ P @ _ , } } d , d _ _ , d d _ _ _ , g >.e 3 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.f f ].f ^ ^ 5 f t ].' J e e ",
|
||||
"e e - .]. . . . . . . . . . . .f L 5 m m . ~.e e e 4 i q e e e e 2 j ^ z J ' . . .' u U e e e e e e e e e e e e e q j .' + Y e e e e e e e e e e e e z > ' c L z e e | ^ ' ' 2 e e e e e e e e e e e e e / j . . . . > z e e e e e e e e e e e e e e 4 j c ' m * e & ' . .' ^ - e e e e e e q j & e e e e e e e e e e e 3 ' .c t z - _.' - e e e e e e e e e e e e e o @.n 6 b 6 ] 1 W h F x e | ^ j ' ]. . 4 J 2 O . & (.e Q 8 h @ @ @ h @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W , , H Q e U 3 ' c ^ 4 4 * 2 3 . 7 e x *.l : s 8 s : s b h 8 [ W , @ @ @ W W h @ s W , , } } M _ d _ _ _ _ _ _ _ _ _ : o e r ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .]. . .].]. .].].].].].].].f > 5 ]. .].].' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . ._.c > ~.e e e 2 i 4 e e e e 2 j ^ z J ' . . .]. | e e e e e e e e e e e e e z ^ c t - e e e e e e e e e e e e e | m ' f 4 O & +.j ' J e e e e e e e e e e e e e ~.G ' . . . .c 7 e e e e e e e e e e e e e e ~.4 ' j . e & ' j + z e e e e e e e q j & e e e e e e e e e e e 3 ' . .' O e u i J e e e e e e e e e e e e e ;.l = 6 b 6 ] 1 W _ S *.,.e r * . i u * & u G 7 e e C s W @ @ @ @ W @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W @ , h w Q e e 7 G 5 i k 2 3 + u 4 r e ,.I @.W h h s 8 W W : @ s 6 W , h @ @ W W @ , s s , , } } M _ d _ _ d _ , _ _ _ d , h X e 2 ' ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .f t .t 5 t t 5 m L c t 5 L 5 t m > ^ ^ f c ].c c ].' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e | c + Y e e e 2 j ^ z J ' . . . .' 3 e e e e e e e e e e e e e e 3 ' .j / e e e e e e e e e e e e e e - ^ ' i i j j t O e e e e e e e e e e e e e e r L c . . . . .j 4 e e e e e e e e e e e e e e e e 7 u ' . e G j > O U e e e e e e e e q j & e e e e e e e e e e e 3 ' . . u e * j ^ Y e e e e e e e e e e e e /.I ( 6 b ( ] [ W , l @.F ! e e U | {./ O {.- e e x o 8 h @ @ @ @ @ W @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h , @ @ h 8 o ,.e e z 2 | {./ | U e e ;.N l = W @ , h P W , @ , h ( : @ : h @ W W h , h s @ , } } d &.d , _ d d _ _ _ _ _ _ , ) (.e 2.' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .L 5 f t m L ^ t m ^ t L ^ . m u u u u . . . ^ ^ > _.^ u t > q e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e z > > r e e e 2 j ^ z J ' . . . . > r e e e e e e e e e e e e e | +.]. u e e e e e e e e e e e e e e e r O + u u 3 - e e e e e e e e e e e e e e e q ]. . . . . . ^ r e e e e e e e e e e e e e e e e ~.7 q e 2 q U e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . .c L - z c 2 e e e e e e e e e e e e e C ( 6 b ( ] [ h , = 8 l '.) ! x e e e e e e ~ Q &.H h @ @ @ W h @ @ @ @ @ @ @ @ @ h 8 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ H &.C ~ e e e e e e (.X # h : b ( w @ , , 6 B &.h , W B h , @ s h W W h h , 8 h @ } } d _ _ , _ _ d _ _ _ _ _ _ _ : % e - !.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .m m m 5 > 5 ^ L > . 5 . ^ u ^ . . u u + + ^ + + + + + G + u / e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e ~.u j z e e e 2 j ^ z J ' . . . .]. q e e e e e e e e e e e e e ~.u c L - e e e e e e e e e e e e e e e e Y U U e e e e e e e e e e e e e e e e e G ' . . . . . . .' 7 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . .j J e + i k e e e e e e e e e e e e e >.n 6 b ( ] [ W , = P 8 8 w S v I # % o # ) @ H , h @ @ @ @ W h @ @ @ @ @ @ @ @ K ) % K @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h l @ # # o o o # v H @.&., s ( w W @ , '.B @ W @ : ( W , @ s @ @ h W w g W @ @ } } _ _ _ , _ _ d _ _ _ _ _ _ _ , , ~ e * ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .> m > ^ . 5 . m m ^ . ^ . G . u t + G u u + G G k k & k . G O e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e + i | e e e 2 j ^ z J ' . . . . .' G ~.e e e e e e e e e e e e e / j .' J e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e - t c . . . . . . .' k e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . .' u ~./ j L z e e e e e e e e e e e e ^.# [ b ( ] 6 W , l 8 8 P s w : [ '.@ : K l h @ , h @ @ @ @ W h @ @ @ @ @ @ @ h K X ^.*.: @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h A 8 K : : K : , = , , : B b s W h w l W : h K 6 s @ h s @ @ s 8 n M _ , @ } M ) , _ , _ _ d , , , _ _ _ _ _ h # ^.Y . ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .f ^ > c m . 5 m . . f c t ^ 5 > _.^ . + + .. ^ . > . & t ^ * e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e 3 j 2 e e e 2 j ^ z J ' . . . . .c f - e e e e e e e e e e e e e z > ^ r e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e J ' . . . . . . . . > z e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . .].' - z > j / e e e e e e e e e e e e e ! [ b ( ] 1 W , l 8 s P s w @ ( D g , , W , , @ @ @ @ @ @ W h @ @ @ @ @ @ @ A $ e e ! H h @ @ @ @ @ @ h @ @ @ @ @ @ @ @ , @ h @ , , @ @ , P , , : w : : : : : : s s @ : @.@ , h = W d h K 6 M d d , } } ~ o , _ _ _ d d _ , , _ d d _ _ : ! e | c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c c .c c ].]. . . .c c c .c .c c c ' ].j J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e 4 j * e e e 2 j ^ z J ' . . . . . .' * e e e e e e e e e e e e e e k ' .' q e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e r > c . . . . . . . . .' * e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . . .' 3 e G i + e e e e e e e e e e e e e (.$.= ( [ [ W , l w 8 P s 8 @ ( n g , , W , , @ @ @ @ @ @ W W h h @ @ @ @ h W ~ e e e % H @ @ @ @ @ @ @ @ @ @ @ @ @ @ h @ W @ h s b @ @ h s &._ : s 8 h s : @ h s h : 8 6 , d _ 8 8 h d g @ , @ _ , _ Q e >.} M d _ _ d } M , , , } M M , g ,.e 3 j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .]. . .].]. .].].]. . ._. .].f f ].].].].].]. .]. .c c .c c c ]._.L ].c c c ].c ]. .c c . c .c ].' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e 4 j O e e e 2 j ^ z J ' . . . . . . . ~.e e e e e e e e e e e e e | ]. . Y e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e * ' . . . . . . . . . . ^ r e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . . . ^ ~.2 j L | e e e e e e e e e e e e e o S 6 [ [ W , 8 w w 8 n W @ ( D g , , W , @ @ @ , @ @ @ @ @ @ W @ @ @ @ l C e - [.e (.v A h h h h h h h @ @ , , @ , @ @ W _ @ l ( @ _ @ W , , b W l @ 8 P h W l @ : W ] n &._ , s 6 @ &.d -.W , h # R e e C _ M d : h M } _ h n d M } _ , % e z > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .t _.].t t ].f f t c 5 . f ].> m ].f L t f t ].L .m 5 L > > _.^ . c > > > t 5 ^ Z c m ^ 5 +.^ m ].m ^ c .J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e - | e 4 j O e e e 2 j ^ z J ' . . . . . .c Z 7 e e e e e e e e e e e e e Y . ].' q e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e z ^ . . . . . . . . . . .' O e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . . .c c 7 U m j J e e e e e e e e e e e e e ~ @.6 [ 6 h , K b P : D s @ ( n g , , s , , @ , , @ @ @ @ @ @ h @ @ @ H o e Y u j {.e >.&.K , @ @ @ @ @ W @ , , @ @ @ s @ d , b 6 s , @ , d , W W = : b P , @ 8 h w w = W @ , h @ W W @ g n P h : ;.e | U /.# _ _ 8 d , } _ _ W _ g } K K d ;.e / ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 > t L > ^ L ^ ^ ^ t ^ + t ].u > _.u u . . ^ ' u ^ + G ^ + G + L + + c + & 4 ^ + k u . & 3 . . 3 u ' u 3 . + 7 e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m e / . .| k i O e e e 7 j ^ z J ' . . . . . . .j 3 e e e e e e e e e e e e e e O j .' . r e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e J ' . . . . . . . . . . . . > z e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . . . .j k e k i . U e e e e e e e e e e e e /.) [ ] 1 @ , b P P s P h h ( n &., , W , , W @ @ @ , @ @ @ @ W @ @ H # R e 4 j 5 | e ~ &.: @ @ @ , @ @ @ @ @ , , @ W @ _ , : n W &.&.( , _ 8 @ @ s = n @ h b @ @ s [ W &._ : 8 D , , &.8 8 K o e z . - e ~ _ d @.s M } , h W d _ M d _ @.v ^.~.+ ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .].L ^ L . L 5 . . 5 ^ > m u m . . f G m u k ^ T 3 & & & . u G u ].. G ' L + > u 4 k & ^ G k > 4 5 . G 3 4 & 7 e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m e G i u | . i 2 e e e 7 j ^ z J ' . . . . . . . > z e e e e e e e e e e e e e - m _.j J e e e e e e e e e e e e e e e e e e e e e e e e e e e e e - L c . . . . . . . . . . . . .j 3 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . . . .c m U 7 ' | e e e e e e e e e e e e e Q ] ] [ @ , b 8 8 P D s @ 6 n &., , s , , @ @ @ @ , , @ @ @ h @ H I ,.e / c .' ^ z e >.&.H @ @ h h @ @ h W @ @ h @ , @ , W P P , , B h @ B : @ w l b s l = ( 8 b '.: : h = n = W @ , = = &.,.e & * * - e % h b b , M @ 8 : , K , : , K l C e - !.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.^ u ^ > . u m u c . ^ ].+ . G & 5 G ].+ + G + 3 u 3 & m & 3 G t & J m k J & u & * ^ u 3 * ^ + 4 k . k O 4 & / e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m e & i / 4 ' L z e e e 7 j ^ z J ' . . . . . . . .' 2 e e e e e e e e e e e e e e & ' .c L - e e e e e e e e e e e e e e e e e e e e e e e e e e e Y + ' . . . . . . . . . . . . . .]. 7 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e q j & e e e e e e e e e e e 3 ' . . . . . .' 7 Y ^ j & e e e e e e e e e e e e e ,.n y [ @ , l s : 8 8 8 h 6 n _ , @ s , h s @ @ @ @ @ @ @ @ h l o (.e {.4.c . . .' ^ - e ,.I H h @ h h h h @ @ @ @ P d , , , h 8 , _ _ d _ @ , , H @ @ @ W h 8 @ : @ _ , , , , s , _ d h @.Q e 7 + 2 . | e x } h M d } M d _ d d } _ _ M _ d >.e }.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .].Z 5 f c L L c f ._.f c t ]._.5 5 _.t .f +.5 L Z c 5 5 f m m T ].5 m t 5 5 > f f > _.5 m m +.^ 5 L > t J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m e 2 ' j i j * e e e e 2 j ^ z J ' . . . . . . . .' G e e e e e e e e e e e e e e 7 . .' u U e e e e e e e e e e e e e e e e e e e e e e e e e e * ' ]. . . . . . . . . . . . . . . . > z e e e e e e e e e e e e e e e e e e e e e e e e e e e ~.k j & e e e e e e e e e e e 3 ' . . . . . .' G e 3 j ^ z e e e e e e e e e e e e e $ y [ : @ b : : b 8 l , '.D _ &., W &., h h h h @ h h @ A 8 % /.e q 7. . . . . .' ^ | e x % b K , @ @ @ @ , , , _ h = , &.&.@ h P } M M M } } M } _ # % } } } M v ) ) ) } } ) ) ) } } o e U u 2 + q G {.e X } # # # ) ) # # ) # # # # # # % e (.u ' . . . . . . . . . . . . . . . . . .].]. . . . . .].]. . . . . . .].]. .c c .].].].]. .]. . .c c .]. .].].].].]. .c c ].c c c .c c .c c c ].].c ].].c c . .c ]. .].c c ' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.~.O k k O ~.e e e e 2 j ^ z J ' . . . . . . . . 5 - e e e e e e e e e e e e e Y ^ . .' 3 e e e e e e e e e e e e e e e e e e e e e e e e e 7 +.c . . . . . . . . . . . . . . . . .' + U e e e e e e e e e e e e e e e e e e e e e e e e e U & ' & e e e e e e e e e e e 3 ' . . . . . . m z - ' ' q e e e e e e e e e e e e e X [ *.Q : K , , h , s _ w h M d g , d _ _ _ _ _ _ _ , : ) ;.e ~.[. . . . . . . .' !.q ^.e ;.) : , _ _ &.g g g M h s M d d _ s B } g g g M M s g C x # g g &.&.} } } M } } ) } v g v ~ e }.3 * & q j . r e % ) ) # ) ) # ) } ) # # # # } } X e 7 c .].c c . . . .c c ].].c c > u u ^ c c c ^ . c ].c c ].c .c f u ^ ]. ^ 5 c c c c > ^ c c c .c c c c ].c ' u m ]. c c ].c c c ].].c c c c c . ' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 j ^ z J ' . . . . . . . . .' O e e e e e e e e e e e e e e * j c c ' 4 e e e e e e e e e e e e e e e e e e e e e e e | m . . . . . . . . . . . . . . . . . . .j & Y e e e e e e e e e e e e e e e e e e e e e e e z + j .' & e e e e e e e e e e e 3 ' . . . . . .].' / ~.. j G ~.e e e e e e e e e e e e x B < e ;.N b A l W b _ ( n d &.&.h _ , @ @ , , H 8 *.Q (.e z G ' c . . . . . . . . .c k z e /.Q v h K h , , , M W [ g g _ d @ = ) M d , h v o ~ e Q , M M s s } } M A , , d M d ] % e - u 7 . 7 ^ c j }.e >.) } ) d , } ) } : d M ) ) _ d v ,.e 3 5 > .m . ^ f ].].f . ^ m > ^ u 5 t . & > ^ u ^ > k L u . t . c ^ L + + L k m ].. G u 3 4 t . + u c u G > . u + c u + 4 . + & 5 & . u ].u G . u m m . 5 & . ^ ^ _.u q e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e 2 i m z 4 i j . . . . . . .' u U e e e e e e e e e e e e e - ^ 5 m m 5 j 4 ~.e e e e e e e e e e e e e e e e e e e e | 5 ' . . . . . . . . . . . . . . . . . . . .].' G U e e e e e e e e e e e e e e e e e e e e e - . ' . .' & e e e e e e e e e e e 3 ' . . .].' j j i u e J i j - e e e e e e e e e e e e e C I e e ^.! # B @.l h 1 = d &., h , h h : H 8 # Q /.e /./ > j ]. . . . . . . . . . . .c ' > / Y e ^.! o @ H h h w _ @ @ : b , h '.} d , ) % ~ e e /.$ # # o # ) I o o o ) # I # o o x e 2./ k O 4 ' .c !.| e X o o # # *.# % o # # o o o o *.! e z u . . . u ^ . c L + + + + G > + u & ^ k . G m Z G 5 + k u G ' G > . u ].& > > G k ^ G G t 3 G + 5 + k 3 k & G & & . J & + + & 3 & & & G G 3 k ^ ^ & & 3 3 4 u +.k + 7 e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m ~.e e e e e e e e e e z 2 7 Y - 2 7 & . . . . . . . | e e e e e e e e e e e e e e r r r U - ' ' k r e e e e e e e e e e e e e e e e e e 2 L . . . . . . . . . . . . . . . . . . . . . . .' + z e e e e e e e e e e e e e e e e e e Y O 5 ' . . .' & e e e e e e e e e e e 3 ' . .c 5 7 - - - - e r - - U e e e e e e e e e e e e e ^.R e ~.U e /.>.! $ I $.$.d g g &.d } v # X >./.e ~.{.u ' . . . . . . . . . . . . . . .c ' u {.U e ^.,.;.o I v N d &.h W g } F # Q >.(.e e e e e ..............................^.e {.& q G 7 T c . .' + Y e /.............................^.e e 7 . > ^ G + L & ^ L G G k k + 5 & 5 ^ u k k > k > > 4 f + & * G & ^ k > + k _. 4 u t G 4 G j u & G 3 5 . 3 k / 4 > u J k t J 4 + u 4 4 3 k J G . 4 3 u 4 3 4 4 k & G & * & | e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . .c m r U U U U U U U U U U r z z ~.r z r 4 . . . . . . .' k Y U U U U U U U U U U U U e r q 2 2 O ].' . 7 e e e e e e e e e e e e e e e z k . . . . . . . . . . . . ._. ' ' ' ' ' ' ' ' ' ' i <.O U e e e e e e e e e e e e e e e | + ' . . . . & Y U U U U U U U U U U k ' . .c m | z z z z z e r z z U U U U U U U U U U U U U U U z 7 ^ O z e e e e e >.~ ~ ~ ~ >.^.e e e e z O u ' ' ]. . . . . . . . . . . . . . . . . .].' ' ^ [.- ~.e e e e ,.~ ~ ;.~ >./.e e e e r {.7 - - - z z z z z z z z z z z z z z z z - > & ^ G u . . . .' [.z z z z z z z z z z z z z z z z z - z - + Z u G > ].+ > _.. . . G k G 5 ^ & G ^ 3 & . ' . & > 5 G k m > 3 4 ^ + G 5 5 & + ^ G k m c c u > u f ].c + & G u L ^ ^ . k & 5 + k m u . . ^ . 4 4 m G + . t 3 + + + u ' q e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . . .f . . . . . . . . . . . ^ 5 . z * L > L . . . . . . . .].t . . . . . . . . . . . . ^ 7 U L i i j . . . T G | U e e e e e e e e e ~.z J > ' . . . . . . . . . . . . . . .' k | 7 7 7 7 7 7 7 7 7 7 7 7 z e e e e e e e e e e e e U 7 G :.' . . . . . .].5 . . . . . . . . . . . 5 ]. . . ._.m m m m L + e / f > . . . . . . . . . . . . . . ^ m m ' m u }.7 z z z z z r z z z z 7 }.u m j . . . . . . . . . . . . . . . . . . . . . . .c j L . 3 {.- z z z z r z z z z | O G > L m m m m m m m m m m m m m m m m > > > m c ' . . . . . .|.> > m m m m m m m m > > > > > > > m m > f c c . c .c c ' u ^ j ].c ' ' m + _. ' c ]. ' ^ 4 u .' ' ].].' c ' ' ]. . . c . . . ' ].c c c ' ' ]. ' ]. c <.G L ' c ].' _. ' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . . . . ' > z J j c . . . . . . . . .c i G e * j . . . . . .c ' ' u 4 q | - - - - 2 * G t ' . . . . . . . . . . . . . . . .j 4 z - - - - - - - - - - - - - - - - - - - - - - | q 4 . ' ' c . . . . . . . .c c . . . . .c ' T - z :. c . . ' ' ' ' ' ' . . . . . . . . . . . . . . . . . . . . . . . . . . .c ' ' ' ' ' ' c c . . . . . . . . . . .c ]. . . . . . . . . . . .].]. . . . . . .c . . . . . . . . . . .f c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > - 3 ' . . . . . . . . . . . . . . . . . . . . . . . .c t - q ]. . . . . . . . . j ' t 5 5 5 5 j ' ]. . . . . . . . . . . . . . . . . . .].t 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 t ' j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .j J e k ' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - .]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ._.m L ]. . . . . . . . . . . . . . . . . . . . . . . . . .c > . . . . . . . . . . . . .].c c c c c c . . . . . . . . . . . . . . . . . . . . . .].c c c c c c c c c c c c c c c c c c c c c c c c ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c > J + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .' J e e ",
|
||||
"e e - ].c ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].c c ].].].].].].].].].].].].].].].].].].].].].].].].].].]. ].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].]. j .].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].' J e e ",
|
||||
"e e - j J e e ",
|
||||
"e e r 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 q - e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ,.$ ! e e e e e e e e e e e e e e e e e e e e e ~ 0 ! e e e e e e e e e e e e e e e e e e e e e e e e /.$ $ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e Q I ;.e e e e e e e >.I ;.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e ^.^.e e e e e e e e e e e e e R ^.e e e e e e e e e e e e /./.e e e e e e e e e e e e e /.e e e e e e e e e e e e e e e e e e e e e e e /.e e e e e e e e e e e e ^./.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e R e e e e e e e e e e e ^.(.e e e e e e e e e e e e e e e e e e e e e ~ p o e e e e e e e e e e e e e e e e e e e e e X { % e e ^.e e e e e e e e e e R ^.e e e e e e e e e (.9 9 e /.e e e e e e e e e e e e e R ^.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e % { { C e e e e e e e ;.{ C e e e e e e e e e e ^.e e e e e e e e e e ^.^.e e /.e e e e e e e e e e e e e e e e e e e e e e e e e e e e R ^.e e e e e e e e e e e e e ^.e e e e e e e e e e /.e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e R o y 9 % ^.e e e e e e e e % < E y < X e e e e e e e e e /.o y 9 % ^.e e e e e e e e $ 0 < y % e e e e e e e e e e e e e e e e e e e e (.I y 0 >.e e e e e e e e e % 9 y $ R e e e e e e e e ! < ~ e o 0 /.e e e e e e e % < < X e e e e e e e e ;.0 ; 0 ~ e e e e e e e e X < ; E >.e e e e e e e e e e e e e e e e e e e >.< C e e e e e e e (.E o e ~ < ! e e e e e e e ;.{ C ~ < o e e e e e e e e ,.a ; < ! e e e e e e e e R < p E ; E >.e e e e e e e e e ,.I ; < ! e e e e e e e e $ < >.C 9 X e e e e e e e e e e e e e e e e e e % p { 0 (.e e e e e e e ~ 9 ! e e e e e e e >.E < E e e e e e e e (.I 0 < 9 % a ; 0 ~ e e e e e e e (.a I e I 0 e o 0 ,.e e e e e e e R $ y < a 0 x e e e e e e e ~ 0 0 I e e e e e e e e ,.I ; < ! e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e $ { < 9 { o e e e e e e e e $ { p 0 p p ;.e e e e e e e e $ { < < { $ e e e e e e e e 0 { 9 y { C e e e e e e e e e e e e e e e e e e e $ { < ; $ e e e e e e e e % { 9 < { I e e e e e e e e % { ;.e a { /.e e e e e e e a { ; ;.e e e e e e e ~ p p < ; ! e e e e e e e ;.p ; E { 9 x e e e e e e e e e e e e e e e e e e ;.{ $ e e e e e e e x p a e X { % e e e e e e e ;.{ o < { ;.e e e e e e e R < { 0 ; { ! e e e e e e e R < { y < { < (.e e e e e e e R < { 0 ; { ! e e e e e e e X { 9 ; < (.e e e e e e e e e e e e e e e e e e o { { $ e e e e e e e e ;.{ C e e e e e e e ~ p { a e e e e e e e x 9 { < y { { < { 9 /.e e e e e e e E p ! ; { ! < 9 /.e e e e e e e I { < 9 { { x e e e e e e e ! { { $ e e e e e e e (.< { 0 y { ! e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e R { E ^.(.< p (.e e e e e e e I { Q e X { $ e e e e e e e ,.p { E 0 { ; ,.e e e e e e e < p ,.,.p a e e e e e e e e e e e e e e e e e e e o { < I ~ e e e e e e e (.y 9 (.e a { ~ e e e e e e e % { ;.e a { /.e e e e e e e a p ~ e e e e e e e e $ { ;.e x e e e e e e e e I { < a y { % e e e e e e e e e e e e e e e e e e ;.{ $ e e e e e e e x p a e X { % e e e e e e e ;.{ ; { C e e e e e e e e Q { ; a < { 0 e e e e e e e R < p >.e o { Q e e e e e e e ! { % e ~ p 0 e e e e e e e e o { p ;.e e e e e e e e e e e e e e e e e e e R 0 p R e e e e e e e e ;.{ C e e e e e e e ~ { a e e e e e e e e x y < e ! { I e o { X e e e e e e e % { < p { < { $ e e e e e e e >.p E ^./.0 { x e e e e e e e X { $ e e e e e e e e ! { ; a < { 0 e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e R { $ e e I { ,.e e e e e e e I { ;.e (.{ I e e e e e e e >.{ { y y ; 9 ~ e e e e e e e < y (./.; E e e e e e e e e e e e e e e e e e e e /.% < { E e e e e e e e ,.p E e e o { ;.e e e e e e e % { ;.e a { /.e e e e e e e a p (.e e e e e e e e a { (.e e e e e e e e e e E { ; ; y ; o e e e e e e e e e e e e e e e e e e ;.{ $ e e e e e e e x p a e X { % e e e e e e e ;.{ { { Q e e e e e e e e % { p ; y ; 0 e e e e e e e R 9 9 e e Q { C e e e e e e e C { X e (.9 9 e e e e e e e e C { ; x e e e e e e e e e e e e e e e e e e e e E p e e e e e e e e e ;.{ C e e e e e e e ~ { $ e e e e e e e e x ; 0 e ;.{ o e C { ! e e e e e e e >.p { p ; { { X e e e e e e e ~ { $ e e I { x e e e e e e e X { % e e e e e e e e C { p y y ; E /.e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e ^.< { % o { E e e e e e e e e $ { < Q 0 { C e e e e e e e /.< { $ I $ ,.^.e e e e e e e < y (.R ; E e e e e e e e e e e e e e e e e e e e a < % y y R e e e e e e e a { o C p 9 (.e e e e e e e ! { E C ; p /.e e e e e e e a p x e e e e e e e e Q { 0 C $ >.e e e e e e e C { < o E ;.R e e e e e e e e e e e e e e e e e e ;.{ $ e e e e e e e e 9 p C E { % e e e e e e e ;.{ $ 9 p ~ e e e e e e e >.p ; o E C x e e e e e e e R < { I Q y p ~ e e e e e e e >.p 9 Q I { o e e e e e e e ,.y { { I e e e e e e e e e e e e e e e e e e e e 0 p e e e e e e e e e ;.{ C e e e e e e e ~ { $ e e e e e e e e x ; 0 e ;.{ o e C { ! e e e e e e e e < { E $ { ; R e e e e e e e /.9 { % o p { x e e e e e e e X { % e e e e e e e e >.p ; o a % (.e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e ~ 9 { { < >.e e e e e e e e $ { p { { $ /.e e e e e e e e ~ < { { 0 R e e e e e e e e < y (.R ; E e e e e e e e e e e e e e e e e e e e Q p { { o e e e e e e e e ,.< { { 9 ;.e e e e e e e e ^.$ { { p p /.e e e e e e e a p x e e e e e e e e ^.$ { { { Q e e e e e e e /.$ { { p X e e e e e e e e e e e e e e e e e e e ;.{ $ e e e e e e e e X ; { p { % e e e e e e e ;.{ C ;.{ 9 x e e e e e e e Q p { { $ e e e e e e e e R < { p { p C e e e e e e e e e Q p { { I R e e e e e e e I { ! a { ! e e e e e e e e e e e e e e e e e e e 0 p e e e e e e e e e ;.{ C e e e e e e e ~ { $ e e e e e e e e x ; 0 e ;.{ o e C { ! e e e e e e e e o { C ! { a e e e e e e e e e ;.y { { p { x e e e e e e e ! { % e e e e e e e e e Q ; { { $ e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e (.X ;.R e e e e e e e e e I { X X ~ e e e e e e e e e e e (.X ;.R e e e e e e e e e x ,.e e ,.x e e e e e e e e e e e e e e e e e e e e ,.! ~ e e e e e e e e e e /.;.X (.e e e e e e e e e e ^.;.;.,.,.e e e e e e e e x ,.^.e e e e e e e e e e >.! >.e e e e e e e e e e >.! ,.e e e e e e e e e e e e e e e e e e e e C { o e e e e e e e e e ,.X >.>.(.e e e e e e e /.>.(.e x >.R e e e e e e e e x ! ~ ^.e e e e e e e e e ,.,.>.X >.e e e e e e e e e e e x ! ~ ^.e e e e e e e e >.>.e (.>.(.e e e e e e e e e e e e e e e e e e e x ,.e e e e e e e e e /.>.(.e e e e e e e ^.>.x e e e e e e e e ^.,.x e /.>.(.e (.>.R e e e e e e e e R >./.^.>.(.e e e e e e e e e e (.! ~ x >.^.e e e e e e e /.>.(.e e e e e e e e e e ,.X ~ ^.e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e I { ~ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e /.p p ~ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e X C (.e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ^.C ~ e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e ",
|
||||
"e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e "};
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
#define RBUTIL 1
|
||||
#include <wx/msw/wx.rc>
|
||||
RBUTIL VERSIONINFO
|
||||
FILEVERSION 0,3,2,6
|
||||
PRODUCTVERSION 0,3,2,6
|
||||
FILEOS 0x00000004
|
||||
FILETYPE 0x00000001
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "FFFF0000"
|
||||
BEGIN
|
||||
VALUE "FileVersion", "0.3.2.6\0"
|
||||
VALUE "ProductVersion", "0.3.2.6\0"
|
||||
VALUE "CompanyName", "Rockbox Team\0"
|
||||
VALUE "FileDescription", "Rockbox Utility\0"
|
||||
VALUE "InternalName", "rbutil\0"
|
||||
VALUE "LegalCopyright", "(C) 2005 - 2007 Rockbox Team\0"
|
||||
VALUE "ProductName", "Rockbox Utility\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0xFFFF, 0x0000
|
||||
END
|
||||
END
|
||||
RBUTIL_ICON ICON archos.ico
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_project_file>
|
||||
<FileVersion major="1" minor="6" />
|
||||
<Project>
|
||||
<Option title="rbutil" />
|
||||
<Option pch_mode="0" />
|
||||
<Option compiler="gcc" />
|
||||
<MakeCommands>
|
||||
<Build command="$make -f $makefile all" />
|
||||
<CompileFile command="$make -f $makefile $file" />
|
||||
<Clean command="$make -f $makefile clean" />
|
||||
<DistClean command="$make -f $makefile distclean" />
|
||||
</MakeCommands>
|
||||
<Build>
|
||||
<Target title="Release">
|
||||
<Option output="rbutil.exe" prefix_auto="0" extension_auto="0" />
|
||||
<Option type="0" />
|
||||
<Option compiler="gcc" />
|
||||
<Option projectResourceIncludeDirsRelation="0" />
|
||||
<ExtraCommands>
|
||||
<Add before="cmd /c cd icons && bin2c.exe *.png" />
|
||||
<Add after="upx --best --compress-icons=0 rbutil.exe" />
|
||||
</ExtraCommands>
|
||||
<MakeCommands>
|
||||
<Build command="$make -f $makefile all" />
|
||||
<CompileFile command="$make -f $makefile $file" />
|
||||
<Clean command="$make -f $makefile clean" />
|
||||
<DistClean command="$make -f $makefile distclean" />
|
||||
</MakeCommands>
|
||||
</Target>
|
||||
<Target title="Debug">
|
||||
<Option output="rbutil.exe" prefix_auto="0" extension_auto="0" />
|
||||
<Option type="0" />
|
||||
<Option compiler="gcc" />
|
||||
<Compiler>
|
||||
<Add option="-g" />
|
||||
</Compiler>
|
||||
<MakeCommands>
|
||||
<Build command="$make -f $makefile all" />
|
||||
<CompileFile command="$make -f $makefile all" />
|
||||
<Clean command="$make -f $makefile clean" />
|
||||
<DistClean command="$make -f $makefile distclean" />
|
||||
</MakeCommands>
|
||||
</Target>
|
||||
<Environment>
|
||||
<Variable name="WX_CFG" value="" />
|
||||
</Environment>
|
||||
</Build>
|
||||
<VirtualTargets>
|
||||
<Add alias="All" targets="default;" />
|
||||
</VirtualTargets>
|
||||
<Compiler>
|
||||
<Add option="-W" />
|
||||
<Add option="-g" />
|
||||
<Add option="-pipe" />
|
||||
<Add option="-mthreads" />
|
||||
<Add option="-Winvalid-pch" />
|
||||
<Add option='-include "wx_pch.h"' />
|
||||
<Add option="-D__GNUWIN32__" />
|
||||
<Add option="-D__WXMSW__" />
|
||||
<Add option="-DUSE_PCH" />
|
||||
<Add option="-DRBUTIL" />
|
||||
<Add directory="$(#WX.include)" />
|
||||
<Add directory="$(#WX.lib)\gcc_lib$(WX_CFG)\msw" />
|
||||
<Add directory="$(#WX)\contrib\include" />
|
||||
<Add directory=".\" />
|
||||
</Compiler>
|
||||
<ResourceCompiler>
|
||||
<Add directory="$(#WX.include)" />
|
||||
</ResourceCompiler>
|
||||
<Linker>
|
||||
<Add library="wxmsw28" />
|
||||
<Add library="winspool" />
|
||||
<Add library="winmm" />
|
||||
<Add library="shell32" />
|
||||
<Add library="comctl32" />
|
||||
<Add library="ctl3d32" />
|
||||
<Add library="odbc32" />
|
||||
<Add library="advapi32" />
|
||||
<Add library="wsock32" />
|
||||
<Add library="opengl32" />
|
||||
<Add library="glu32" />
|
||||
<Add library="ole32" />
|
||||
<Add library="oleaut32" />
|
||||
<Add library="uuid" />
|
||||
<Add library="libwxzlib" />
|
||||
<Add library="libwxregex" />
|
||||
<Add library="libwxpng" />
|
||||
<Add library="libwxjpeg" />
|
||||
<Add library="libwxtiff" />
|
||||
<Add directory="$(#WX.lib)\gcc_lib$(WX_CFG)" />
|
||||
<Add directory="$(#WX.lib)" />
|
||||
<Add directory=".\" />
|
||||
</Linker>
|
||||
<Unit filename="Makefile" />
|
||||
<Unit filename="archos.ico" />
|
||||
<Unit filename="autodetection.cpp" />
|
||||
<Unit filename="autodetection.h" />
|
||||
<Unit filename="bootloaders.cpp" />
|
||||
<Unit filename="bootloaders.h" />
|
||||
<Unit filename="copying.txt" />
|
||||
<Unit filename="credits.h" />
|
||||
<Unit filename="fonts_3d.xpm" />
|
||||
<Unit filename="h100sums.h" />
|
||||
<Unit filename="h120sums.h" />
|
||||
<Unit filename="h300sums.h" />
|
||||
<Unit filename="icons\bin2c.c">
|
||||
<Option compilerVar="CC" />
|
||||
<Option compile="0" />
|
||||
<Option link="0" />
|
||||
</Unit>
|
||||
<Unit filename="icons\bootloader_btn.cpp" />
|
||||
<Unit filename="icons\bootloader_btn.h" />
|
||||
<Unit filename="icons\bootloader_btn.png" />
|
||||
<Unit filename="icons\talkfile_btn.cpp" />
|
||||
<Unit filename="icons\talkfile_btn.h" />
|
||||
<Unit filename="icons\talkfile_btn.png" />
|
||||
<Unit filename="icons\doom_btn.cpp" />
|
||||
<Unit filename="icons\doom_btn.h" />
|
||||
<Unit filename="icons\doom_btn.png" />
|
||||
<Unit filename="icons\font_btn.cpp" />
|
||||
<Unit filename="icons\font_btn.h" />
|
||||
<Unit filename="icons\font_btn.png" />
|
||||
<Unit filename="icons\rbinstall_btn.cpp" />
|
||||
<Unit filename="icons\rbinstall_btn.h" />
|
||||
<Unit filename="icons\rbinstall_btn.png" />
|
||||
<Unit filename="icons\rembootloader_btn.cpp" />
|
||||
<Unit filename="icons\rembootloader_btn.h" />
|
||||
<Unit filename="icons\rembootloader_btn.png" />
|
||||
<Unit filename="icons\remrb_btn.cpp" />
|
||||
<Unit filename="icons\remrb_btn.h" />
|
||||
<Unit filename="icons\remrb_btn.png" />
|
||||
<Unit filename="icons\themes_btn.cpp" />
|
||||
<Unit filename="icons\themes_btn.h" />
|
||||
<Unit filename="icons\themes_btn.png" />
|
||||
<Unit filename="install_3d.xpm" />
|
||||
<Unit filename="install_dialogs.cpp" />
|
||||
<Unit filename="install_dialogs.h" />
|
||||
<Unit filename="installlog.cpp" />
|
||||
<Unit filename="installlog.h" />
|
||||
<Unit filename="ipodpatcher\ipodio-win32.c">
|
||||
<Option compilerVar="CC" />
|
||||
<Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -g -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\ipodpatcher\ipodio-win32.o" />
|
||||
</Unit>
|
||||
<Unit filename="ipodpatcher\ipodio.h" />
|
||||
<Unit filename="ipodpatcher\ipodpatcher.c">
|
||||
<Option compilerVar="CC" />
|
||||
<Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -g -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\ipodpatcher\ipodpatcher.o\n" />
|
||||
</Unit>
|
||||
<Unit filename="ipodpatcher\ipodpatcher.h" />
|
||||
<Unit filename="ipodpatcher\parttypes.h" />
|
||||
<Unit filename="irivertools.cpp" />
|
||||
<Unit filename="irivertools.h" />
|
||||
<Unit filename="md5sum.cpp" />
|
||||
<Unit filename="md5sum.h" />
|
||||
<Unit filename="rblogo.xpm" />
|
||||
<Unit filename="rbutil-rc.rc">
|
||||
<Option compilerVar="WINDRES" />
|
||||
</Unit>
|
||||
<Unit filename="rbutil.cpp" />
|
||||
<Unit filename="rbutil.h" />
|
||||
<Unit filename="rbutil.ini" />
|
||||
<Unit filename="rbutil.iss" />
|
||||
<Unit filename="rbutilApp.cpp" />
|
||||
<Unit filename="rbutilApp.h" />
|
||||
<Unit filename="rbutilCtrls.cpp" />
|
||||
<Unit filename="rbutilCtrls.h" />
|
||||
<Unit filename="rbutilFrm.cpp" />
|
||||
<Unit filename="rbutilFrm.h" />
|
||||
<Unit filename="rbutilFrm_XPM.xpm" />
|
||||
<Unit filename="sansapatcher\parttypes.h" />
|
||||
<Unit filename="sansapatcher\sansaio-win32.c">
|
||||
<Option compilerVar="CC" />
|
||||
<Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -DRBUTIL -g -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\sansapatcher\sansaio-win32.o" />
|
||||
</Unit>
|
||||
<Unit filename="sansapatcher\sansaio.h" />
|
||||
<Unit filename="sansapatcher\sansapatcher.c">
|
||||
<Option compilerVar="CC" />
|
||||
<Option compiler="gcc" use="1" buildCommand="mingw32-gcc.exe -W -g -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -g -DRBUTIL -I.\ -IC:\Dev-Cpp\include -c $file -o .objs\sansapatcher\sansapatcher.o" />
|
||||
</Unit>
|
||||
<Unit filename="sansapatcher\sansapatcher.h" />
|
||||
<Unit filename="themes_3d.xpm" />
|
||||
<Unit filename="tools2_3d.xpm" />
|
||||
<Unit filename="tts.cpp">
|
||||
<Option compiler="gcc" use="0" buildCommand="gcc -Wall -g tts.cpp -I$FLITEDIR/include -L$FLITEDIR/lib \n -lflite_cmu_us_kal -lflite_usenglish -lflite_cmulex -lflite -lm" />
|
||||
</Unit>
|
||||
<Unit filename="tts.h" />
|
||||
<Unit filename="uninstall_3d.xpm" />
|
||||
<Unit filename="untools2_3d.xpm" />
|
||||
<Unit filename="wizard.xpm" />
|
||||
<Unit filename="wx_pch.h" />
|
||||
<Extensions>
|
||||
<code_completion />
|
||||
</Extensions>
|
||||
</Project>
|
||||
</CodeBlocks_project_file>
|
||||
|
|
@ -1,783 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: rbutil.cpp
|
||||
*
|
||||
* Copyright (C) 2005 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "rbutil.h"
|
||||
#include "installlog.h"
|
||||
|
||||
/* this function gets a Bitmap from embedded memory */
|
||||
wxBitmap wxGetBitmapFromMemory(const unsigned char *data,int length)
|
||||
{
|
||||
wxMemoryInputStream istream( data,length);
|
||||
return wxBitmap(wxImage(istream, wxBITMAP_TYPE_ANY, -1), -1);
|
||||
}
|
||||
|
||||
// This class allows us to return directories as well as files to
|
||||
// wxDir::Traverse
|
||||
class wxDirTraverserIncludeDirs : public wxDirTraverser
|
||||
{
|
||||
public:
|
||||
wxDirTraverserIncludeDirs(wxArrayString& files) : m_files(files) { }
|
||||
|
||||
virtual wxDirTraverseResult OnFile(const wxString& filename)
|
||||
{
|
||||
m_files.Add(filename);
|
||||
return wxDIR_CONTINUE;
|
||||
}
|
||||
|
||||
virtual wxDirTraverseResult OnDir(const wxString& dirname)
|
||||
{
|
||||
m_files.Add(dirname);
|
||||
return wxDIR_CONTINUE;
|
||||
}
|
||||
|
||||
private:
|
||||
wxArrayString& m_files;
|
||||
};
|
||||
|
||||
wxDEFINE_SCOPED_PTR_TYPE(wxZipEntry);
|
||||
|
||||
const wxChar* _rootmatch[] = {
|
||||
wxT("rockbox.*"),
|
||||
wxT("ajbrec.ajz"),
|
||||
wxT("archos.mod"),
|
||||
wxT(".scrobbler.*"),
|
||||
wxT("battery_bench.txt"),
|
||||
wxT("battery.dummy"),
|
||||
};
|
||||
const wxArrayString* rootmatch = new wxArrayString(
|
||||
(size_t) (sizeof(_rootmatch) / sizeof(wxChar*)), _rootmatch);
|
||||
|
||||
bool InstallTheme(wxString Themesrc)
|
||||
{
|
||||
wxString dest,src,err;
|
||||
|
||||
int pos = Themesrc.Find('/',true);
|
||||
wxString themename = Themesrc.SubString(pos+1,Themesrc.Length());
|
||||
|
||||
src = gv->themes_url + wxT("/") + Themesrc;
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP) + themename;
|
||||
if( DownloadURL(src, dest) )
|
||||
{
|
||||
wxRemoveFile(dest);
|
||||
ERR_DIALOG(wxT("Unable to download ") + src, wxT("Install Theme"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!checkZip(dest))
|
||||
{
|
||||
ERR_DIALOG(wxT("The Zip ") + dest
|
||||
+ wxT(" does not contain the correct dir structure"),
|
||||
wxT("Install Theme"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(UnzipFile(dest,gv->curdestdir, true))
|
||||
{
|
||||
ERR_DIALOG(wxT("Unable to unzip ") + dest + wxT(" to ")
|
||||
+ gv->curdestdir, wxT("Install Theme"));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool checkZip(wxString zipname)
|
||||
{
|
||||
|
||||
wxZipEntryPtr entry;
|
||||
|
||||
wxFFileInputStream* in_file = new wxFFileInputStream(zipname);
|
||||
wxZipInputStream* in_zip = new wxZipInputStream(*in_file);
|
||||
|
||||
entry.reset(in_zip->GetNextEntry());
|
||||
|
||||
wxString name = entry->GetName();
|
||||
if(entry->IsDir())
|
||||
{
|
||||
if( 0==name.Cmp(wxT(".rockbox"))
|
||||
|| 0==name.Cmp(wxT(".rockbox\\"))
|
||||
|| 0==name.Cmp(wxT(".rockbox/")) )
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( name.StartsWith(wxT(".rockbox/"))
|
||||
|| name.StartsWith(wxT(".rockbox\\")) )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
int DownloadURL(wxString src, wxString dest)
|
||||
{
|
||||
int input, errnum = 0, success = false;
|
||||
wxString buf, errstr;
|
||||
wxLogVerbose(wxT("=== begin DownloadURL(%s,%s)"), src.c_str(),
|
||||
dest.c_str());
|
||||
|
||||
buf = wxT("Fetching ") + src;
|
||||
wxProgressDialog* progress = new wxProgressDialog(wxT("Downloading"),
|
||||
buf, 100, NULL, wxPD_APP_MODAL |
|
||||
wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_ELAPSED_TIME |
|
||||
wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
|
||||
progress->SetSize(500,200);
|
||||
progress->Update(0);
|
||||
|
||||
|
||||
input = true;
|
||||
wxURL* in_http = new wxURL(src);
|
||||
|
||||
if(gv->proxy_url != wxT(""))
|
||||
in_http->SetProxy(gv->proxy_url);
|
||||
|
||||
if (in_http->GetError() == wxURL_NOERR)
|
||||
{
|
||||
|
||||
wxFFileOutputStream* os = new wxFFileOutputStream(dest);
|
||||
input = false;
|
||||
if (os->IsOk())
|
||||
{
|
||||
wxInputStream* is = in_http->GetInputStream();
|
||||
input = true;
|
||||
if (is)
|
||||
{
|
||||
size_t filesize = is->GetSize();
|
||||
input = true;
|
||||
if (is->IsOk())
|
||||
{
|
||||
char buffer[FILE_BUFFER_SIZE + 1];
|
||||
size_t current = 0;
|
||||
|
||||
while (! is->Eof())
|
||||
{
|
||||
is->Read(buffer, FILE_BUFFER_SIZE);
|
||||
input = true;
|
||||
if (is->LastRead() )
|
||||
{
|
||||
os->Write(buffer, is->LastRead());
|
||||
input = false;
|
||||
if (os->IsOk())
|
||||
{
|
||||
current += os->LastWrite();
|
||||
if (!progress->Update(current * 100 / filesize))
|
||||
{
|
||||
errstr = wxT("Download aborted by user");
|
||||
errnum = 1000;
|
||||
break;
|
||||
}
|
||||
|
||||
} else
|
||||
{
|
||||
errnum = os->GetLastError();
|
||||
errstr = wxT("Can't write to output stream (")
|
||||
+ stream_err_str(errnum) + wxT(")");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
} else
|
||||
{
|
||||
errnum = is->GetLastError();
|
||||
if (errnum == wxSTREAM_EOF)
|
||||
{
|
||||
errnum = 0;
|
||||
break;
|
||||
}
|
||||
errstr = wxT("Can't read from input stream (")
|
||||
+ stream_err_str(errnum) + wxT(")");
|
||||
}
|
||||
}
|
||||
|
||||
os->Close();
|
||||
if (! errnum)
|
||||
{
|
||||
errnum = os->GetLastError();
|
||||
errstr = wxT("Can't close output file (")
|
||||
+ stream_err_str(errnum) + wxT(")");
|
||||
|
||||
input = false;
|
||||
}
|
||||
|
||||
if (! errnum) success = true;
|
||||
|
||||
} else
|
||||
{
|
||||
errnum = is->GetLastError();
|
||||
errstr = wxT("Can't get input stream size (")
|
||||
+ stream_err_str(errnum) + wxT(")");
|
||||
}
|
||||
} else
|
||||
{
|
||||
errnum = in_http->GetError();
|
||||
errstr.Printf(wxT("Can't get input stream (%d)"), errnum);
|
||||
}
|
||||
delete is;
|
||||
} else
|
||||
{
|
||||
errnum = os->GetLastError();
|
||||
errstr = wxT("Can't create output stream (")
|
||||
+ stream_err_str(errnum) + wxT(")");
|
||||
}
|
||||
delete os;
|
||||
} else
|
||||
{
|
||||
errstr.Printf(wxT("Can't open URL %s (%d)"), src.c_str(),
|
||||
in_http->GetError() );
|
||||
errnum = 100;
|
||||
}
|
||||
|
||||
delete in_http;
|
||||
delete progress;
|
||||
|
||||
if (!success)
|
||||
{
|
||||
if (errnum == 0) errnum = 999;
|
||||
if (input)
|
||||
{
|
||||
ERR_DIALOG(errstr + wxT(" reading\n") + src, wxT("Download URL"));
|
||||
} else
|
||||
{
|
||||
ERR_DIALOG(errstr + wxT("writing to download\n/") + dest,
|
||||
wxT("Download URL"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wxLogVerbose(wxT("=== end DownloadURL"));
|
||||
return errnum;
|
||||
}
|
||||
|
||||
int UnzipFile(wxString src, wxString destdir, bool isInstall)
|
||||
{
|
||||
|
||||
wxZipEntryPtr entry;
|
||||
wxString in_str, progress_msg, buf,subdir;
|
||||
int errnum = 0, curfile = 0, totalfiles = 0;
|
||||
InstallLog* log = NULL;
|
||||
|
||||
wxLogVerbose(wxT("===begin UnzipFile(%s,%s,%i)"),
|
||||
src.c_str(), destdir.c_str(), isInstall);
|
||||
|
||||
wxFFileInputStream* in_file = new wxFFileInputStream(src);
|
||||
wxZipInputStream* in_zip = new wxZipInputStream(*in_file);
|
||||
if (in_file->Ok() )
|
||||
{
|
||||
if (! in_zip->IsOk() )
|
||||
{
|
||||
errnum = in_zip->GetLastError();
|
||||
ERR_DIALOG(wxT("Can't open ZIP stream ") + src
|
||||
+ wxT(" for reading (") + stream_err_str(errnum)
|
||||
+ wxT(")"), wxT("Unzip File") );
|
||||
delete in_zip;
|
||||
delete in_file;
|
||||
return true;
|
||||
}
|
||||
|
||||
totalfiles = in_zip->GetTotalEntries();
|
||||
if (! in_zip->IsOk() )
|
||||
{
|
||||
errnum = in_zip->GetLastError();
|
||||
ERR_DIALOG( wxT("Error Getting total ZIP entries for ")
|
||||
+ src + wxT(" (") + stream_err_str(errnum) + wxT(")"),
|
||||
wxT("Unzip File") );
|
||||
delete in_zip;
|
||||
delete in_file;
|
||||
return true;
|
||||
}
|
||||
} else
|
||||
{
|
||||
errnum = in_file->GetLastError();
|
||||
ERR_DIALOG(wxT("Can't open ") + src + wxT(" (")
|
||||
+ stream_err_str(errnum) + wxT(")"), wxT("Unzip File") );
|
||||
delete in_zip;
|
||||
delete in_file;
|
||||
return true;
|
||||
}
|
||||
|
||||
wxProgressDialog* progress = new wxProgressDialog(wxT("Unpacking archive"),
|
||||
wxT("Preparing to unpack the downloaded files to your audio"
|
||||
"device"), totalfiles, NULL, wxPD_APP_MODAL |
|
||||
wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_ELAPSED_TIME |
|
||||
wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
|
||||
progress->Update(0);
|
||||
|
||||
// We're not overly worried if the logging fails
|
||||
if (isInstall)
|
||||
{
|
||||
log = new InstallLog(destdir + wxT("" PATH_SEP UNINSTALL_FILE));
|
||||
}
|
||||
|
||||
while (! errnum &&
|
||||
(entry.reset(in_zip->GetNextEntry()), entry.get() != NULL) )
|
||||
{
|
||||
|
||||
|
||||
curfile++;
|
||||
wxString name = entry->GetName();
|
||||
// set progress
|
||||
progress_msg = wxT("Unpacking ") + name;
|
||||
if (! progress->Update(curfile, progress_msg) )
|
||||
{
|
||||
MESG_DIALOG(wxT("Unpacking cancelled by user"));
|
||||
errnum = 1000;
|
||||
break;
|
||||
}
|
||||
|
||||
in_str = destdir + wxT("" PATH_SEP) + name;
|
||||
|
||||
subdir = wxPathOnly(in_str);
|
||||
if(!(wxDirExists(subdir)))
|
||||
{
|
||||
if (! wxMkdir(subdir, 0777) )
|
||||
{
|
||||
buf = wxT("Unable to create directory ") + subdir;
|
||||
errnum = 100;
|
||||
break;
|
||||
}
|
||||
log->WriteFile(subdir, true); // Directory
|
||||
}
|
||||
|
||||
if(entry->IsDir())
|
||||
{
|
||||
if(!wxDirExists(name))
|
||||
{
|
||||
if(!wxMkdir(name, 0777) )
|
||||
{
|
||||
buf = wxT("Unable to create directory ") + name;
|
||||
errnum = 100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
log->WriteFile(name, true); // Directory
|
||||
continue; // this is just a directory, nothing else to do
|
||||
}
|
||||
|
||||
// its a file, copy it
|
||||
wxFFileOutputStream* out = new wxFFileOutputStream(in_str);
|
||||
if (! out->IsOk() )
|
||||
{
|
||||
buf = wxT("Can't open file ") + in_str + wxT(" for writing");
|
||||
delete out;
|
||||
errnum = 100;
|
||||
break;
|
||||
} else if (isInstall)
|
||||
{
|
||||
log->WriteFile(name);
|
||||
}
|
||||
|
||||
in_zip->Read(*out);
|
||||
if (! out->IsOk()) {
|
||||
buf.Printf(wxT("Can't write to %s (%d)"), in_str.c_str(),
|
||||
errnum = out->GetLastError() );
|
||||
}
|
||||
|
||||
if (!in_zip->IsOk() && ! in_file->GetLastError() == wxSTREAM_EOF)
|
||||
{
|
||||
buf.Printf(wxT("Can't read from %s (%d)"), src.c_str(),
|
||||
errnum = in_file->GetLastError() );
|
||||
}
|
||||
|
||||
if (! out->Close() && errnum == 0)
|
||||
{
|
||||
buf.Printf(wxT("Unable to close %s (%d)"), in_str.c_str(),
|
||||
errnum = out->GetLastError() );
|
||||
|
||||
}
|
||||
|
||||
delete out;
|
||||
|
||||
}
|
||||
|
||||
delete in_zip; delete in_file; delete progress;
|
||||
|
||||
if (errnum)
|
||||
{
|
||||
ERR_DIALOG(buf, wxT("Unzip File"));
|
||||
}
|
||||
|
||||
if (log) delete log;
|
||||
wxLogVerbose(wxT("=== end UnzipFile"));
|
||||
return(errnum);
|
||||
|
||||
}
|
||||
|
||||
int Uninstall(const wxString dir, bool isFullUninstall) {
|
||||
wxString buf, uninst;
|
||||
unsigned int i;
|
||||
bool errflag = false;
|
||||
InstallLog *log = NULL;
|
||||
wxArrayString* FilesToRemove = NULL;
|
||||
|
||||
wxLogVerbose(wxT("=== begin Uninstall(%s,%i)"), dir.c_str(), isFullUninstall);
|
||||
|
||||
wxProgressDialog* progress = new wxProgressDialog(wxT("Uninstalling"),
|
||||
wxT("Reading uninstall data from jukebox"), 100, NULL,
|
||||
wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_SMOOTH |
|
||||
wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
|
||||
progress->Update(0);
|
||||
|
||||
if (! isFullUninstall)
|
||||
{
|
||||
|
||||
buf = dir + wxT("" PATH_SEP UNINSTALL_FILE);
|
||||
log = new InstallLog(buf, false); // Don't create the log
|
||||
FilesToRemove = log->GetInstalledFiles();
|
||||
if (log) delete log;
|
||||
|
||||
if (FilesToRemove == NULL || FilesToRemove->GetCount() < 1) {
|
||||
wxLogNull lognull;
|
||||
if ( wxMessageDialog(NULL,
|
||||
wxT("Rockbox Utility can't find any uninstall data on this "
|
||||
"jukebox.\n"
|
||||
"Would you like to attempt a full uninstall?\n"
|
||||
"(WARNING: A full uninstall removes all files in your Rockbox "
|
||||
"folder)"),
|
||||
wxT("Standard uninstall not possible"),
|
||||
wxICON_EXCLAMATION | wxYES_NO | wxNO_DEFAULT).ShowModal()
|
||||
== wxID_YES)
|
||||
{
|
||||
isFullUninstall = true;
|
||||
}
|
||||
else {
|
||||
MESG_DIALOG(wxT("Uninstall cancelled by user"));
|
||||
delete progress;
|
||||
return 1000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isFullUninstall )
|
||||
{
|
||||
buf = dir + wxT("" PATH_SEP ".rockbox");
|
||||
if (rm_rf(buf) )
|
||||
{
|
||||
WARN_DIALOG(wxT("Unable to completely remove Rockbox directory"),
|
||||
wxT("Full uninstall") );
|
||||
errflag = true;
|
||||
}
|
||||
|
||||
wxDir* root = new wxDir(dir);
|
||||
wxArrayString* special = new wxArrayString();
|
||||
// Search for files for deletion in the jukebox root
|
||||
for (i = 0; i < rootmatch->GetCount(); i++)
|
||||
{
|
||||
const wxString match = (*rootmatch)[i];
|
||||
root->GetAllFiles(dir, special, match, wxDIR_FILES);
|
||||
}
|
||||
delete root;
|
||||
|
||||
// Sort in reverse order so we get directories last
|
||||
special->Sort(true);
|
||||
|
||||
for (i = 0; i < special->GetCount(); i++)
|
||||
{
|
||||
|
||||
if (wxDirExists((*special)[i]) )
|
||||
{
|
||||
// We don't check the return code since we don't want non
|
||||
// empty dirs disappearing.
|
||||
wxRmdir((*special)[i]);
|
||||
|
||||
} else if (wxFileExists((*special)[i]) )
|
||||
{
|
||||
if (! wxRemoveFile((*special)[i]) )
|
||||
{
|
||||
WARN_DIALOG(wxT("Can't delete ") + (*special)[i],
|
||||
wxT("Full uninstall"));
|
||||
errflag = true;
|
||||
}
|
||||
}
|
||||
// Otherwise there isn't anything there, so we don't have to worry.
|
||||
}
|
||||
delete special;
|
||||
} else
|
||||
{
|
||||
wxString instplat, this_path_sep;
|
||||
unsigned int totalfiles, rc;
|
||||
totalfiles = FilesToRemove->GetCount();
|
||||
FilesToRemove->Sort(true); // Reverse alphabetical ie dirs after files
|
||||
|
||||
for (i = 0; i < totalfiles; i++)
|
||||
{
|
||||
// If we're running on the device, let's not delete our own
|
||||
// installation, eh?
|
||||
if (gv->portable &&
|
||||
FilesToRemove->Item(i).StartsWith(PATH_SEP
|
||||
wxT("RockboxUtility")) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
wxString* buf2 = new wxString;
|
||||
buf = dir + FilesToRemove->Item(i);
|
||||
buf2->Format(wxT("Deleting %s"), buf.c_str());
|
||||
|
||||
if (! progress->Update((i + 1) * 100 / totalfiles, *buf2) )
|
||||
{
|
||||
WARN_DIALOG(wxT("Cancelled by user"), wxT("Normal Uninstall"));
|
||||
delete progress;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (wxDirExists(buf) )
|
||||
{
|
||||
// If we're about to attempt to remove .rockbox. delete
|
||||
// install data first
|
||||
*buf2 = dir + wxT("" PATH_SEP ".rockbox");
|
||||
if ( buf.IsSameAs(buf2->c_str()) )
|
||||
{
|
||||
*buf2 = dir +wxT("" PATH_SEP UNINSTALL_FILE);
|
||||
wxRemoveFile(*buf2);
|
||||
}
|
||||
|
||||
if ( (rc = ! wxRmdir(buf)) )
|
||||
{
|
||||
buf = buf.Format(wxT("Can't remove directory %s"),
|
||||
buf.c_str());
|
||||
errflag = true;
|
||||
WARN_DIALOG(buf.c_str(), wxT("Standard uninstall"));
|
||||
}
|
||||
} else if (wxFileExists(buf) )
|
||||
{
|
||||
if ( (rc = ! wxRemoveFile(buf)) )
|
||||
{
|
||||
buf = buf.Format(wxT("Can't delete file %s"),
|
||||
buf.c_str());
|
||||
errflag = true;
|
||||
WARN_DIALOG(buf.c_str(), wxT("Standard uninstall"));
|
||||
}
|
||||
} else
|
||||
{
|
||||
errflag = true;
|
||||
buf = buf.Format(wxT("Can't find file or directory %s"),
|
||||
buf.c_str() );
|
||||
WARN_DIALOG(buf.c_str(), wxT("Standard uninstall") );
|
||||
}
|
||||
|
||||
uninst = uninst.AfterFirst('\n');
|
||||
}
|
||||
if (errflag)
|
||||
{
|
||||
ERR_DIALOG(wxT("Unable to remove some files"),
|
||||
wxT("Standard uninstall")) ;
|
||||
}
|
||||
|
||||
if (FilesToRemove != NULL) delete FilesToRemove;
|
||||
}
|
||||
|
||||
delete progress;
|
||||
wxLogVerbose(wxT("=== end Uninstall"));
|
||||
return errflag;
|
||||
}
|
||||
|
||||
|
||||
wxString stream_err_str(int errnum)
|
||||
{
|
||||
wxString out;
|
||||
|
||||
switch (errnum) {
|
||||
case wxSTREAM_NO_ERROR:
|
||||
out = wxT("wxSTREAM_NO_ERROR");
|
||||
break;
|
||||
case wxSTREAM_EOF:
|
||||
out = wxT("wxSTREAM_EOF");
|
||||
break;
|
||||
case wxSTREAM_WRITE_ERROR:
|
||||
out = wxT("wxSTREAM_WRITE_ERROR");
|
||||
break;
|
||||
case wxSTREAM_READ_ERROR:
|
||||
out = wxT("wxSTREAM_READ_ERROR");
|
||||
break;
|
||||
default:
|
||||
out = wxT("UNKNOWN");
|
||||
break;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
bool InstallRbutil(wxString dest)
|
||||
{
|
||||
wxArrayString filestocopy;
|
||||
wxString str, buf, dstr, localpath, destdir;
|
||||
unsigned int i;
|
||||
wxDir dir;
|
||||
bool copied_exe = false, made_rbdir = false;
|
||||
InstallLog* log;
|
||||
|
||||
buf = dest + wxT("" PATH_SEP ".rockbox");
|
||||
|
||||
if (! wxDirExists(buf) )
|
||||
{
|
||||
wxMkdir(buf);
|
||||
made_rbdir = true;
|
||||
}
|
||||
|
||||
buf = dest + wxT("" PATH_SEP UNINSTALL_FILE);
|
||||
log = new InstallLog(buf);
|
||||
if (made_rbdir) log->WriteFile(wxT(".rockbox"), true);
|
||||
|
||||
destdir = dest + wxT("" PATH_SEP "RockboxUtility");
|
||||
if (! wxDirExists(destdir) )
|
||||
{
|
||||
if (! wxMkdir(destdir, 0777) )
|
||||
{
|
||||
WARN_DIALOG( wxT("Unable to create directory for installer (")
|
||||
+ destdir + wxT(")"), wxT("Portable install") );
|
||||
return false;
|
||||
}
|
||||
log->WriteFile(wxT("RockboxUtility"), true);
|
||||
}
|
||||
|
||||
dir.GetAllFiles(gv->ResourceDir, &filestocopy, wxT("*"),
|
||||
wxDIR_FILES);
|
||||
if (filestocopy.GetCount() < 1)
|
||||
{
|
||||
WARN_DIALOG(wxT("No files to copy"), wxT("Portable install") );
|
||||
return false;
|
||||
}
|
||||
|
||||
// Copy the contents of the program directory
|
||||
for (i = 0; i < filestocopy.GetCount(); i++)
|
||||
{
|
||||
if (filestocopy[i].AfterLast(PATH_SEP_CHR) == EXE_NAME)
|
||||
{
|
||||
copied_exe = true;
|
||||
}
|
||||
|
||||
dstr = destdir + wxT("" PATH_SEP)
|
||||
+ filestocopy[i].AfterLast(PATH_SEP_CHR);
|
||||
if (! wxCopyFile(filestocopy[i], dstr) )
|
||||
{
|
||||
WARN_DIALOG( wxT("Error copying file (")
|
||||
+ filestocopy[i].c_str() + wxT(" -> ")
|
||||
+ dstr + wxT(")"), wxT("Portable Install") );
|
||||
return false;
|
||||
}
|
||||
buf = dstr;
|
||||
buf.Replace(dest, wxEmptyString, false);
|
||||
log->WriteFile(buf);
|
||||
}
|
||||
|
||||
if (! copied_exe)
|
||||
{
|
||||
str = gv->AppDir + wxT("" PATH_SEP EXE_NAME);
|
||||
dstr = destdir + wxT("" PATH_SEP EXE_NAME);
|
||||
if (! wxCopyFile(str, dstr) )
|
||||
{
|
||||
WARN_DIALOG(wxT("Can't copy program binary ")
|
||||
+ str + wxT(" -> ") + dstr, wxT("Portable Install") );
|
||||
return false;
|
||||
}
|
||||
buf = dstr;
|
||||
buf.Replace(dest, wxEmptyString, false);
|
||||
log->WriteFile(buf);
|
||||
}
|
||||
|
||||
// Copy the local ini file so that it knows that it's a portable copy
|
||||
gv->UserConfig->Flush();
|
||||
dstr = destdir + wxT("" PATH_SEP "RockboxUtility.cfg");
|
||||
if (! wxCopyFile(gv->UserConfigFile, dstr) )
|
||||
{
|
||||
WARN_DIALOG(wxT("Unable to install user config file (")
|
||||
+ gv->UserConfigFile + wxT(" -> ") + dstr + wxT(")"),
|
||||
wxT("Portable Install") );
|
||||
return false;
|
||||
}
|
||||
buf = dstr;
|
||||
buf.Replace(dest, wxEmptyString, false);
|
||||
log->WriteFile(buf);
|
||||
|
||||
delete log;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool rm_rf(wxString file)
|
||||
{
|
||||
wxLogVerbose(wxT("=== begin rm-rf(%s)"), file.c_str() );
|
||||
|
||||
wxString buf;
|
||||
wxArrayString selected;
|
||||
wxDirTraverserIncludeDirs wxdtid(selected);
|
||||
unsigned int rc = 0, i;
|
||||
bool errflag = false;
|
||||
|
||||
if (wxFileExists(file) )
|
||||
{
|
||||
rc = ! wxRemoveFile(file);
|
||||
} else if (wxDirExists(file) )
|
||||
{
|
||||
wxDir* dir = new wxDir(file);;
|
||||
dir->Traverse(wxdtid);
|
||||
delete dir;
|
||||
// Sort into reverse alphabetical order for deletion in correct order
|
||||
// (directories after files)
|
||||
selected.Sort(true);
|
||||
selected.Add(file);
|
||||
|
||||
wxProgressDialog* progress = new wxProgressDialog(wxT("Removing files"),
|
||||
wxT("Deleting files"), selected.GetCount(), NULL,
|
||||
wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_SMOOTH |
|
||||
wxPD_ELAPSED_TIME | wxPD_REMAINING_TIME | wxPD_CAN_ABORT);
|
||||
|
||||
for (i = 0; i < selected.GetCount(); i++)
|
||||
{
|
||||
wxLogVerbose(selected[i]);
|
||||
if (progress != NULL)
|
||||
{
|
||||
buf = wxT("Deleting ") + selected[i];
|
||||
if (! progress->Update(i, buf))
|
||||
{
|
||||
WARN_DIALOG(wxT("Cancelled by user"), wxT("Erase Files"));
|
||||
delete progress;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (wxDirExists(selected[i]) )
|
||||
{
|
||||
if ((rc = ! wxRmdir(selected[i])) )
|
||||
{
|
||||
errflag = true;
|
||||
WARN_DIALOG(wxT("Can't remove directory ") + selected[i],
|
||||
wxT("Erase files"));
|
||||
}
|
||||
} else if ((rc = ! wxRemoveFile(selected[i])) )
|
||||
{
|
||||
errflag = true;
|
||||
WARN_DIALOG(wxT("Error deleting file ") + selected[i],
|
||||
wxT("Erase files"));
|
||||
}
|
||||
}
|
||||
delete progress;
|
||||
} else
|
||||
{
|
||||
WARN_DIALOG(wxT("Can't find expected file ") + file,
|
||||
wxT("Erase files"));
|
||||
return true;
|
||||
}
|
||||
|
||||
wxLogVerbose(wxT("=== end rm-rf"));
|
||||
return rc ? true : false;
|
||||
}
|
||||
|
||||
|
||||
176
rbutil/rbutil.h
|
|
@ -1,176 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: rbutil.h
|
||||
*
|
||||
* Copyright (C) 2005 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include <wx/wxprec.h>
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
#ifndef WX_PRECOMP
|
||||
#include <wx/wx.h>
|
||||
#endif
|
||||
|
||||
#ifndef __rbutil_HPP_
|
||||
#define __rbutil_HPP_
|
||||
|
||||
#include <wx/config.h>
|
||||
#include <wx/confbase.h>
|
||||
#include <wx/fileconf.h>
|
||||
#include <wx/stdpaths.h>
|
||||
#include <wx/wfstream.h>
|
||||
#include <wx/filesys.h>
|
||||
#include <wx/fs_inet.h>
|
||||
#include <wx/fs_zip.h>
|
||||
#include <wx/progdlg.h>
|
||||
#include <wx/protocol/http.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/url.h>
|
||||
#include <wx/ptr_scpd.h>
|
||||
#include <wx/zipstrm.h>
|
||||
#include <wx/dir.h>
|
||||
#include <wx/filefn.h>
|
||||
#include <wx/sstream.h>
|
||||
#include <wx/msgdlg.h>
|
||||
#include <wx/log.h>
|
||||
#include <wx/file.h>
|
||||
#include <wx/wizard.h>
|
||||
#include <wx/event.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/valgen.h>
|
||||
#include <wx/thread.h>
|
||||
#include <wx/regex.h>
|
||||
#include <wx/tokenzr.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/html/htmlwin.h>
|
||||
#include <wx/hyperlink.h>
|
||||
#include <wx/mstream.h>
|
||||
|
||||
#ifdef __WXMSW__
|
||||
#define PATH_SEP "\\"
|
||||
#define PATH_SEP_CHR '\\'
|
||||
#define EXE_NAME wxT("rbutil.exe")
|
||||
#else
|
||||
#define PATH_SEP wxT("/")
|
||||
#define PATH_SEP_CHR '/'
|
||||
#define EXE_NAME wxT("rbutil")
|
||||
#endif
|
||||
|
||||
#define UNINSTALL_FILE wxT(".rockbox" PATH_SEP ".rbutil_install_data")
|
||||
#define MAX_PLATFORMS 50
|
||||
#define SYSTEM_CONFIG rbutil.ini
|
||||
#define FILE_BUFFER_SIZE 1024
|
||||
|
||||
//WX_DEFINE_OBJARRAY(bool, wxArrayBool);
|
||||
|
||||
class GlobalVars
|
||||
{
|
||||
public:
|
||||
// Program configuration data (rbutil.ini and environment)
|
||||
wxFileConfig* GlobalConfig;
|
||||
wxFileConfig* UserConfig;
|
||||
wxString UserConfigFile;
|
||||
wxString GlobalConfigFile;
|
||||
wxString AppDir;
|
||||
wxString ResourceDir;
|
||||
|
||||
wxString* ErrStr;
|
||||
wxStandardPaths* stdpaths;
|
||||
wxArrayString plat_id;
|
||||
wxArrayString plat_name;
|
||||
wxArrayInt plat_released;
|
||||
wxArrayInt plat_needsbootloader;
|
||||
wxArrayString plat_bootloadermethod;
|
||||
wxArrayString plat_bootloadername;
|
||||
wxArrayString plat_resolution;
|
||||
wxArrayString plat_manualname;
|
||||
wxString download_url;
|
||||
wxString daily_url;
|
||||
wxString bleeding_url;
|
||||
wxString server_conf_url;
|
||||
wxString font_url;
|
||||
wxString last_release;
|
||||
wxString prog_name;
|
||||
wxString bootloader_url;
|
||||
wxString themes_url;
|
||||
wxString manual_url;
|
||||
wxString doom_url;
|
||||
wxString proxy_url;
|
||||
|
||||
|
||||
// User configuration data.
|
||||
wxString curplat;
|
||||
// unsigned int curplatnum;
|
||||
wxString curdestdir;
|
||||
wxString curfirmware;
|
||||
unsigned int curbuild;
|
||||
bool curisfull;
|
||||
bool nocache;
|
||||
bool portable;
|
||||
wxString curresolution;
|
||||
wxArrayString themesToInstall;
|
||||
wxString pathToTts;
|
||||
wxString pathToEnc;
|
||||
|
||||
|
||||
|
||||
// Global system variables
|
||||
wxFFile* logfile;
|
||||
wxLogStderr* logstderr;
|
||||
wxLogChain* logchain;
|
||||
wxLogGui* loggui;
|
||||
};
|
||||
|
||||
extern GlobalVars* gv;
|
||||
|
||||
|
||||
wxString wxFindAppPath(const wxString& argv0, const wxString& cwd,
|
||||
const wxString& appVariableName);
|
||||
int DownloadURL(wxString src, wxString dest);
|
||||
int UnzipFile(wxString src, wxString destdir, bool isInstall = false);
|
||||
int Uninstall(const wxString dir, bool isFullUninstall = false);
|
||||
bool InstallRbutil(wxString dest);
|
||||
bool InstallTheme(wxString src);
|
||||
bool checkZip(wxString zipname);
|
||||
wxString stream_err_str(int errnum);
|
||||
bool rm_rf(wxString file);
|
||||
|
||||
wxBitmap wxGetBitmapFromMemory(const unsigned char *data,int length);
|
||||
|
||||
|
||||
#define ERR_DIALOG(msg, title) \
|
||||
wxLogError(wxT("%s: %s"), ((wxString) title).c_str(), ((wxString) msg).c_str())
|
||||
|
||||
#define WARN_DIALOG(msg, title) \
|
||||
wxLogWarning(wxT("%s: %s"), ((wxString) title).c_str(), ((wxString) msg).c_str())
|
||||
|
||||
#define MESG_DIALOG(msg) \
|
||||
wxLogMessage(msg)
|
||||
|
||||
#define INFO_DIALOG(msg) \
|
||||
wxLogInfo(msg)
|
||||
|
||||
#define BUILD_RELEASE 0
|
||||
#define BUILD_DAILY 1
|
||||
#define BUILD_BLEEDING 2
|
||||
|
||||
#define BOOTLOADER_ADD 0
|
||||
#define BOOTLOADER_REM 1
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,299 +0,0 @@
|
|||
[general]
|
||||
download_url=http://www.rockbox.org/download/
|
||||
daily_url=http://download.rockbox.org/daily/
|
||||
bleeding_url=http://build.rockbox.org/dist/build-
|
||||
server_conf_url=http://www.rockbox.org/daily/build-info
|
||||
font_url=http://www.rockbox.org/daily/fonts/rockbox-fonts-
|
||||
last_release=2.5
|
||||
prog_name=rockbox
|
||||
bootloader_url=http://download.rockbox.org/bootloader
|
||||
themes_url=http://www.rockbox-themes.org/
|
||||
manual_url=http://download.rockbox.org/manual
|
||||
doom_url=http://download.rockbox.org/useful/rockdoom.zip
|
||||
|
||||
[platforms]
|
||||
platform1=player
|
||||
platform2=recorder
|
||||
platform3=recorder8mb
|
||||
platform4=recorderv2
|
||||
platform5=fmrecorder
|
||||
platform6=fmrecorder8mb
|
||||
platform7=ondiosp
|
||||
platform8=ondiofm
|
||||
platform9=h100
|
||||
platform10=h120
|
||||
platform11=h300
|
||||
platform12=h10_5gbums
|
||||
platform13=h10_5gbmtp
|
||||
platform14=h10
|
||||
platform15=ipod3g
|
||||
platform16=ipod4gray
|
||||
platform17=ipodcolor
|
||||
platform18=ipodvideo
|
||||
platform19=ipodmini1g
|
||||
platform20=ipodmini2g
|
||||
platform21=ipodnano
|
||||
platform22=iaudiox5
|
||||
platform23=iaudiom5
|
||||
platform24=iaudiox5v
|
||||
platform25=gigabeatf
|
||||
platform26=sansae200
|
||||
|
||||
[player]
|
||||
name=Archos Jukebox Player 6000, Jukebox Studio 5/10/20
|
||||
platform=player
|
||||
released=yes
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=11x2x1
|
||||
manualname=
|
||||
|
||||
[recorder]
|
||||
name=Archos Jukebox Recorder 10, 20
|
||||
platform=recorder
|
||||
released=yes
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=112x64x1
|
||||
manualname=
|
||||
|
||||
[recorder8mb]
|
||||
name=Archos Jukebox Recorder 10, 20 (with 8mb memory)
|
||||
platform=recorder8mb
|
||||
released=no
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=112x64x1
|
||||
manualname=rockbox-recorder
|
||||
|
||||
[recorderv2]
|
||||
name=Archos Jukebox Recorder v2 (20GB)
|
||||
platform=recorderv2
|
||||
released=yes
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=112x64x1
|
||||
manualname=
|
||||
|
||||
[fmrecorder]
|
||||
name=Archos Jukebox Recorder FM
|
||||
platform=fmrecorder
|
||||
released=yes
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=112x64x1
|
||||
manualname=
|
||||
|
||||
[fmrecorder8mb]
|
||||
name=Archos Jukebox Recorder FM (with 8mb memory)
|
||||
platform=fmrecorder8mb
|
||||
released=no
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=112x64x1
|
||||
manualname=rockbox-fmrecorder
|
||||
|
||||
[ondiosp]
|
||||
name=Archos Ondio SP
|
||||
platform=ondiosp
|
||||
released=yes
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=112x64x1
|
||||
manualname=
|
||||
|
||||
[ondiofm]
|
||||
name=Archos Ondio FM
|
||||
platform=ondiofm
|
||||
released=yes
|
||||
needsbootloader=no
|
||||
bootloadermethod=
|
||||
bootloadername=
|
||||
resolution=112x64x1
|
||||
manualname=
|
||||
|
||||
[h100]
|
||||
name=Iriver iHP100, iHP110
|
||||
platform=h100
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=fwpatcher
|
||||
bootloadername=bootloader-h100.bin
|
||||
resolution=160x128x2
|
||||
manualname=rockbox-h100
|
||||
|
||||
[h120]
|
||||
name=Iriver iHP120, iHP140, H120, H140
|
||||
platform=h120
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=fwpatcher
|
||||
bootloadername=bootloader-h120.bin
|
||||
resolution=160x128x2
|
||||
manualname=rockbox-h100
|
||||
|
||||
[h300]
|
||||
name=Iriver H320, H340
|
||||
platform=h300
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=fwpatcher
|
||||
bootloadername=bootloader-h300.bin
|
||||
resolution=220x176x16
|
||||
manualname=rockbox-h300
|
||||
|
||||
[h10_5gbums]
|
||||
name=Iriver H10 (5/6GB) UMS
|
||||
platform=h10_5gb
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=h10
|
||||
bootloadername=H10.mi4
|
||||
resolution=128x128x16
|
||||
manualname=
|
||||
|
||||
[h10_5gbmtp]
|
||||
name=Iriver H10 (5/6GB) MTP
|
||||
platform=h10_5gb
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=h10
|
||||
bootloadername=H10_5GB-MTP/H10.mi4
|
||||
resolution=128x128x16
|
||||
manualname=
|
||||
|
||||
[h10]
|
||||
name=Iriver H10 (20GB)
|
||||
platform=h10
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=h10
|
||||
bootloadername=H10_20GC.mi4
|
||||
resolution=160x128x16
|
||||
manualname=
|
||||
|
||||
[ipodcolor]
|
||||
name=Apple Ipod Colour/Photo/U2 (4th gen)
|
||||
platform=ipodcolor
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=ipodpatcher
|
||||
bootloadername=ipodcolor
|
||||
resolution=220x176x16
|
||||
manualname=
|
||||
|
||||
[ipodnano]
|
||||
name=Apple Ipod Nano (1st gen)
|
||||
platform=ipodnano
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=ipodpatcher
|
||||
bootloadername=ipodnano
|
||||
resolution=176x132x16
|
||||
manualname=
|
||||
|
||||
[ipod4gray]
|
||||
name=Apple Ipod (4th gen, greyscale)
|
||||
platform=ipod4gray
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=ipodpatcher
|
||||
bootloadername=ipod4g
|
||||
resolution=160x128x2
|
||||
manualname=
|
||||
|
||||
[ipodvideo]
|
||||
name=Apple Ipod Video (5th gen)
|
||||
platform=ipodvideo
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=ipodpatcher
|
||||
bootloadername=ipodvideo
|
||||
resolution=320x240x16
|
||||
manualname=
|
||||
|
||||
[ipod3g]
|
||||
name=Apple Ipod (3rd gen)
|
||||
platform=ipod3g
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=ipodpatcher
|
||||
bootloadername=ipod3g
|
||||
resolution=160x128x2
|
||||
manualname=
|
||||
|
||||
[ipodmini1g]
|
||||
name=Apple Ipod Mini (1st gen)
|
||||
platform=ipodmini1g
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=ipodpatcher
|
||||
bootloadername=ipodmini
|
||||
resolution=138x110x2
|
||||
manualname=rockbox-ipodmini2g
|
||||
|
||||
[ipodmini2g]
|
||||
name=Apple Ipod Mini (2nd gen)
|
||||
platform=ipodmini2g
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=ipodpatcher
|
||||
bootloadername=ipodmini2g
|
||||
resolution=138x110x2
|
||||
manualname=rockbox-ipodmini2g
|
||||
|
||||
[iaudiox5]
|
||||
name=Cowon iAudio X5 , X5L
|
||||
platform=iaudiox5
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=iaudio
|
||||
bootloadername=x5_fw.bin
|
||||
resolution=160x128x16
|
||||
manualname=
|
||||
|
||||
[iaudiox5v]
|
||||
name=Cowon iAudio X5V
|
||||
platform=iaudiox5
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=iaudio
|
||||
bootloadername=x5v_fw.bin
|
||||
resolution=160x128x2
|
||||
manualname=
|
||||
|
||||
[iaudiom5]
|
||||
name=Cowon iAudio M5 , M5L
|
||||
platform=iaudiom5
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=iaudio
|
||||
bootloadername=m5_fw.bin
|
||||
resolution=160x128x16
|
||||
manualname=
|
||||
|
||||
[gigabeatf]
|
||||
name=Toshiba Gigabeat F , X
|
||||
platform=gigabeatf
|
||||
needsbootloader=yes
|
||||
bootloadermethod=gigabeatf
|
||||
bootloadername=FWIMG01.DAT
|
||||
resolution=240x320x16
|
||||
manualname=
|
||||
|
||||
[sansae200]
|
||||
name=Sandisk Sansa E200
|
||||
platform=sansae200
|
||||
released=no
|
||||
needsbootloader=yes
|
||||
bootloadermethod=sansapatcher
|
||||
bootloadername=PP5022.mi4
|
||||
resolution=176x220x16
|
||||
manualname=
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
; Script generated by the Inno Setup Script Wizard.
|
||||
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
||||
|
||||
#define MyAppName "Rockbox Utility"
|
||||
#define MyAppVerName "Rockbox Utility v0.2.1"
|
||||
#define MyAppPublisher "Rockbox Team"
|
||||
#define MyAppURL "http://www.rockbox.org/"
|
||||
#define MyAppExeName "rbutil.exe"
|
||||
#define MyAppUrlName "rbutil.url"
|
||||
|
||||
[Setup]
|
||||
AppName={#MyAppName}
|
||||
AppVerName={#MyAppVerName}
|
||||
AppPublisher={#MyAppPublisher}
|
||||
AppPublisherURL={#MyAppURL}
|
||||
AppSupportURL={#MyAppURL}
|
||||
AppUpdatesURL={#MyAppURL}
|
||||
DefaultDirName={pf}\{#MyAppName}
|
||||
DefaultGroupName={#MyAppName}
|
||||
LicenseFile=copying.txt
|
||||
OutputBaseFilename=rbutil-0.2.1-setup
|
||||
Compression=lzma/ultra
|
||||
SolidCompression=true
|
||||
OutputDir=.
|
||||
AppCopyright=© 2005-6 Rockbox Team
|
||||
AppID={{BDAF1E02-1CC9-48BB-AE03-95D87F65BF4A}
|
||||
|
||||
[Languages]
|
||||
Name: english; MessagesFile: compiler:Default.isl
|
||||
|
||||
[Tasks]
|
||||
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
|
||||
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
|
||||
|
||||
[Files]
|
||||
Source: rbutil.exe; DestDir: {app}; Flags: ignoreversion
|
||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||
Source: rbutil.ini; DestDir: {app}; Flags: ignoreversion
|
||||
|
||||
[INI]
|
||||
Filename: {app}\{#MyAppUrlName}; Section: InternetShortcut; Key: URL; String: {#MyAppURL}
|
||||
|
||||
[Icons]
|
||||
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
|
||||
Name: {group}\{cm:ProgramOnTheWeb,{#MyAppName}}; Filename: {app}\{#MyAppUrlName}
|
||||
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
|
||||
Name: {userdesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
|
||||
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: quicklaunchicon
|
||||
|
||||
[Run]
|
||||
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent
|
||||
|
||||
[UninstallDelete]
|
||||
Type: files; Name: {app}\{#MyAppUrlName}
|
||||
|
||||
2675
rbutil/rbutil.r
|
|
@ -1,288 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: rbutilApp.cpp
|
||||
*
|
||||
* Copyright (C) 2005 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "rbutilApp.h"
|
||||
#include "bootloaders.h"
|
||||
|
||||
GlobalVars* gv = new GlobalVars();
|
||||
|
||||
IMPLEMENT_APP(rbutilFrmApp)
|
||||
|
||||
bool rbutilFrmApp::OnInit()
|
||||
{
|
||||
wxString buf = wxT("");
|
||||
|
||||
wxLogVerbose(wxT("=== begin rbutilFrmApp::Oninit()"));
|
||||
|
||||
|
||||
gv->stdpaths = new wxStandardPaths();
|
||||
|
||||
// Get application directory
|
||||
// DANGER! GetDataDir() doesn't portably return the application directory
|
||||
// We want to use the form below instead, but not until wxWidgets 2.8 is
|
||||
// released. *Datadir gives the wrong dir for this on Linux/Mac even on Wx2.8 *
|
||||
gv->AppDir = gv->stdpaths->GetExecutablePath().BeforeLast(PATH_SEP_CHR);
|
||||
// buf = gv->stdpaths->GetDataDir(); buf.Append(PATH_SEP);
|
||||
// gv->AppDir = buf.BeforeLast(PATH_SEP_CHR).c_str();
|
||||
|
||||
buf = gv->stdpaths->GetUserDataDir();
|
||||
if (! wxDirExists(buf) )
|
||||
{
|
||||
wxLogNull lognull;
|
||||
if (! wxMkdir(buf, 0777))
|
||||
{
|
||||
wxLogFatalError(wxT("Can't create data directory %s"),
|
||||
buf.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
buf += PATH_SEP wxT("rbutil.log");
|
||||
gv->logfile = new wxFFile(buf, wxT("w"));
|
||||
if (! gv->logfile->IsOpened() )
|
||||
wxLogFatalError(wxT("Unable to open log file"));
|
||||
|
||||
gv->loggui = new wxLogGui();
|
||||
gv->loggui->SetActiveTarget(gv->loggui);
|
||||
gv->loggui->SetLogLevel(wxLOG_Message);
|
||||
gv->logchain = new wxLogChain(
|
||||
gv->logstderr = new wxLogStderr(gv->logfile->fp() ) );
|
||||
|
||||
buf = buf.Left(buf.Len() - 10);
|
||||
buf.Append(wxT("download"));
|
||||
if (! wxDirExists(buf) ) wxMkdir(buf, 0777);
|
||||
|
||||
wxFileSystem::AddHandler(new wxInternetFSHandler);
|
||||
wxFileSystem::AddHandler(new wxZipFSHandler);
|
||||
|
||||
if (!ReadGlobalConfig(NULL))
|
||||
{
|
||||
ERR_DIALOG(gv->ErrStr->GetData(), wxT("Rockbox Utility"));
|
||||
return FALSE;
|
||||
}
|
||||
ReadUserConfig();
|
||||
|
||||
wxInitAllImageHandlers(); //init Image handlers
|
||||
initIpodpatcher(); // reserve mem for ipodpatcher
|
||||
initSansaPatcher(); // reserve mem for sansapatcher
|
||||
|
||||
rbutilFrm *myFrame = new rbutilFrm(NULL);
|
||||
SetTopWindow(myFrame);
|
||||
|
||||
myFrame->Show(TRUE);
|
||||
|
||||
wxLogVerbose(wxT("=== end rbUtilFrmApp::OnInit()"));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int rbutilFrmApp::OnExit()
|
||||
{
|
||||
wxLogVerbose(wxT("=== begin rbUtilFrmApp::OnExit()"));
|
||||
|
||||
WriteUserConfig();
|
||||
|
||||
gv->logfile->Close();
|
||||
/* Enabling this code causes the program to crash. I
|
||||
* have no idea why. (possibly because deleting non existing objects ? :-) )
|
||||
wxLog::DontCreateOnDemand();
|
||||
// Free a bunch of structures.
|
||||
delete gv->GlobalConfig;
|
||||
delete gv->ErrStr;
|
||||
delete gv->stdpaths;
|
||||
delete gv->platform;
|
||||
|
||||
delete gv->logstderr;
|
||||
delete gv->logchain;
|
||||
delete gv->logfile;
|
||||
delete gv->loggui;
|
||||
*/
|
||||
wxLogVerbose(wxT("=== end rbUtilFrmApp::OnExit()"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool rbutilFrmApp::ReadGlobalConfig(rbutilFrm* myFrame)
|
||||
{
|
||||
wxString buf, tmpstr, stack;
|
||||
wxLogVerbose(wxT("=== begin rbutilFrmApp::ReadGlobalConfig(%p)"),
|
||||
(void*) myFrame);
|
||||
|
||||
// Cross-platform compatibility: look for rbutil.ini in then in the app dir
|
||||
// then in the user config dir (linux ~/) and
|
||||
// then config dir (linux /etc/ )
|
||||
|
||||
buf = gv->AppDir + wxT("" PATH_SEP "rbutil.ini");
|
||||
if (! wxFileExists(buf) )
|
||||
{
|
||||
buf = gv->stdpaths->GetUserConfigDir()
|
||||
+ wxT("" PATH_SEP ".rbutil" PATH_SEP "rbutil.ini");
|
||||
if (! wxFileExists(buf) )
|
||||
{
|
||||
buf = gv->stdpaths->GetConfigDir()
|
||||
+ wxT("" PATH_SEP "rbutil.ini");
|
||||
}
|
||||
}
|
||||
|
||||
if (! wxFileExists(buf) )
|
||||
{
|
||||
gv->ErrStr = new wxString(wxT("Configuration file doesnt exist!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
wxFileInputStream* cfgis = new wxFileInputStream(buf);
|
||||
|
||||
if (!cfgis->CanRead()) {
|
||||
gv->ErrStr = new wxString(wxT("Unable to open configuration file"));
|
||||
return false;
|
||||
}
|
||||
|
||||
gv->GlobalConfig = new wxFileConfig(*cfgis);
|
||||
gv->GlobalConfigFile = buf;
|
||||
|
||||
unsigned int i = 0;
|
||||
|
||||
stack = gv->GlobalConfig->GetPath();
|
||||
gv->GlobalConfig->SetPath(wxT("/platforms"));
|
||||
while(gv->GlobalConfig->Read(buf.Format(wxT("platform%d"), i + 1),
|
||||
&tmpstr)) {
|
||||
wxString cur = tmpstr;
|
||||
//gv->plat_id.Add(tmpstr);
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/name"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_name.Add(tmpstr);
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/platform"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_id.Add(tmpstr);
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/released"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_released.Add( (tmpstr == wxT("yes")) ? true : false ) ;
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/needsbootloader"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_needsbootloader.Add( (tmpstr == wxT("yes")) ? true : false ) ;
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/bootloadermethod"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_bootloadermethod.Add(tmpstr);
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/bootloadername"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_bootloadername.Add(tmpstr);
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/resolution"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_resolution.Add(tmpstr);
|
||||
gv->GlobalConfig->Read(buf.Format(wxT("/%s/manualname"),
|
||||
cur.c_str()), &tmpstr);
|
||||
gv->plat_manualname.Add(tmpstr);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
gv->GlobalConfig->SetPath(wxT("/general"));
|
||||
gv->GlobalConfig->Read(wxT("default_platform"), &tmpstr, wxT("cthulhu"));
|
||||
|
||||
|
||||
gv->GlobalConfig->Read(wxT("last_release"), &tmpstr);
|
||||
gv->last_release = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("download_url"), &tmpstr);
|
||||
gv->download_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("daily_url"), &tmpstr);
|
||||
gv->daily_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("bleeding_url"), &tmpstr);
|
||||
gv->bleeding_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("server_conf_url"), &tmpstr);
|
||||
gv->server_conf_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("font_url"), &tmpstr);
|
||||
gv->font_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("prog_name"), &tmpstr);
|
||||
gv->prog_name = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("bootloader_url"), &tmpstr);
|
||||
gv->bootloader_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("themes_url"), &tmpstr);
|
||||
gv->themes_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("manual_url"), &tmpstr);
|
||||
gv->manual_url = tmpstr;
|
||||
|
||||
gv->GlobalConfig->Read(wxT("doom_url"), &tmpstr);
|
||||
gv->doom_url = tmpstr;
|
||||
|
||||
#ifdef __WXMSW__
|
||||
gv->curdestdir = wxT("D:\\");
|
||||
#else
|
||||
gv->curdestdir = wxT("/mnt");
|
||||
#endif
|
||||
gv->GlobalConfig->SetPath(stack);
|
||||
|
||||
wxLogVerbose(wxT("=== end rbutilFrmApp::ReadGlobalConfig()"));
|
||||
return true;
|
||||
}
|
||||
|
||||
void rbutilFrmApp::ReadUserConfig()
|
||||
{
|
||||
wxString buf, str, stack;
|
||||
|
||||
buf = gv->AppDir + wxT("" PATH_SEP "RockboxUtility.cfg");
|
||||
|
||||
if (wxFileExists(buf) )
|
||||
{
|
||||
gv->portable = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
gv->portable = false;
|
||||
buf = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "RockboxUtility.cfg");
|
||||
}
|
||||
|
||||
gv->UserConfig = new wxFileConfig(wxEmptyString, wxEmptyString, buf);
|
||||
gv->UserConfigFile = buf;
|
||||
gv->UserConfig->Set(gv->UserConfig); // Store wxWidgets internal settings
|
||||
stack = gv->UserConfig->GetPath();
|
||||
|
||||
gv->UserConfig->SetPath(wxT("/defaults"));
|
||||
if (gv->UserConfig->Read(wxT("curdestdir"), &str) ) gv->curdestdir = str;
|
||||
if (gv->UserConfig->Read(wxT("curplatform"), &str) ) gv->curplat = str;
|
||||
if (gv->UserConfig->Read(wxT("curfirmware"), &str) ) gv->curfirmware = str;
|
||||
if (gv->UserConfig->Read(wxT("proxy_url"), &str) ) gv->proxy_url = str;
|
||||
|
||||
if (gv->UserConfig->Read(wxT("pathToTts"), &str) ) gv->pathToTts = str;
|
||||
if (gv->UserConfig->Read(wxT("pathToEnc"), &str) ) gv->pathToEnc = str;
|
||||
gv->UserConfig->SetPath(stack);
|
||||
}
|
||||
|
||||
void rbutilFrmApp::WriteUserConfig()
|
||||
{
|
||||
gv->UserConfig->SetPath(wxT("/defaults"));
|
||||
gv->UserConfig->Write(wxT("curdestdir"), gv->curdestdir);
|
||||
gv->UserConfig->Write(wxT("curplatform"), gv->curplat);
|
||||
gv->UserConfig->Write(wxT("curfirmware"), gv->curfirmware);
|
||||
gv->UserConfig->Write(wxT("proxy_url"), gv->proxy_url);
|
||||
gv->UserConfig->Write(wxT("pathToTts"), gv->pathToTts);
|
||||
gv->UserConfig->Write(wxT("pathToEnc"), gv->pathToEnc);
|
||||
|
||||
delete gv->UserConfig;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: rbutilApp.h
|
||||
*
|
||||
* Copyright (C) 2005 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include <wx/wxprec.h>
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
#ifndef WX_PRECOMP
|
||||
#include <wx/wx.h>
|
||||
#endif
|
||||
|
||||
#include <wx/msgdlg.h>
|
||||
#include <wx/config.h>
|
||||
#include <wx/confbase.h>
|
||||
#include <wx/fileconf.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/wfstream.h>
|
||||
#include <wx/fs_inet.h>
|
||||
#include <wx/fs_zip.h>
|
||||
#include <wx/stdpaths.h>
|
||||
|
||||
#include "rbutilFrm.h"
|
||||
#include "rbutil.h"
|
||||
|
||||
class rbutilFrmApp:public wxApp
|
||||
{
|
||||
public:
|
||||
bool OnInit();
|
||||
int OnExit();
|
||||
bool ReadGlobalConfig(rbutilFrm* myFrame);
|
||||
void ReadUserConfig(void);
|
||||
void WriteUserConfig(void);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -1,628 +0,0 @@
|
|||
|
||||
#include "rbutilCtrls.h"
|
||||
#include "bootloaders.h"
|
||||
#include "autodetection.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
//// Controls
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//// Image Ctrl
|
||||
//////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(ImageCtrl, wxControl)
|
||||
EVT_PAINT(ImageCtrl::OnPaint)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(ImageCtrl, wxControl)
|
||||
|
||||
bool ImageCtrl::Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size, long style,
|
||||
const wxValidator& validator)
|
||||
{
|
||||
if (!wxControl::Create(parent, id, pos, size, style, validator)) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ImageCtrl::OnPaint(wxPaintEvent& event)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
dc.DrawBitmap(m_bitmap,0,0,false);
|
||||
}
|
||||
|
||||
void ImageCtrl::SetBitmap(wxBitmap bmp)
|
||||
{
|
||||
m_bitmap = bmp;
|
||||
Refresh();
|
||||
|
||||
}
|
||||
|
||||
wxSize ImageCtrl::DoGetBestSize() const
|
||||
{
|
||||
wxSize bestsize;
|
||||
bestsize.x = m_bitmap.GetWidth();
|
||||
bestsize.y = m_bitmap.GetHeight();
|
||||
return bestsize;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//// Theme Control
|
||||
//////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(ThemeCtrl, wxPanel)
|
||||
EVT_LISTBOX(ID_THEME_LST, ThemeCtrl::OnThemesLst)
|
||||
EVT_BUTTON(ID_THEME_SELECT_ALL, ThemeCtrl::OnSelectAll)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(ThemeCtrl, wxPanel)
|
||||
|
||||
bool ThemeCtrl::Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size, long style,
|
||||
const wxString title )
|
||||
{
|
||||
if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
|
||||
|
||||
CreateControls();
|
||||
|
||||
GetSizer()->Fit(this);
|
||||
|
||||
GetSizer()->SetSizeHints(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ThemeCtrl::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(horizontalSizer, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
//Device Selection
|
||||
wxBoxSizer* wxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
|
||||
horizontalSizer->Add(wxBoxSizer7,0,wxGROW | wxALL,0);
|
||||
|
||||
wxStaticText* m_desc = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("Select one or more Themes to install"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
wxBoxSizer7->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_themeList = new wxListBox(this,ID_THEME_LST,wxDefaultPosition,
|
||||
wxDefaultSize,0,NULL,wxLB_EXTENDED);
|
||||
wxBoxSizer7->Add(m_themeList, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_selectAllThemes = new wxButton(this, ID_THEME_SELECT_ALL,
|
||||
wxT("Select All"));
|
||||
wxBoxSizer7->Add(m_selectAllThemes, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
// Preview Picture
|
||||
wxBoxSizer* wxBoxSizer9 = new wxBoxSizer(wxVERTICAL);
|
||||
horizontalSizer->Add(wxBoxSizer9,0,wxGROW | wxALL,0);
|
||||
|
||||
wxStaticText* preview_desc= new wxStaticText(this,wxID_ANY,wxT("Preview:"));
|
||||
wxBoxSizer9->Add(preview_desc,0,wxGROW | wxALL,5);
|
||||
|
||||
m_PreviewBitmap = new ImageCtrl(this,ID_PREVIEW_BITMAP );
|
||||
wxBoxSizer9->Add(m_PreviewBitmap,0,wxALIGN_LEFT | wxALL,5);
|
||||
|
||||
wxStaticBox* groupbox= new wxStaticBox(this,wxID_ANY,wxT("Selected Theme:"));
|
||||
wxStaticBoxSizer* styleSizer = new wxStaticBoxSizer( groupbox, wxVERTICAL );
|
||||
topSizer->Add(styleSizer,0,wxGROW|wxALL,0);
|
||||
|
||||
// horizontal sizer
|
||||
wxBoxSizer* wxBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
|
||||
styleSizer->Add(wxBoxSizer8,0,wxGROW | wxALL,0);
|
||||
|
||||
// File size
|
||||
wxStaticText* size_desc= new wxStaticText(this,wxID_ANY,wxT("Filesize:"));
|
||||
wxBoxSizer8->Add(size_desc,0,wxGROW | wxALL,5);
|
||||
|
||||
m_size= new wxStaticText(this,ID_FILESIZE,wxT(""));
|
||||
wxBoxSizer8->Add(m_size,0,wxGROW | wxALL,5);
|
||||
|
||||
// Description
|
||||
wxStaticText* desc_desc= new wxStaticText(this,wxID_ANY,wxT("Description:"));
|
||||
styleSizer->Add(desc_desc,0,wxGROW | wxALL,5);
|
||||
|
||||
m_themedesc= new wxTextCtrl(this,ID_DESC,wxT(""),wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY);
|
||||
styleSizer->Add(m_themedesc,0,wxGROW | wxALL,5);
|
||||
|
||||
topSizer->Fit(this);
|
||||
topSizer->SetSizeHints(this);
|
||||
Layout();
|
||||
|
||||
}
|
||||
|
||||
void ThemeCtrl::Init()
|
||||
{
|
||||
m_Themes.Clear();
|
||||
m_Themes_path.Clear();
|
||||
m_Themes_size.Clear();
|
||||
m_Themes_image.Clear();
|
||||
m_Themes_desc.Clear();
|
||||
|
||||
}
|
||||
|
||||
void ThemeCtrl::setDevice(wxString device)
|
||||
{
|
||||
|
||||
int index = gv->plat_id.Index(device);
|
||||
if(index == -1) return;
|
||||
|
||||
if(gv->plat_resolution[index] == m_currentResolution)
|
||||
return;
|
||||
else
|
||||
m_currentResolution = gv->plat_resolution[index];
|
||||
|
||||
// load the themelist
|
||||
Init();
|
||||
m_size->SetLabel(wxT(""));
|
||||
m_themedesc->SetValue(wxT(""));
|
||||
m_themeList->Clear();
|
||||
|
||||
//get correct Themes list
|
||||
wxString src,dest,err;
|
||||
|
||||
src = gv->themes_url + wxT("rbutil.php?res=") + m_currentResolution;
|
||||
dest = gv->stdpaths->GetUserDataDir() + wxT("" PATH_SEP "download" PATH_SEP)
|
||||
+ m_currentResolution + wxT(".list");
|
||||
|
||||
if(DownloadURL(src, dest))
|
||||
{
|
||||
MESG_DIALOG(wxT("Unable to download themes list."));
|
||||
return;
|
||||
}
|
||||
|
||||
//read and parse Themes list
|
||||
wxString themelistraw;
|
||||
wxFFile themefile;
|
||||
if(!themefile.Open(dest)) //open file
|
||||
{
|
||||
MESG_DIALOG(wxT("Unable to open themes list."));
|
||||
return;
|
||||
}
|
||||
if(!themefile.ReadAll(&themelistraw)) //read complete file
|
||||
{
|
||||
MESG_DIALOG(wxT("Unable to read themes list."));
|
||||
return;
|
||||
}
|
||||
wxRegEx reAll(wxT("<body >(.+)</body>")); //extract body part
|
||||
if(! reAll.Matches(themelistraw))
|
||||
{
|
||||
MESG_DIALOG(wxT("Themes list is in wrong Format."));
|
||||
return;
|
||||
}
|
||||
wxString lines = reAll.GetMatch(themelistraw,1);
|
||||
|
||||
// prepare text
|
||||
lines.Replace(wxT("<br />"),wxT(""),true); //replace <br /> with nothing
|
||||
lines.Replace(wxT("\n"),wxT(""),true); //replace \n with nothing
|
||||
lines.Trim(true); //strip WS at end
|
||||
lines.Trim(false); //strip WS at beginning
|
||||
wxStringTokenizer tkz(lines,wxT("|")); //tokenize it
|
||||
|
||||
while ( tkz.HasMoreTokens() ) // read all entrys
|
||||
{
|
||||
m_Themes.Add(tkz.GetNextToken()); //Theme name
|
||||
m_Themes_path.Add(tkz.GetNextToken()); //Theme path
|
||||
m_Themes_size.Add(tkz.GetNextToken()); //File size
|
||||
m_Themes_image.Add(tkz.GetNextToken()); //Screenshot
|
||||
m_Themes_desc.Add(tkz.GetNextToken()); //Description
|
||||
|
||||
m_themeList->Append(m_Themes.Last());
|
||||
}
|
||||
|
||||
this->GetSizer()->Layout();
|
||||
this->GetSizer()->Fit(this);
|
||||
this->GetSizer()->SetSizeHints(this);
|
||||
m_parent->GetSizer()->Layout();
|
||||
m_parent->GetSizer()->Fit(m_parent);
|
||||
m_parent->GetSizer()->SetSizeHints(m_parent);
|
||||
}
|
||||
|
||||
|
||||
void ThemeCtrl::OnThemesLst(wxCommandEvent& event)
|
||||
{
|
||||
ThemePreview();
|
||||
}
|
||||
|
||||
void ThemeCtrl::ThemePreview()
|
||||
{
|
||||
// wxCriticalSectionLocker locker(m_ThemeSelectSection);
|
||||
|
||||
wxArrayInt selected;
|
||||
int numSelected = m_themeList->GetSelections(selected);
|
||||
if(numSelected == 0) return;
|
||||
|
||||
int index = selected[0];
|
||||
|
||||
m_size->SetLabel(m_Themes_size[index]);
|
||||
m_themedesc->SetValue(m_Themes_desc[index]);
|
||||
// m_themedesc->Wrap(200); // wrap desc
|
||||
|
||||
wxString src,dest;
|
||||
|
||||
int pos = m_Themes_image[index].Find('/',true);
|
||||
wxString filename = m_Themes_image[index](pos+1,m_Themes_image[index].Length());
|
||||
|
||||
dest = gv->stdpaths->GetUserDataDir()
|
||||
+ wxT("" PATH_SEP "download" PATH_SEP)
|
||||
+ m_currentResolution;
|
||||
|
||||
if(!wxDirExists(dest))
|
||||
wxMkdir(dest);
|
||||
|
||||
//this is a URL no PATH_SEP
|
||||
src = gv->themes_url + wxT("/data/") + m_currentResolution + wxT("/")
|
||||
+ filename;
|
||||
dest = gv->stdpaths->GetUserDataDir() + wxT("" PATH_SEP "download" PATH_SEP)
|
||||
+ m_currentResolution + wxT("" PATH_SEP) + filename;
|
||||
|
||||
if(!wxFileExists(dest))
|
||||
{
|
||||
if(DownloadURL(src, dest))
|
||||
{
|
||||
MESG_DIALOG(wxT("Unable to download image."));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
m_currentimage = dest;
|
||||
wxBitmap bmp;
|
||||
bmp.LoadFile(m_currentimage,wxBITMAP_TYPE_PNG);
|
||||
m_PreviewBitmap->SetBitmap(bmp);
|
||||
|
||||
Refresh();
|
||||
this->GetSizer()->Layout();
|
||||
this->GetSizer()->Fit(this);
|
||||
this->GetSizer()->SetSizeHints(this);
|
||||
|
||||
m_parent->GetSizer()->Layout();
|
||||
m_parent->GetSizer()->Fit(m_parent);
|
||||
m_parent->GetSizer()->SetSizeHints(m_parent);
|
||||
|
||||
}
|
||||
|
||||
void ThemeCtrl::OnSelectAll(wxCommandEvent& event)
|
||||
{
|
||||
for(unsigned int i=0; i < m_themeList->GetCount(); i++)
|
||||
m_themeList->Select(i);
|
||||
ThemePreview();
|
||||
}
|
||||
|
||||
wxArrayString ThemeCtrl::getThemesToInstall()
|
||||
{
|
||||
wxArrayString themes;
|
||||
wxArrayInt selected;
|
||||
int numSelected = m_themeList->GetSelections(selected);
|
||||
|
||||
for(int i=0; i < numSelected; i++)
|
||||
{
|
||||
themes.Add(m_Themes_path[selected[i]]);
|
||||
}
|
||||
return themes;
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//// Ok Cancel Control
|
||||
//////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(OkCancelCtrl, wxPanel)
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(OkCancelCtrl, wxPanel)
|
||||
|
||||
bool OkCancelCtrl::Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size, long style,
|
||||
const wxString title)
|
||||
{
|
||||
if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
|
||||
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OkCancelCtrl::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
// The OK button
|
||||
m_OkBtn = new wxButton ( this, wxID_OK, wxT("&OK"),
|
||||
wxDefaultPosition, wxDefaultSize, 0 );
|
||||
topSizer->Add(m_OkBtn, 0, wxALL, 5);
|
||||
// The Cancel button
|
||||
m_CancelBtn = new wxButton ( this, wxID_CANCEL,
|
||||
wxT("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
topSizer->Add(m_CancelBtn, 0, wxALL, 5);
|
||||
|
||||
Layout();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//// Device Selector
|
||||
//////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(DeviceSelectorCtrl, wxPanel)
|
||||
EVT_BUTTON(ID_AUTODETECT_BTN, DeviceSelectorCtrl::OnAutoDetect)
|
||||
EVT_COMBOBOX(ID_DEVICE_CBX,DeviceSelectorCtrl::OnComboBox)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(DeviceSelectorCtrl, wxPanel)
|
||||
|
||||
bool DeviceSelectorCtrl::Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size, long style,
|
||||
const wxString title)
|
||||
{
|
||||
if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
|
||||
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
void DeviceSelectorCtrl::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
//Device Selection
|
||||
wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(horizontalSizer, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
m_desc = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("Device:"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
horizontalSizer->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_deviceCbx = new wxComboBox(this, ID_DEVICE_CBX,wxT("Select your Device"),
|
||||
wxDefaultPosition,wxDefaultSize,gv->plat_name,wxCB_READONLY);
|
||||
|
||||
m_deviceCbx->SetToolTip(wxT("Select your Device."));
|
||||
m_deviceCbx->SetHelpText(wxT("Select your Device."));
|
||||
|
||||
horizontalSizer->Add(m_deviceCbx, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
wxButton* m_autodetectBtn = new wxButton(this, ID_AUTODETECT_BTN, wxT("Autodetect"),
|
||||
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
|
||||
wxT("AutodetectBtn"));
|
||||
|
||||
m_autodetectBtn->SetToolTip(wxT("Click here to autodetect your Device."));
|
||||
m_autodetectBtn->SetHelpText(wxT("Autodetection of the Device."));
|
||||
// m_autodetectBtn->SetFocus();
|
||||
|
||||
horizontalSizer->Add(m_autodetectBtn,0,wxGROW | wxALL,5);
|
||||
Layout();
|
||||
|
||||
}
|
||||
|
||||
wxString DeviceSelectorCtrl::getDevice()
|
||||
{
|
||||
return m_currentDevice;
|
||||
}
|
||||
|
||||
void DeviceSelectorCtrl::setDefault()
|
||||
{
|
||||
int index = gv->plat_id.Index(gv->curplat);
|
||||
if(index == -1) return;
|
||||
m_deviceCbx->SetValue(gv->plat_name[index]);
|
||||
}
|
||||
|
||||
void DeviceSelectorCtrl::OnComboBox(wxCommandEvent& event)
|
||||
{
|
||||
int index = gv->plat_name.Index(m_deviceCbx->GetValue());
|
||||
|
||||
if(index == -1)
|
||||
{
|
||||
m_currentDevice = wxT("");
|
||||
return;
|
||||
}
|
||||
|
||||
gv->curplat = gv->plat_id[index];
|
||||
}
|
||||
|
||||
void DeviceSelectorCtrl::OnAutoDetect(wxCommandEvent& event)
|
||||
{
|
||||
if(!AutoDetect())
|
||||
{
|
||||
WARN_DIALOG(wxT("No Device detected. If you have a Device connected, select the correct one manually."),
|
||||
wxT("Detecting a Device"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool DeviceSelectorCtrl::AutoDetect()
|
||||
{
|
||||
UsbDeviceInfo device;
|
||||
|
||||
if(detectDevices(&device))
|
||||
{
|
||||
|
||||
if(device.status == DEVICEFOUND)
|
||||
{
|
||||
m_deviceCbx->SetValue(gv->plat_name[device.device_index]);
|
||||
gv->curplat=gv->plat_id[device.device_index];
|
||||
|
||||
if(device.path != wxT(""))
|
||||
{
|
||||
gv->curdestdir = device.path;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if(device.status == TOMANYDEVICES)
|
||||
{
|
||||
WARN_DIALOG(wxT("More then one device detected, please connect only One"),
|
||||
wxT("Detecting a Device"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//// DevicePosition Selector
|
||||
//////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(DevicePositionCtrl, wxPanel)
|
||||
EVT_BUTTON(ID_BROWSE_BTN, DevicePositionCtrl::OnBrowseBtn)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(DevicePositionCtrl, wxPanel)
|
||||
|
||||
bool DevicePositionCtrl::Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size, long style,
|
||||
const wxString title)
|
||||
{
|
||||
if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
|
||||
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
void DevicePositionCtrl::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
//Device Selection
|
||||
m_desc = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("Select your Device in the Filesystem"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
topSizer->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(horizontalSizer, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_devicePos = new wxTextCtrl(this,wxID_ANY,gv->curdestdir);
|
||||
m_devicePos->SetToolTip(wxT("Type the folder where your Device is here"));
|
||||
m_devicePos->SetHelpText(wxT("Type the folder where your Device is here"));
|
||||
horizontalSizer->Add(m_devicePos,0,wxGROW | wxALL,5);
|
||||
|
||||
m_browseBtn = new wxButton(this, ID_BROWSE_BTN, wxT("Browse"),
|
||||
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
|
||||
wxT("BrowseBtn"));
|
||||
m_browseBtn->SetToolTip(wxT("Browse for your Device"));
|
||||
m_browseBtn->SetHelpText(wxT("Browse for your Device"));
|
||||
horizontalSizer->Add(m_browseBtn,0,wxGROW | wxALL,5);
|
||||
|
||||
topSizer->Fit(this);
|
||||
Layout();
|
||||
|
||||
}
|
||||
|
||||
wxString DevicePositionCtrl::getDevicePos()
|
||||
{
|
||||
return m_devicePos->GetValue();
|
||||
|
||||
}
|
||||
|
||||
void DevicePositionCtrl::setDefault()
|
||||
{
|
||||
m_devicePos->SetValue(gv->curdestdir);
|
||||
}
|
||||
|
||||
void DevicePositionCtrl::OnBrowseBtn(wxCommandEvent& event)
|
||||
{
|
||||
const wxString& temp = wxDirSelector(
|
||||
wxT("Please select the location of your audio device"), gv->curdestdir,
|
||||
0, wxDefaultPosition, this);
|
||||
|
||||
if (!temp.empty())
|
||||
{
|
||||
m_devicePos->SetValue(temp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//// FirmwarePosition Selector
|
||||
//////////////////////////////////////////////
|
||||
|
||||
BEGIN_EVENT_TABLE(FirmwarePositionCtrl, wxPanel)
|
||||
EVT_BUTTON(ID_BROWSE_BTN, FirmwarePositionCtrl::OnBrowseBtn)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(FirmwarePositionCtrl, wxControl)
|
||||
|
||||
bool FirmwarePositionCtrl::Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos, const wxSize& size, long style,
|
||||
const wxString title)
|
||||
{
|
||||
if (!wxPanel::Create(parent, id, pos, size, style, title)) return false;
|
||||
|
||||
CreateControls();
|
||||
GetSizer()->Fit(this);
|
||||
GetSizer()->SetSizeHints(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
void FirmwarePositionCtrl::CreateControls()
|
||||
{
|
||||
// A top-level sizer
|
||||
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
|
||||
this->SetSizer(topSizer);
|
||||
|
||||
//Device Selection
|
||||
m_desc = new wxStaticText( this, wxID_STATIC,
|
||||
wxT("Select original Firmware from the Manufacturer"), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
topSizer->Add(m_desc, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
wxBoxSizer* horizontalSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
topSizer->Add(horizontalSizer, 0, wxALIGN_LEFT|wxALL, 5);
|
||||
|
||||
m_firmwarePos = new wxTextCtrl(this,wxID_ANY,gv->curdestdir);
|
||||
m_firmwarePos->SetToolTip(wxT("Type the folder where the original Firmware is here"));
|
||||
m_firmwarePos->SetHelpText(wxT("Type the folder where the original Firmware is here"));
|
||||
horizontalSizer->Add(m_firmwarePos,0,wxGROW | wxALL,5);
|
||||
|
||||
m_browseBtn = new wxButton(this, ID_BROWSE_BTN, wxT("Browse"),
|
||||
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator,
|
||||
wxT("BrowseBtn"));
|
||||
m_browseBtn->SetToolTip(wxT("Browse for the original Firmware"));
|
||||
m_browseBtn->SetHelpText(wxT("Browse for the original Firmware"));
|
||||
horizontalSizer->Add(m_browseBtn,0,wxGROW | wxALL,5);
|
||||
|
||||
Layout();
|
||||
|
||||
}
|
||||
|
||||
wxString FirmwarePositionCtrl::getFirmwarePos()
|
||||
{
|
||||
return m_firmwarePos->GetValue();
|
||||
|
||||
}
|
||||
|
||||
void FirmwarePositionCtrl::setDefault()
|
||||
{
|
||||
m_firmwarePos->SetValue(gv->curfirmware);
|
||||
}
|
||||
|
||||
void FirmwarePositionCtrl::OnBrowseBtn(wxCommandEvent& event)
|
||||
{
|
||||
wxString temp = wxFileSelector(
|
||||
wxT("Please select the location of the original Firmware"), gv->curdestdir,wxT(""),wxT(""),wxT("*.hex"));
|
||||
|
||||
if (!temp.empty())
|
||||
{
|
||||
m_firmwarePos->SetValue(temp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1,286 +0,0 @@
|
|||
#ifndef RBUTILCTRLS_H_INCLUDED
|
||||
#define RBUTILCTRLS_H_INCLUDED
|
||||
|
||||
#include "rbutil.h"
|
||||
|
||||
|
||||
class ImageCtrl: public wxControl
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(ImageCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
// Constructors
|
||||
ImageCtrl() { }
|
||||
ImageCtrl(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER,
|
||||
const wxValidator& validator = wxDefaultValidator)
|
||||
{
|
||||
Create(parent, id, pos, size, style, validator);
|
||||
}
|
||||
// Creation
|
||||
bool Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER,
|
||||
const wxValidator& validator = wxDefaultValidator);
|
||||
|
||||
// Event handlers
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
|
||||
wxSize DoGetBestSize() const ;
|
||||
|
||||
void SetBitmap(wxBitmap bmp);
|
||||
|
||||
protected:
|
||||
wxBitmap m_bitmap;
|
||||
|
||||
};
|
||||
|
||||
class ThemeCtrl: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(ThemeCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DESC = 10001,
|
||||
ID_FILESIZE= 10002,
|
||||
ID_INSTALLCHECKBOX= 10003,
|
||||
ID_PREVIEW_BITMAP = 10004,
|
||||
ID_THEME_LST = 10005,
|
||||
ID_THEME_SELECT_ALL = 10006
|
||||
}; //End of Enum
|
||||
|
||||
public:
|
||||
// Constructors
|
||||
ThemeCtrl() { Init(); }
|
||||
ThemeCtrl(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""))
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style, title);
|
||||
}
|
||||
// Creation
|
||||
bool Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""));
|
||||
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
// Common initialization
|
||||
void Init();
|
||||
// Event handlers
|
||||
void OnThemesLst(wxCommandEvent& event);
|
||||
void OnSelectAll(wxCommandEvent& event);
|
||||
void OnCheckBox(wxCommandEvent& event);
|
||||
|
||||
void setDevice(wxString device);
|
||||
wxArrayString getThemesToInstall();
|
||||
|
||||
protected:
|
||||
void ThemePreview(void);
|
||||
|
||||
wxString m_currentimage;
|
||||
wxString m_currentResolution;
|
||||
|
||||
wxStaticText* m_desc;
|
||||
wxListBox* m_themeList;
|
||||
wxButton* m_selectAllThemes;
|
||||
wxStaticText* m_size;
|
||||
wxTextCtrl* m_themedesc;
|
||||
ImageCtrl* m_PreviewBitmap;
|
||||
|
||||
wxArrayString m_Themes;
|
||||
wxArrayString m_Themes_path;
|
||||
wxArrayString m_Themes_size;
|
||||
wxArrayString m_Themes_image;
|
||||
wxArrayString m_Themes_desc;
|
||||
|
||||
};
|
||||
|
||||
class OkCancelCtrl: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(OkCancelCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
// Constructors
|
||||
OkCancelCtrl() { Init(); }
|
||||
OkCancelCtrl(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""))
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style, title);
|
||||
}
|
||||
// Creation
|
||||
bool Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""));
|
||||
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
// Common initialization
|
||||
void Init() { }
|
||||
|
||||
protected:
|
||||
wxButton* m_OkBtn;
|
||||
wxButton* m_CancelBtn;
|
||||
|
||||
};
|
||||
|
||||
class DeviceSelectorCtrl: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(DeviceSelectorCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_DEVICE_CBX = 10001,
|
||||
ID_AUTODETECT_BTN= 10002,
|
||||
}; //End of Enum
|
||||
|
||||
public:
|
||||
// Constructors
|
||||
DeviceSelectorCtrl() { }
|
||||
DeviceSelectorCtrl(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""))
|
||||
{
|
||||
Create(parent, id, pos, size, style, title);
|
||||
}
|
||||
// Creation
|
||||
bool Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""));
|
||||
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
// Event handlers
|
||||
void OnAutoDetect(wxCommandEvent& event);
|
||||
void OnComboBox(wxCommandEvent& event);
|
||||
// Accessors
|
||||
wxString getDevice();
|
||||
void setDefault();
|
||||
|
||||
bool AutoDetect();
|
||||
|
||||
protected:
|
||||
wxString m_currentDevice;
|
||||
wxComboBox* m_deviceCbx;
|
||||
wxStaticText* m_desc;
|
||||
wxButton* m_autodetectBtn;
|
||||
|
||||
};
|
||||
|
||||
|
||||
class DevicePositionCtrl: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(DevicePositionCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_BROWSE_BTN = 10003,
|
||||
}; //End of Enum
|
||||
|
||||
public:
|
||||
// Constructors
|
||||
DevicePositionCtrl() { Init(); }
|
||||
DevicePositionCtrl(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""))
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style, title);
|
||||
}
|
||||
// Creation
|
||||
bool Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""));
|
||||
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
// Common initialization
|
||||
void Init() { }
|
||||
// Event handlers
|
||||
void OnBrowseBtn(wxCommandEvent& event);
|
||||
// Accessors
|
||||
wxString getDevicePos();
|
||||
|
||||
void setDefault();
|
||||
|
||||
protected:
|
||||
wxTextCtrl* m_devicePos;
|
||||
wxStaticText* m_desc;
|
||||
wxButton* m_browseBtn;
|
||||
|
||||
};
|
||||
|
||||
|
||||
class FirmwarePositionCtrl: public wxPanel
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(FirmwarePositionCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
enum {
|
||||
ID_BROWSE_BTN = 10004,
|
||||
}; //End of Enum
|
||||
|
||||
public:
|
||||
// Constructors
|
||||
FirmwarePositionCtrl() { Init(); }
|
||||
FirmwarePositionCtrl(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""))
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style, title);
|
||||
}
|
||||
// Creation
|
||||
bool Create(wxWindow* parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTAB_TRAVERSAL,
|
||||
const wxString title = wxT(""));
|
||||
|
||||
// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
// Common initialization
|
||||
void Init() { }
|
||||
// Event handlers
|
||||
void OnBrowseBtn(wxCommandEvent& event);
|
||||
// Accessors
|
||||
wxString getFirmwarePos();
|
||||
void setDefault();
|
||||
|
||||
protected:
|
||||
wxTextCtrl* m_firmwarePos;
|
||||
wxStaticText* m_desc;
|
||||
wxButton* m_browseBtn;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
1164
rbutil/rbutilFrm.cpp
|
|
@ -1,135 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: rbutilFrm.h
|
||||
*
|
||||
* Copyright (C) 2005 Christi Alice Scarborough
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __rbutilFrm_HPP_
|
||||
#define __rbutilFrm_HPP_
|
||||
|
||||
#include <wx/wxprec.h>
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
#ifndef WX_PRECOMP
|
||||
#include <wx/wx.h>
|
||||
#endif
|
||||
|
||||
#include <wx/menu.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/statbmp.h>
|
||||
#include <wx/panel.h>
|
||||
|
||||
#include <wx/frame.h>
|
||||
#include <wx/valgen.h>
|
||||
//#include <wx/aboutdlg.h>
|
||||
#include <wx/richtext/richtextctrl.h>
|
||||
|
||||
#include "rbutil.h"
|
||||
#include "rbutilCtrls.h"
|
||||
|
||||
|
||||
class rbutilFrm : public wxFrame
|
||||
{
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
public:
|
||||
rbutilFrm( wxWindow *parent, wxWindowID id = 1,
|
||||
const wxString &title = wxT("Rockbox Utility"),
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxCAPTION | wxRESIZE_BORDER | wxSYSTEM_MENU |
|
||||
wxMINIMIZE_BOX|wxMAXIMIZE_BOX | wxCLOSE_BOX);
|
||||
virtual ~rbutilFrm();
|
||||
public:
|
||||
DeviceSelectorCtrl* myDeviceSelector;
|
||||
wxHyperlinkCtrl* manuallink;
|
||||
wxHtmlWindow* manual;
|
||||
wxString curManualDevice;
|
||||
|
||||
wxMenuBar *WxMenuBar1;
|
||||
wxStaticText *WxStaticText3;
|
||||
wxBitmapButton *WxBitmapButton2;
|
||||
wxStaticText *WxStaticText2;
|
||||
wxBitmapButton *WxBitmapButton1;
|
||||
wxBitmapButton *WxBitmapButton3;
|
||||
wxBitmapButton *WxBitmapButton4;
|
||||
wxBitmapButton *WxBitmapButton5;
|
||||
wxBitmapButton *WxBitmapButton6;
|
||||
wxBitmapButton *WxBitmapButton7;
|
||||
wxFlexGridSizer *WxFlexGridSizer1;
|
||||
wxStaticBoxSizer *WxStaticBoxSizer3;
|
||||
wxStaticBitmap *WxStaticBitmap1;
|
||||
wxBoxSizer *WxBoxSizer2;
|
||||
wxPanel *WxPanel1;
|
||||
wxBoxSizer *WxBoxSizer1;
|
||||
public:
|
||||
enum {
|
||||
ID_FILE_MENU = 1033,
|
||||
ID_FILE_EXIT = 1034,
|
||||
ID_FILE_ABOUT = 1035,
|
||||
ID_FILE_WIPECACHE = 1036,
|
||||
ID_PORTABLE_INSTALL = 1037,
|
||||
|
||||
ID_WXSTATICTEXT3 = 1032,
|
||||
ID_WXSTATICTEXT4 = 1032,
|
||||
ID_REMOVE_BTN = 1039,
|
||||
ID_BOOTLOADERREMOVE_BTN = 1038,
|
||||
ID_WXSTATICTEXT2 = 1029,
|
||||
ID_INSTALL_BTN = 1028,
|
||||
ID_WXSTATICBITMAP1 = 1053,
|
||||
ID_FONT_BTN = 1128,
|
||||
ID_THEMES_BTN = 1139,
|
||||
ID_DOOM_BTN = 1140,
|
||||
ID_TALK_BTN = 1141,
|
||||
ID_BOOTLOADER_BTN = 1129,
|
||||
ID_WXPANEL1 = 1064,
|
||||
|
||||
ID_MANUAL = 1065,
|
||||
ID_FILE_PROXY = 1066,
|
||||
|
||||
ID_DUMMY_VALUE_
|
||||
}; //End of Enum
|
||||
public:
|
||||
void rbutilFrmClose(wxCloseEvent& event);
|
||||
void CreateGUIControls(void);
|
||||
void OnFileExit(wxCommandEvent& event);
|
||||
void OnFileAbout(wxCommandEvent &event);
|
||||
void OnFileWipeCache(wxCommandEvent &event);
|
||||
void OnLocationBtn(wxCommandEvent& event);
|
||||
void OnInstallBtn(wxCommandEvent& event);
|
||||
void OnRemoveBtn(wxCommandEvent& event);
|
||||
void OnFontBtn(wxCommandEvent& event);
|
||||
void OnThemesBtn(wxCommandEvent& event);
|
||||
void OnBootloaderBtn(wxCommandEvent& event);
|
||||
void OnPortableInstall(wxCommandEvent& event);
|
||||
void OnBootloaderRemoveBtn(wxCommandEvent& event);
|
||||
void OnManualUpdate(wxUpdateUIEvent& event);
|
||||
void OnFileProxy(wxCommandEvent& event);
|
||||
void OnDoomBtn(wxCommandEvent& event);
|
||||
void OnTalkBtn(wxCommandEvent& event);
|
||||
|
||||
int GetDeviceId(bool);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,666 +0,0 @@
|
|||
/* rbutilFrm XPM */
|
||||
static char *rbutilFrm_XPM[]={
|
||||
"32 32 630 2",
|
||||
" c None",
|
||||
" 0 c #F7F8FD",
|
||||
" 1 c #EBEEF5",
|
||||
" 2 c #E4E9F8",
|
||||
" 3 c #FAFCFE",
|
||||
" 4 c #FAFBFD",
|
||||
" 5 c #7085D8",
|
||||
" 6 c #204DC6",
|
||||
" 7 c #2350C7",
|
||||
" 8 c #7C95D6",
|
||||
" 9 c #F3F7FD",
|
||||
" a c #8C9ED8",
|
||||
" b c #1F4FD1",
|
||||
" c c #2153D3",
|
||||
" d c #1645BF",
|
||||
" e c #001F94",
|
||||
" f c #687AB7",
|
||||
" g c #FFFFFE",
|
||||
" h c #FCFCFD",
|
||||
" i c #FDFDFE",
|
||||
" j c #FEFEFE",
|
||||
" k c #F4F6FC",
|
||||
" l c #F5F7FC",
|
||||
" m c #DEE2F6",
|
||||
" n c #2B54CF",
|
||||
" o c #1B4ECF",
|
||||
" p c #1B4AC5",
|
||||
" q c #153DB6",
|
||||
" r c #062793",
|
||||
" s c #7788B7",
|
||||
" t c #D5D8E0",
|
||||
" u c #DCDCE5",
|
||||
" v c #E4E2EB",
|
||||
" w c #E5E2E9",
|
||||
" x c #F4F4F6",
|
||||
" y c #F7F6F9",
|
||||
" z c #F9F9FA",
|
||||
" A c #FEFEFF",
|
||||
" B c #C6CDF0",
|
||||
" C c #6C86D4",
|
||||
" D c #6989D4",
|
||||
" E c #BECFED",
|
||||
" F c #F9FAFE",
|
||||
" G c #FEFFFF",
|
||||
" H c #7F96D4",
|
||||
" I c #0532B3",
|
||||
" J c #1342BC",
|
||||
" K c #1A48C2",
|
||||
" L c #072BA3",
|
||||
" M c #394C9D",
|
||||
" N c #CCBEBC",
|
||||
" O c #D7D0D0",
|
||||
" P c #C4C4CE",
|
||||
" Q c #B7BCC6",
|
||||
" R c #B4B9C4",
|
||||
" S c #C3C6D0",
|
||||
" T c #D1D3DE",
|
||||
" U c #D8DBE4",
|
||||
" V c #DDDFE3",
|
||||
" W c #9EA7D4",
|
||||
" X c #3559C6",
|
||||
" Y c #194BC4",
|
||||
" Z c #1240B9",
|
||||
" & c #002397",
|
||||
"0 c #8191C7",
|
||||
"00 c #FDFEFE",
|
||||
"01 c #EEF1F9",
|
||||
"02 c #3048A1",
|
||||
"03 c #4B5B9A",
|
||||
"04 c #4059A0",
|
||||
"05 c #0B288B",
|
||||
"06 c #16338B",
|
||||
"07 c #A8ADBE",
|
||||
"08 c #EDC5B8",
|
||||
"09 c #E5BDAD",
|
||||
"0a c #DAB6A6",
|
||||
"0b c #D5B6A7",
|
||||
"0c c #BDB0B3",
|
||||
"0d c #AEB2C0",
|
||||
"0e c #C7CBD7",
|
||||
"0f c #D3D7DE",
|
||||
"0g c #97A8C8",
|
||||
"0h c #2E50B9",
|
||||
"0i c #1D4ECC",
|
||||
"0j c #184AC6",
|
||||
"0k c #173EB1",
|
||||
"0l c #08248F",
|
||||
"0m c #000A5E",
|
||||
"0n c #E0E0EB",
|
||||
"0o c #F2F2F7",
|
||||
"0p c #B7B4CC",
|
||||
"0q c #FFFBFF",
|
||||
"0r c #CED1E1",
|
||||
"0s c #6B7588",
|
||||
"0t c #6179B2",
|
||||
"0u c #8198CD",
|
||||
"0v c #97A3D6",
|
||||
"0w c #9DAADB",
|
||||
"0x c #A5AED1",
|
||||
"0y c #C9C6D4",
|
||||
"0z c #C5BEC3",
|
||||
"0A c #C5CACC",
|
||||
"0B c #C2C3C9",
|
||||
"0C c #C7C5CA",
|
||||
"0D c #627BBC",
|
||||
"0E c #204CCC",
|
||||
"0F c #1949C5",
|
||||
"0G c #1746C1",
|
||||
"0H c #1439AB",
|
||||
"0I c #072282",
|
||||
"0J c #080D53",
|
||||
"0K c #CFCEE5",
|
||||
"0L c #FAF9F9",
|
||||
"0M c #F5F0F1",
|
||||
"0N c #F7F9FD",
|
||||
"0O c #BCBFCC",
|
||||
"0P c #A9B4CB",
|
||||
"0Q c #5474C9",
|
||||
"0R c #6B6F83",
|
||||
"0S c #757679",
|
||||
"0T c #6B738C",
|
||||
"0U c #6B78A2",
|
||||
"0V c #6E81B2",
|
||||
"0W c #778CB9",
|
||||
"0X c #8E9DCC",
|
||||
"0Y c #A3B2DD",
|
||||
"0Z c #AFB8D6",
|
||||
"0& c #2C4395",
|
||||
"1 c #082887",
|
||||
"10 c #0E3095",
|
||||
"11 c #0F33A7",
|
||||
"12 c #0C2C9C",
|
||||
"13 c #071A67",
|
||||
"14 c #191955",
|
||||
"15 c #BEBDD9",
|
||||
"16 c #EEEDF0",
|
||||
"17 c #F9F8FB",
|
||||
"18 c #D1D8E8",
|
||||
"19 c #BBBEC3",
|
||||
"1a c #889FE5",
|
||||
"1b c #5C6994",
|
||||
"1c c #918B6C",
|
||||
"1d c #8C886D",
|
||||
"1e c #8F846F",
|
||||
"1f c #8F8471",
|
||||
"1g c #878274",
|
||||
"1h c #7E7C79",
|
||||
"1i c #7B7B7E",
|
||||
"1j c #5268AC",
|
||||
"1k c #688AD7",
|
||||
"1l c #798699",
|
||||
"1m c #959AAC",
|
||||
"1n c #9FA9C8",
|
||||
"1o c #495181",
|
||||
"1p c #0B1765",
|
||||
"1q c #131455",
|
||||
"1r c #161547",
|
||||
"1s c #ACACC5",
|
||||
"1t c #FBFAFB",
|
||||
"1u c #EBE8ED",
|
||||
"1v c #F7F8FF",
|
||||
"1w c #B8BAC4",
|
||||
"1x c #ACB5CB",
|
||||
"1y c #5474C4",
|
||||
"1z c #7E7B73",
|
||||
"1A c #93896C",
|
||||
"1B c #8A836C",
|
||||
"1C c #8B846E",
|
||||
"1D c #918870",
|
||||
"1E c #928D70",
|
||||
"1F c #958D71",
|
||||
"1G c #968D73",
|
||||
"1H c #4D6AB1",
|
||||
"1I c #8399C5",
|
||||
"1J c #C4C0B8",
|
||||
"1K c #F8F7F7",
|
||||
"1L c #EDF4FF",
|
||||
"1M c #B0ABAA",
|
||||
"1N c #353448",
|
||||
"1O c #16134E",
|
||||
"1P c #161638",
|
||||
"1Q c #C5C5CC",
|
||||
"1R c #EAE5EB",
|
||||
"1S c #FAFBFF",
|
||||
"1T c #D9DBED",
|
||||
"1U c #B6B6BA",
|
||||
"1V c #7F94D5",
|
||||
"1W c #576895",
|
||||
"1X c #98896B",
|
||||
"1Y c #96886C",
|
||||
"1Z c #95886B",
|
||||
"1& c #93896D",
|
||||
"2 c #8F8672",
|
||||
"20 c #8A8673",
|
||||
"21 c #948F6F",
|
||||
"22 c #768092",
|
||||
"23 c #5B7DD7",
|
||||
"24 c #B3B5B8",
|
||||
"25 c #D1CFD3",
|
||||
"26 c #F7FFFF",
|
||||
"27 c #C9D0DF",
|
||||
"28 c #A09088",
|
||||
"29 c #5B5255",
|
||||
"2a c #3B3852",
|
||||
"2b c #94949D",
|
||||
"2c c #F8F8F9",
|
||||
"2d c #EFEEF5",
|
||||
"2e c #F5F9FF",
|
||||
"2f c #B3B4C0",
|
||||
"2g c #A0A9B2",
|
||||
"2h c #4D78EB",
|
||||
"2i c #3C63D6",
|
||||
"2j c #5D72B4",
|
||||
"2k c #6576A3",
|
||||
"2l c #707B91",
|
||||
"2m c #827F86",
|
||||
"2n c #887F7B",
|
||||
"2o c #8B8071",
|
||||
"2p c #918871",
|
||||
"2q c #5873B6",
|
||||
"2r c #91A3D4",
|
||||
"2s c #B9B7B5",
|
||||
"2t c #EAF0F5",
|
||||
"2u c #E8F2FC",
|
||||
"2v c #B1AFBA",
|
||||
"2w c #84736E",
|
||||
"2x c #93807A",
|
||||
"2y c #665E65",
|
||||
"2z c #D8D9E2",
|
||||
"2A c #EAEAEF",
|
||||
"2B c #F8FAFE",
|
||||
"2C c #D4DEF0",
|
||||
"2D c #9C9C9F",
|
||||
"2E c #6D81BE",
|
||||
"2F c #436EE8",
|
||||
"2G c #5E87ED",
|
||||
"2H c #3867DA",
|
||||
"2I c #4069DB",
|
||||
"2J c #456CDF",
|
||||
"2K c #4261D2",
|
||||
"2L c #4663C3",
|
||||
"2M c #5871BC",
|
||||
"2N c #5C73B8",
|
||||
"2O c #5D80D7",
|
||||
"2P c #B2B6BB",
|
||||
"2Q c #C3C3CE",
|
||||
"2R c #FCFFFF",
|
||||
"2S c #CFD9E9",
|
||||
"2T c #9C8F8E",
|
||||
"2U c #7C6E66",
|
||||
"2V c #927C7C",
|
||||
"2W c #83819D",
|
||||
"2X c #FCFCFF",
|
||||
"2Y c #F9F6FA",
|
||||
"2Z c #ECEBF1",
|
||||
"2& c #FBFFFF",
|
||||
"3 c #B9BCC9",
|
||||
"30 c #AAB0C3",
|
||||
"31 c #4870EB",
|
||||
"32 c #2B5DE1",
|
||||
"33 c #4F72CE",
|
||||
"34 c #3C62CB",
|
||||
"35 c #4E73D6",
|
||||
"36 c #5777DA",
|
||||
"37 c #456ED4",
|
||||
"38 c #7393E1",
|
||||
"39 c #4D77F4",
|
||||
"3a c #3060F1",
|
||||
"3b c #7C94C8",
|
||||
"3c c #A8A6A6",
|
||||
"3d c #E6E9EF",
|
||||
"3e c #EDFAFF",
|
||||
"3f c #BBBDC7",
|
||||
"3g c #8C7A74",
|
||||
"3h c #827670",
|
||||
"3i c #90847E",
|
||||
"3j c #ECECF0",
|
||||
"3k c #ECE5EC",
|
||||
"3l c #DAE0EF",
|
||||
"3m c #ACB0B3",
|
||||
"3n c #869EDC",
|
||||
"3o c #577EDE",
|
||||
"3p c #B0C0E7",
|
||||
"3q c #EFF4FF",
|
||||
"3r c #E4EAFF",
|
||||
"3s c #9EC0FC",
|
||||
"3t c #3265E4",
|
||||
"3u c #3366E5",
|
||||
"3v c #4871DC",
|
||||
"3w c #3660DB",
|
||||
"3x c #5075E7",
|
||||
"3y c #8C9097",
|
||||
"3z c #B3B4B6",
|
||||
"3A c #D8E4F1",
|
||||
"3B c #A89A92",
|
||||
"3C c #837069",
|
||||
"3D c #91817A",
|
||||
"3E c #E0DDD8",
|
||||
"3F c #F8F5F6",
|
||||
"3G c #F6F2F2",
|
||||
"3H c #B9BCC7",
|
||||
"3I c #A8ACC0",
|
||||
"3J c #BBCCEC",
|
||||
"3K c #F8F9FA",
|
||||
"3L c #DCD3CD",
|
||||
"3M c #EEECEF",
|
||||
"3N c #D9D8D9",
|
||||
"3O c #E2E4DB",
|
||||
"3P c #A4BADE",
|
||||
"3Q c #3161E4",
|
||||
"3R c #5F85F4",
|
||||
"3S c #6387ED",
|
||||
"3T c #8597D5",
|
||||
"3U c #A4A8AA",
|
||||
"3V c #DEE2E9",
|
||||
"3W c #F4FFFF",
|
||||
"3X c #BEC3CC",
|
||||
"3Y c #8D7C6F",
|
||||
"3Z c #7A6D65",
|
||||
"3& c #A2928E",
|
||||
"4 c #FDFBFB",
|
||||
"40 c #FCFCFE",
|
||||
"41 c #D1D6EB",
|
||||
"42 c #F7FAFD",
|
||||
"43 c #B2B4C6",
|
||||
"44 c #D0D4E4",
|
||||
"45 c #F9FCFF",
|
||||
"46 c #E7EBF4",
|
||||
"47 c #C3C4CE",
|
||||
"48 c #B6B3C1",
|
||||
"49 c #989BA1",
|
||||
"4a c #E7E7E4",
|
||||
"4b c #E9ECF7",
|
||||
"4c c #3B61D1",
|
||||
"4d c #92A0D0",
|
||||
"4e c #C7CACC",
|
||||
"4f c #A0A6B2",
|
||||
"4g c #B2B4BA",
|
||||
"4h c #FAFFFF",
|
||||
"4i c #E2EAF6",
|
||||
"4j c #A9A3A4",
|
||||
"4k c #7F6F64",
|
||||
"4l c #85776E",
|
||||
"4m c #CAC4C0",
|
||||
"4n c #EAEDFA",
|
||||
"4o c #5A80EA",
|
||||
"4p c #2D64E7",
|
||||
"4q c #4778E8",
|
||||
"4r c #788FC7",
|
||||
"4s c #B4B7CA",
|
||||
"4t c #CBCCD7",
|
||||
"4u c #E7EAE9",
|
||||
"4v c #C6CDD5",
|
||||
"4w c #AEB3B9",
|
||||
"4x c #8A8C8B",
|
||||
"4y c #C0C5C5",
|
||||
"4z c #B8C4E3",
|
||||
"4A c #2859CF",
|
||||
"4B c #2855CD",
|
||||
"4C c #7989A5",
|
||||
"4D c #A4A69F",
|
||||
"4E c #D6DAE0",
|
||||
"4F c #CBD1DD",
|
||||
"4G c #938781",
|
||||
"4H c #84756D",
|
||||
"4I c #9B8985",
|
||||
"4J c #F6F3F2",
|
||||
"4K c #F7F9FE",
|
||||
"4L c #5C7CE7",
|
||||
"4M c #205CF1",
|
||||
"4N c #1C5DEA",
|
||||
"4O c #0641C7",
|
||||
"4P c #072DAA",
|
||||
"4Q c #8593C5",
|
||||
"4R c #B1B1B5",
|
||||
"4S c #BCC0C2",
|
||||
"4T c #F7FBFD",
|
||||
"4U c #E3E3E1",
|
||||
"4V c #C6BCA9",
|
||||
"4W c #AAB4CC",
|
||||
"4X c #4168D4",
|
||||
"4Y c #7AA1DF",
|
||||
"4Z c #9AB2E2",
|
||||
"4& c #A4ADBD",
|
||||
"5 c #BDB8BB",
|
||||
"50 c #E8F4FE",
|
||||
"51 c #B5B2B9",
|
||||
"52 c #82736C",
|
||||
"53 c #817770",
|
||||
"54 c #BFB4B2",
|
||||
"55 c #FFFEFE",
|
||||
"56 c #9FB3ED",
|
||||
"57 c #1857E7",
|
||||
"58 c #185ADE",
|
||||
"59 c #1656DD",
|
||||
"5a c #1244C2",
|
||||
"5b c #112D9F",
|
||||
"5c c #959EC7",
|
||||
"5d c #D0D1D3",
|
||||
"5e c #A7AFB2",
|
||||
"5f c #ACAEB5",
|
||||
"5g c #B5B2B6",
|
||||
"5h c #B0AEB5",
|
||||
"5i c #948C8B",
|
||||
"5j c #8990B2",
|
||||
"5k c #7792D9",
|
||||
"5l c #ABABB5",
|
||||
"5m c #BAB5B4",
|
||||
"5n c #8B95AE",
|
||||
"5o c #A8B1D8",
|
||||
"5p c #E7EEFF",
|
||||
"5q c #D7DEE7",
|
||||
"5r c #9E918A",
|
||||
"5s c #80736A",
|
||||
"5t c #898078",
|
||||
"5u c #EBE9E8",
|
||||
"5v c #EEF1FA",
|
||||
"5w c #3262E5",
|
||||
"5x c #1457E6",
|
||||
"5y c #1653D9",
|
||||
"5z c #1852D7",
|
||||
"5A c #1039BB",
|
||||
"5B c #2E46A6",
|
||||
"5C c #BDC4CB",
|
||||
"5D c #CECDD4",
|
||||
"5E c #AEB4BF",
|
||||
"5F c #A2A6B2",
|
||||
"5G c #A4A3A7",
|
||||
"5H c #ABADB5",
|
||||
"5I c #C1C1CF",
|
||||
"5J c #D4D0DE",
|
||||
"5K c #DBD8E5",
|
||||
"5L c #B7BAC3",
|
||||
"5M c #586DB4",
|
||||
"5N c #2A5BD4",
|
||||
"5O c #2457CF",
|
||||
"5P c #375FCF",
|
||||
"5Q c #6F7AB3",
|
||||
"5R c #8C7C77",
|
||||
"5S c #928274",
|
||||
"5T c #B4A6A2",
|
||||
"5U c #FDFDFD",
|
||||
"5V c #A6B3EA",
|
||||
"5W c #1037B9",
|
||||
"5X c #1C4CD1",
|
||||
"5Y c #1E53DC",
|
||||
"5Z c #1547CB",
|
||||
"5& c #1331A4",
|
||||
"6 c #7788BA",
|
||||
"60 c #CBCBD3",
|
||||
"61 c #C6C6D4",
|
||||
"62 c #BABDCA",
|
||||
"63 c #B5B9C7",
|
||||
"64 c #BABDC7",
|
||||
"65 c #AEB4C0",
|
||||
"66 c #C8BBC1",
|
||||
"67 c #C5BDC7",
|
||||
"68 c #CDCDD0",
|
||||
"69 c #6C7AB2",
|
||||
"6a c #204ED0",
|
||||
"6b c #1E53D9",
|
||||
"6c c #164BC8",
|
||||
"6d c #0C33B1",
|
||||
"6e c #001B87",
|
||||
"6f c #3F4877",
|
||||
"6g c #8A7971",
|
||||
"6h c #E2DDDA",
|
||||
"6i c #4B5DA9",
|
||||
"6j c #02126B",
|
||||
"6k c #0F2079",
|
||||
"6l c #152C8F",
|
||||
"6m c #0B2596",
|
||||
"6n c #3A4CA9",
|
||||
"6o c #CBCED8",
|
||||
"6p c #CFD2D5",
|
||||
"6q c #CAD2D9",
|
||||
"6r c #D1D1D8",
|
||||
"6s c #DBCECD",
|
||||
"6t c #C5C2CF",
|
||||
"6u c #C3C3D2",
|
||||
"6v c #CBC5CD",
|
||||
"6w c #D6D5DF",
|
||||
"6x c #A5AFC9",
|
||||
"6y c #2B4DB9",
|
||||
"6z c #1B50D9",
|
||||
"6A c #174AC5",
|
||||
"6B c #1547BF",
|
||||
"6C c #1636AA",
|
||||
"6D c #031D7B",
|
||||
"6E c #192066",
|
||||
"6F c #9A8F99",
|
||||
"6G c #FDFCFC",
|
||||
"6H c #6778B7",
|
||||
"6I c #001B72",
|
||||
"6J c #041E7A",
|
||||
"6K c #00166D",
|
||||
"6L c #000F66",
|
||||
"6M c #1D2364",
|
||||
"6N c #908886",
|
||||
"6O c #B4A89F",
|
||||
"6P c #C1B7B3",
|
||||
"6Q c #DDD6D4",
|
||||
"6R c #EBE2DB",
|
||||
"6S c #E2DFE4",
|
||||
"6T c #E7E7F3",
|
||||
"6U c #D4D6E2",
|
||||
"6V c #E9D2C8",
|
||||
"6W c #6A7AA7",
|
||||
"6X c #1549C7",
|
||||
"6Y c #184AC8",
|
||||
"6Z c #1545C2",
|
||||
"6& c #1544BD",
|
||||
"7 c #0F309F",
|
||||
"70 c #05196E",
|
||||
"71 c #231F64",
|
||||
"72 c #C6C1C9",
|
||||
"73 c #AAB6E3",
|
||||
"74 c #001D80",
|
||||
"75 c #102874",
|
||||
"76 c #27397E",
|
||||
"77 c #162769",
|
||||
"78 c #21274C",
|
||||
"79 c #393D43",
|
||||
"7a c #6F695C",
|
||||
"7b c #897C73",
|
||||
"7c c #7A6D69",
|
||||
"7d c #96827C",
|
||||
"7e c #AA958B",
|
||||
"7f c #BFB1AC",
|
||||
"7g c #DBCFC9",
|
||||
"7h c #DFD4D1",
|
||||
"7i c #344B90",
|
||||
"7j c #0B38B0",
|
||||
"7k c #1A46BF",
|
||||
"7l c #1A4AC3",
|
||||
"7m c #123FB6",
|
||||
"7n c #08288F",
|
||||
"7o c #08115A",
|
||||
"7p c #3E3B6F",
|
||||
"7q c #F7F7F7",
|
||||
"7r c #E1E6F7",
|
||||
"7s c #04228A",
|
||||
"7t c #131C4C",
|
||||
"7u c #74696C",
|
||||
"7v c #847675",
|
||||
"7w c #897872",
|
||||
"7x c #766B61",
|
||||
"7y c #6C625B",
|
||||
"7z c #675E57",
|
||||
"7A c #46463B",
|
||||
"7B c #595645",
|
||||
"7C c #645F4B",
|
||||
"7D c #7A6C60",
|
||||
"7E c #615249",
|
||||
"7F c #2D2E34",
|
||||
"7G c #0D1C65",
|
||||
"7H c #0D155F",
|
||||
"7I c #17236A",
|
||||
"7J c #172B7C",
|
||||
"7K c #0B2582",
|
||||
"7L c #081C6E",
|
||||
"7M c #11104A",
|
||||
"7N c #65678F",
|
||||
"7O c #B4C0E3",
|
||||
"7P c #4A5B97",
|
||||
"7Q c #6976AA",
|
||||
"7R c #8283A2",
|
||||
"7S c #807B88",
|
||||
"7T c #80767D",
|
||||
"7U c #9D8A84",
|
||||
"7V c #928075",
|
||||
"7W c #8E7D73",
|
||||
"7X c #746C61",
|
||||
"7Y c #605D4F",
|
||||
"7Z c #625E51",
|
||||
"7& c #594F48",
|
||||
"8 c #332F34",
|
||||
"80 c #1B1E58",
|
||||
"81 c #110C4C",
|
||||
"82 c #120D3F",
|
||||
"83 c #15103F",
|
||||
"84 c #16123D",
|
||||
"85 c #22225B",
|
||||
"86 c #8081A9",
|
||||
"87 c #F8FCFF",
|
||||
"88 c #E6EBF9",
|
||||
"89 c #D5DBEF",
|
||||
"8a c #D5DAE8",
|
||||
"8b c #E7E5E7",
|
||||
"8c c #EAE3DF",
|
||||
"8d c #D2CAC5",
|
||||
"8e c #BBACA8",
|
||||
"8f c #AA938F",
|
||||
"8g c #948079",
|
||||
"8h c #927D76",
|
||||
"8i c #9C857A",
|
||||
"8j c #766F73",
|
||||
"8k c #524F6B",
|
||||
"8l c #332F5D",
|
||||
"8m c #171656",
|
||||
"8n c #17154A",
|
||||
"8o c #1A1744",
|
||||
"8p c #282E71",
|
||||
"8q c #D3D5E3",
|
||||
"8r c #FBFAFA",
|
||||
"8s c #FBFAF9",
|
||||
"8t c #F0EDED",
|
||||
"8u c #DAD3CF",
|
||||
"8v c #C1B7AF",
|
||||
"8w c #968F8B",
|
||||
"8x c #7E736F",
|
||||
"8y c #8A7570",
|
||||
"8z c #55506E",
|
||||
"8A c #151C6A",
|
||||
"8B c #151964",
|
||||
"8C c #30378A",
|
||||
"8D c #EDEFF6",
|
||||
"8E c #F0F3F9",
|
||||
"8F c #9FA9C6",
|
||||
"8G c #9396B4",
|
||||
"8H c #455687",
|
||||
"8I c #071F7B",
|
||||
"8J c #00106C",
|
||||
"8K c #7C81B7",
|
||||
"8L c #F9FAFC",
|
||||
"8M c #F6F7FD",
|
||||
"8N c #EFF2F9",
|
||||
"8O c #B8C1DD",
|
||||
"8P c #939FCA",
|
||||
"8Q c #F7F7FB",
|
||||
" 0 1 2 3 ",
|
||||
" 4 5 6 7 8 9 ",
|
||||
" a b c d e f g h i j j k l j ",
|
||||
" m n o p q r s t u v w x y z g A B C D E F ",
|
||||
" G H I J K L M N O P Q R S T U V W X Y Z &0 00",
|
||||
" 0102030405060708090a0b0c0d0e0f0g0h0i0j0k0l0m0n",
|
||||
" 0o0p0q0r0s0t0u0v0w0x0y0z0A0B0C0D0E0F0G0H0I0J0K",
|
||||
" 0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0&1 101112131415",
|
||||
" j161718191a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s",
|
||||
" 1t1u1v1w1x1y1z1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q",
|
||||
" 1R1S1T1U1V1W1X1Y1Z1&2 202122232425262728292a2b j",
|
||||
" 2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z ",
|
||||
" j2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X ",
|
||||
" 2Y2Z2&3 303132333435363738393a3b3c3d3e3f3g3h3i3j ",
|
||||
" j3k 3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z2&3A3B3C3D3E ",
|
||||
" 3F3G G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3&4 ",
|
||||
" 4041423d434445464748494a4b4c4d4e4f4g4h4i4j4k4l4m ",
|
||||
" 4n4o4p4q4r4s4t4u4v4w4x4y 4z4A4B4C4D4E4h4F4G4H4I4J ",
|
||||
" 4K4L4M4N4O4P4Q4R4S 4T4U4V4W4X4Y4Z4&5 3K505152535455 ",
|
||||
" j565758595a5b5c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u ",
|
||||
" 5v5w5x5y5z5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U ",
|
||||
" 5V5W5X5Y5Z5&6 606162636465666768696a6b6c6d6e6f6g6h ",
|
||||
" 6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6A6B6C6D6E6F6G ",
|
||||
" 6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6&7 707172 ",
|
||||
" 737475767778797a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q ",
|
||||
" 7r7s7t7u7v7w7x7y7z7A7B7C7D7E7F7G7H7I7J7K7L7M7N j ",
|
||||
" A7O7P7Q7R7S7T7U7V7W7X7Y7Z7&8 8081828384848586 i ",
|
||||
" A 48788898a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q ",
|
||||
" j8r8s8t8u8v8w8x8y8z8A8B8C8D ",
|
||||
" 8E8F8G8H8I8J8K8L ",
|
||||
" A8M8N8O8P8Q ",
|
||||
" "};
|
||||
|
||||
|
|
@ -1,204 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: tts.cpp
|
||||
*
|
||||
* Copyright (C) 2007 Dominik wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "talkfile.h"
|
||||
|
||||
TalkFileCreator::TalkFileCreator()
|
||||
{
|
||||
m_supportedTTS.Add(wxT("espeak"));
|
||||
m_supportedTTSOpts.Add(wxT(""));
|
||||
|
||||
m_supportedEnc.Add(wxT("lame"));
|
||||
m_supportedEncOpts.Add(wxT("--vbr-new -t --nores -S"));
|
||||
|
||||
}
|
||||
|
||||
bool TalkFileCreator::initEncoder()
|
||||
{
|
||||
if(::wxFileExists(m_EncExec))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool TalkFileCreator::initTTS()
|
||||
{
|
||||
if(::wxFileExists(m_TTSexec))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool TalkFileCreator::createTalkFiles()
|
||||
{
|
||||
if(!initTTS())
|
||||
{
|
||||
MESG_DIALOG(wxT("Init of TTS engine failed") );
|
||||
return false;
|
||||
}
|
||||
if(!initEncoder())
|
||||
{
|
||||
MESG_DIALOG(wxT("Init of encoder failed") );
|
||||
return false;
|
||||
}
|
||||
|
||||
// enumerate the dirs
|
||||
wxDir talkdir(m_dir);
|
||||
TalkTraverser traverser(this);
|
||||
if(talkdir.Traverse(traverser) == (size_t)-1)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool TalkFileCreator::voice(wxString text,wxString wavfile)
|
||||
{
|
||||
if(m_curTTS == wxT("espeak"))
|
||||
{
|
||||
wxArrayString out;
|
||||
wxArrayString err;
|
||||
wxExecute(m_TTSexec+wxT(" ")+m_TTSOpts+wxT(" -w \"")+wavfile+wxT("\" \"")+text+wxT("\""),out,err);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
MESG_DIALOG(wxT("Unsupported TTS engine") );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool TalkFileCreator::encode(wxString input,wxString output)
|
||||
{
|
||||
if(m_curEnc == wxT("lame"))
|
||||
{
|
||||
wxArrayString out;
|
||||
wxArrayString err;
|
||||
wxExecute(m_EncExec+wxT(" ")+m_EncOpts+wxT(" \"")+input+wxT("\" \"")+output+wxT("\""),out,err);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
MESG_DIALOG(wxT("Unsupported encoder") );
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wxString TalkFileCreator::getTTsOpts(wxString ttsname)
|
||||
{
|
||||
int index = m_supportedTTS.Index(ttsname);
|
||||
|
||||
return m_supportedTTSOpts[index];
|
||||
}
|
||||
|
||||
wxString TalkFileCreator::getEncOpts(wxString encname)
|
||||
{
|
||||
int index = m_supportedEnc.Index(encname);
|
||||
|
||||
return m_supportedEncOpts[index];
|
||||
}
|
||||
|
||||
wxDirTraverseResult TalkTraverser::OnFile(const wxString& file)
|
||||
{
|
||||
if(file.EndsWith(wxT(".talk")) || file.EndsWith(wxT(".talk.wav")))
|
||||
{
|
||||
return wxDIR_CONTINUE;
|
||||
}
|
||||
|
||||
wxFileName fname(file);
|
||||
wxString toSpeak;
|
||||
if(m_talkcreator->m_stripExtensions)
|
||||
{
|
||||
toSpeak = fname.GetName();
|
||||
}
|
||||
else
|
||||
{
|
||||
toSpeak = fname.GetName()+fname.GetExt();
|
||||
}
|
||||
wxString filename = file+ wxT(".talk");
|
||||
wxString wavname = filename + wxT(".wav");
|
||||
|
||||
if(!wxFileExists(filename) || m_talkcreator->m_overwriteTalk)
|
||||
{
|
||||
if(!wxFileExists(wavname) || m_talkcreator->m_overwriteWav)
|
||||
{
|
||||
if(!m_talkcreator->voice(toSpeak,wavname))
|
||||
{
|
||||
return wxDIR_STOP;
|
||||
}
|
||||
}
|
||||
if(!m_talkcreator->encode(wavname,filename))
|
||||
{
|
||||
return wxDIR_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
if(m_talkcreator->m_removeWav)
|
||||
{
|
||||
wxRemoveFile(wavname);
|
||||
}
|
||||
|
||||
return wxDIR_CONTINUE;
|
||||
}
|
||||
|
||||
wxDirTraverseResult TalkTraverser::OnDir(const wxString& dirname)
|
||||
{
|
||||
wxFileName fname(dirname,wxEmptyString);
|
||||
wxArrayString dirs=fname.GetDirs();
|
||||
wxString toSpeak = dirs[dirs.GetCount()-1];
|
||||
|
||||
wxString filename = dirname + wxT("" PATH_SEP "_dirname.talk");
|
||||
wxString wavname = filename + wxT(".wav");
|
||||
|
||||
if(!wxFileExists(filename) || m_talkcreator->m_overwriteTalk)
|
||||
{
|
||||
if(!wxFileExists(wavname) || m_talkcreator->m_overwriteWav)
|
||||
{
|
||||
if(!m_talkcreator->voice(toSpeak,wavname))
|
||||
{
|
||||
return wxDIR_STOP;
|
||||
}
|
||||
}
|
||||
if(!m_talkcreator->encode(wavname,filename))
|
||||
{
|
||||
return wxDIR_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
if(m_talkcreator->m_removeWav)
|
||||
{
|
||||
wxRemoveFile(wavname);
|
||||
}
|
||||
|
||||
if(!m_talkcreator->m_recursive)
|
||||
return wxDIR_IGNORE;
|
||||
else
|
||||
return wxDIR_CONTINUE;
|
||||
}
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: tts.h
|
||||
*
|
||||
* Copyright (C) 2007 Dominik wenger
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef _TALKFILE_H
|
||||
#define _TALKFILE_H
|
||||
|
||||
#include "rbutil.h"
|
||||
|
||||
class TalkFileCreator
|
||||
{
|
||||
friend class TalkTraverser;
|
||||
public:
|
||||
TalkFileCreator();
|
||||
~TalkFileCreator() {};
|
||||
|
||||
bool createTalkFiles();
|
||||
|
||||
void setTTSexe(wxString exe){m_TTSexec=exe;}
|
||||
void setEncexe(wxString exe){m_EncExec=exe;}
|
||||
|
||||
wxArrayString getSupportedTTS(){return m_supportedTTS;}
|
||||
void setTTsType(wxString tts) {m_curTTS = tts; }
|
||||
wxString getTTsOpts(wxString ttsname);
|
||||
void setTTsOpts(wxString opts) {m_TTSOpts=opts;}
|
||||
|
||||
wxArrayString getSupportedEnc(){return m_supportedEnc;}
|
||||
void setEncType(wxString enc) {m_curEnc =enc; }
|
||||
wxString getEncOpts(wxString encname);
|
||||
void setEncOpts(wxString opts) {m_EncOpts=opts;}
|
||||
|
||||
void setDir(wxString dir){m_dir = dir; }
|
||||
|
||||
void setOverwriteTalk(bool ov) {m_overwriteTalk = ov;}
|
||||
void setOverwriteWav(bool ov) {m_overwriteWav = ov;}
|
||||
void setRemoveWav(bool ov) {m_removeWav = ov;}
|
||||
void setRecursive(bool ov) {m_recursive = ov;}
|
||||
void setStripExtensions(bool ov) {m_stripExtensions = ov;}
|
||||
|
||||
private:
|
||||
|
||||
bool initTTS();
|
||||
bool stopTTS();
|
||||
bool initEncoder();
|
||||
|
||||
bool encode(wxString input,wxString output);
|
||||
bool voice(wxString text,wxString wavfile);
|
||||
|
||||
wxString m_dir;
|
||||
|
||||
wxString m_curTTS;
|
||||
wxString m_TTSexec;
|
||||
wxArrayString m_supportedTTS;
|
||||
wxArrayString m_supportedTTSOpts;
|
||||
wxString m_TTSOpts;
|
||||
|
||||
wxString m_curEnc;
|
||||
wxString m_EncExec;
|
||||
wxArrayString m_supportedEnc;
|
||||
wxArrayString m_supportedEncOpts;
|
||||
wxString m_EncOpts;
|
||||
|
||||
bool m_overwriteTalk;
|
||||
bool m_overwriteWav;
|
||||
bool m_removeWav;
|
||||
bool m_recursive;
|
||||
bool m_stripExtensions;
|
||||
};
|
||||
|
||||
|
||||
class TalkTraverser: public wxDirTraverser
|
||||
{
|
||||
public:
|
||||
TalkTraverser(TalkFileCreator* talkcreator) : m_talkcreator(talkcreator) { }
|
||||
|
||||
virtual wxDirTraverseResult OnFile(const wxString& filename);
|
||||
|
||||
virtual wxDirTraverseResult OnDir(const wxString& dirname);
|
||||
|
||||
private:
|
||||
TalkFileCreator* m_talkcreator;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -1,689 +0,0 @@
|
|||
/* XPM */
|
||||
static char * wizard_xpm[] = {
|
||||
"200 430 256 2",
|
||||
" c #040B0E",
|
||||
". c #0B080D",
|
||||
"+ c #090B07",
|
||||
"@ c #030D15",
|
||||
"# c #140F0D",
|
||||
"$ c #0D1214",
|
||||
"% c #071515",
|
||||
"& c #0A1319",
|
||||
"* c #181008",
|
||||
"= c #09141E",
|
||||
"- c #081424",
|
||||
"; c #101411",
|
||||
"> c #14140B",
|
||||
", c #061630",
|
||||
"' c #1C1406",
|
||||
") c #0F1B1E",
|
||||
"! c #061A3D",
|
||||
"~ c #151A1F",
|
||||
"{ c #101C26",
|
||||
"] c #161D16",
|
||||
"^ c #1B1B16",
|
||||
"/ c #211911",
|
||||
"( c #131D2F",
|
||||
"_ c #251B0C",
|
||||
": c #0F202F",
|
||||
"< c #171C31",
|
||||
"[ c #142225",
|
||||
"} c #13222B",
|
||||
"| c #10223D",
|
||||
"1 c #0A234C",
|
||||
"2 c #0F214C",
|
||||
"3 c #2B1F0B",
|
||||
"4 c #0E2447",
|
||||
"5 c #172832",
|
||||
"6 c #152838",
|
||||
"7 c #11294B",
|
||||
"8 c #18264A",
|
||||
"9 c #122755",
|
||||
"0 c #1A2B2E",
|
||||
"a c #1D283B",
|
||||
"b c #0E2B54",
|
||||
"c c #1E2D24",
|
||||
"d c #312711",
|
||||
"e c #102D4C",
|
||||
"f c #372511",
|
||||
"g c #272A2D",
|
||||
"h c #292B25",
|
||||
"i c #172E46",
|
||||
"j c #1C2F38",
|
||||
"k c #1A2F3F",
|
||||
"l c #34291C",
|
||||
"m c #3C2B0F",
|
||||
"n c #342C27",
|
||||
"o c #422B11",
|
||||
"p c #1C3645",
|
||||
"q c #0F3864",
|
||||
"r c #223448",
|
||||
"s c #18395A",
|
||||
"t c #223942",
|
||||
"u c #233A3C",
|
||||
"v c #1D3A52",
|
||||
"w c #40341E",
|
||||
"x c #4A3113",
|
||||
"y c #32373B",
|
||||
"z c #463415",
|
||||
"A c #2C3C31",
|
||||
"B c #203D4D",
|
||||
"C c #353831",
|
||||
"D c #4C3811",
|
||||
"E c #4D3A0C",
|
||||
"F c #164770",
|
||||
"G c #244558",
|
||||
"H c #0E4A81",
|
||||
"I c #1E486B",
|
||||
"J c #064E8D",
|
||||
"K c #2A484E",
|
||||
"L c #024F96",
|
||||
"M c #284855",
|
||||
"N c #2E4846",
|
||||
"O c #264862",
|
||||
"P c #334A3E",
|
||||
"Q c #584117",
|
||||
"R c #4A4531",
|
||||
"S c #2A4D5F",
|
||||
"T c #3F4841",
|
||||
"U c #574220",
|
||||
"V c #464540",
|
||||
"W c #3F484B",
|
||||
"X c #57471C",
|
||||
"Y c #554729",
|
||||
"Z c #564824",
|
||||
"` c #23577E",
|
||||
" . c #345764",
|
||||
".. c #335769",
|
||||
"+. c #315770",
|
||||
"@. c #5F4F25",
|
||||
"#. c #39595C",
|
||||
"$. c #5F4F2B",
|
||||
"%. c #625020",
|
||||
"&. c #694C24",
|
||||
"*. c #664E24",
|
||||
"=. c #644E2C",
|
||||
"-. c #4A5457",
|
||||
";. c #68501C",
|
||||
">. c #46584F",
|
||||
",. c #605133",
|
||||
"'. c #644F33",
|
||||
"). c #5C5435",
|
||||
"!. c #5E523F",
|
||||
"~. c #475D46",
|
||||
"{. c #6D5318",
|
||||
"]. c #66542A",
|
||||
"^. c #535752",
|
||||
"/. c #645530",
|
||||
"(. c #5A5743",
|
||||
"_. c #29638D",
|
||||
":. c #59584B",
|
||||
"<. c #3E6678",
|
||||
"[. c #5D5F4B",
|
||||
"}. c #406774",
|
||||
"|. c #36688B",
|
||||
"1. c #5C6052",
|
||||
"2. c #3D6782",
|
||||
"3. c #45686C",
|
||||
"4. c #306B96",
|
||||
"5. c #4D695D",
|
||||
"6. c #60605B",
|
||||
"7. c #775F23",
|
||||
"8. c #416597",
|
||||
"9. c #646053",
|
||||
"0. c #5C6359",
|
||||
"a. c #6E5F3E",
|
||||
"b. c #79601E",
|
||||
"c. c #76602F",
|
||||
"d. c #516D59",
|
||||
"e. c #5C6661",
|
||||
"f. c #556870",
|
||||
"g. c #6C6350",
|
||||
"h. c #62676C",
|
||||
"i. c #5C6B6B",
|
||||
"j. c #3A75A5",
|
||||
"k. c #3E769F",
|
||||
"l. c #457599",
|
||||
"m. c #5B7181",
|
||||
"n. c #497792",
|
||||
"o. c #53777A",
|
||||
"p. c #517492",
|
||||
"q. c #5E727A",
|
||||
"r. c #57796B",
|
||||
"s. c #547684",
|
||||
"t. c #50778A",
|
||||
"u. c #66726A",
|
||||
"v. c #896D2B",
|
||||
"w. c #5A758A",
|
||||
"x. c #736F6A",
|
||||
"y. c #8F6C33",
|
||||
"z. c #836E4C",
|
||||
"A. c #8A7034",
|
||||
"B. c #877041",
|
||||
"C. c #8A713B",
|
||||
"D. c #906E41",
|
||||
"E. c #4882AE",
|
||||
"F. c #5482A2",
|
||||
"G. c #93753E",
|
||||
"H. c #598299",
|
||||
"I. c #907935",
|
||||
"J. c #90793B",
|
||||
"K. c #618099",
|
||||
"L. c #917A43",
|
||||
"M. c #5F868D",
|
||||
"N. c #6B8282",
|
||||
"O. c #917A49",
|
||||
"P. c #648782",
|
||||
"Q. c #628593",
|
||||
"R. c #8E7C52",
|
||||
"S. c #508AB5",
|
||||
"T. c #6C848E",
|
||||
"U. c #897E66",
|
||||
"V. c #5C8AAB",
|
||||
"W. c #618AA2",
|
||||
"X. c #7C8689",
|
||||
"Y. c #88887E",
|
||||
"Z. c #6093B9",
|
||||
"`. c #6694B3",
|
||||
" + c #6994AC",
|
||||
".+ c #8B8F75",
|
||||
"++ c #6C989E",
|
||||
"@+ c #7492AC",
|
||||
"#+ c #709995",
|
||||
"$+ c #6E98A5",
|
||||
"%+ c #7E949F",
|
||||
"&+ c #7996A5",
|
||||
"*+ c #829593",
|
||||
"=+ c #699CC1",
|
||||
"-+ c #679EBC",
|
||||
";+ c #7498B9",
|
||||
">+ c #6E9CB4",
|
||||
",+ c #6E9CBB",
|
||||
"'+ c #6EA5C4",
|
||||
")+ c #73A4BD",
|
||||
"!+ c #70A4CA",
|
||||
"~+ c #76A3C3",
|
||||
"{+ c #7CA8B9",
|
||||
"]+ c #85A6B9",
|
||||
"^+ c #77ADCA",
|
||||
"/+ c #96A5A5",
|
||||
"(+ c #78ACD2",
|
||||
"_+ c #7FABCA",
|
||||
":+ c #8DAEAA",
|
||||
"<+ c #8AABC9",
|
||||
"[+ c #7CB4D9",
|
||||
"}+ c #85B2D3",
|
||||
"|+ c #7EB6D5",
|
||||
"1+ c #90B0CD",
|
||||
"2+ c #8EB6D1",
|
||||
"3+ c #8FB8C9",
|
||||
"4+ c #87BBD4",
|
||||
"5+ c #82BEE3",
|
||||
"6+ c #85BEDD",
|
||||
"7+ c #8FBCDD",
|
||||
"8+ c #8DC5E5",
|
||||
"9+ c #94C2E3",
|
||||
"0+ c #88C8E6",
|
||||
"a+ c #A2C1D1",
|
||||
"b+ c #94C6DF",
|
||||
"c+ c #8EC9E1",
|
||||
"d+ c #9DC7CC",
|
||||
"e+ c #96C8DA",
|
||||
"f+ c #8FD0ED",
|
||||
"g+ c #9ACDE8",
|
||||
"h+ c #8ED3EA",
|
||||
"i+ c #95D0E9",
|
||||
"j+ c #A0CBEA",
|
||||
"k+ c #9AD1E3",
|
||||
"l+ c #A2CEE1",
|
||||
"m+ c #95DAF1",
|
||||
"n+ c #A2D4EE",
|
||||
"o+ c #9DD8F0",
|
||||
"p+ c #9CDBEC",
|
||||
"q+ c #A4DAEC",
|
||||
"r+ c #A7DAE6",
|
||||
"s+ c #A3E3F5",
|
||||
"t+ c #AAE1F3",
|
||||
"u+ c #ADE3E9",
|
||||
"v+ c #A9E4EF",
|
||||
"w+ c #B6E3F8",
|
||||
"x+ c #AAEAFB",
|
||||
"y+ c #B3E9FC",
|
||||
"z+ c #C6E8DE",
|
||||
"A+ c #BBE9FD",
|
||||
"B+ c #BAF0FC",
|
||||
"C+ c #C2F7FD",
|
||||
"D+ c #CBFDFC",
|
||||
"E+ c #D6FFFA",
|
||||
"F+ c #E1FFFC",
|
||||
"G+ c #EEFFFE",
|
||||
"Q.Q.$+Q.Q.Q.Q.Q.Q.Q.s.s.s.}.s.s.M.M.}...+.O O O r e e 8 7 | | | ( ( | a { ) % & ~ ) ~ ) ) ) & ~ [ [ [ u N r.d.P c [ 0 j u M <.n.F.V.V.V.V.F.F.F.F.F.F.F.p.F.n.l.l.p.p.n.p.p.p.p.n.n.p.2.2.2.n.2.n.2.n.n.n.n.t.n.n.n.n.n.n.n.F.H.H.H.W.W.`. +>+ +>+-+`.-+-+=+Z.`.,+=+=+=+Z.=+=+=+;+;+!+,+,+~+~+~+~+~+~+~+~+~+_+~+_+_+~+_+_+_+_+_+_+_+_+_+_+_+_+_+_+(+_+_+_+_+_+(+_+_+(+(+_+_+_+_+_+(+(+(+(+(+(+(+(+(+(+(+(+_+(+_+",
|
||||
"3.r.o.o.o.r.o.o.o.o.r.3.#.3.#.3.3.3.f.+.m.<.2.O +.O H 8.8.F I s s e e i | < - - - = = ( = = & { ~ $ = ) c N A c ) ) { : k B ..p.V.V.V.@+K.V.V.W.Q.W.W.H.F.H.F.V.F.F.F.F.F.F.F.F.K.F.l.n.n.n.l.l.|.n.n.2.n.n.t.2.p.n.n.n.n.n.t.n.n.H.F.H.H.H.W.W.W.W.>+>+`.`.Z.`.`.-+,+=+;+Z.;+=+=+=+=+=+=+=+-+,+,+~+'+'+'+'+'+)+~+'+^+'+~+~+~+_+~+(+!+(+!+_+!+_+^+^+(+^+(+^+(+_+(+(+_+_+(+(+(+(+(+_+<+(+(+(+_+_+_+_+(+(+<+(+<+(+",
|
||||
"K N N N N P #.P P #.P #.N K K M N . .+.<.m.f.+.+.p.p.p.p.p.8.|.2.` ` I v e < | < , ( < ( ( ~ = { ~ ) = [ [ [ % % = ( ( a B -.p.V.`.Z.Z.;+@+W.Q.Q.M.W.Q.W.W.H.W.V.W.K.W.W.V.H.F.F.V.F.H.n.n.n.n.n.n.n.n.n.n.n.n.n.n.t.n.n.t.t.n.n.n.n.n.n.H.H.W.W.H.H.W.W.W.`.V.-+`. +Z.Z.=+=+=+!+=+=+-+`.=+=+=+-+-+`.,+,+>+)+>+~+;+_+!+~+~+!+!+~+~+~+~+!+~+!+!+~+'+!+'+!+'+'+'+'+~+!+'+'+~+~+~+!+!+!+!+;+(+!+!+!+~+~+!+!+!+!+!+",
|
||||
"p t p j 5 0 c 0 j c u c u N t K M B G +.+.<.+.m.+.8.S.;+K.K.p.p.p.p.p.p.8.+.I I s s e e | : ( ( { - { { : : { & = { ( a r r O p.V.V.W. +`.W.++o.o.o.o.M.o.M.M.Q.Q.W.W.W.W.W.W.V.@+H.W.F.W.H.F.F.F.F.n.F.n.H.n.n.n.n.n.n.n.n.}.n.n.n.n.n.n.n.n.n.H.n.H.H.W.W.W.H.W.W.W.W.W. +>+,+-+-+-+=+=+Z.Z.`.Z.`.=+=+,+=+;+,+,+=+,+,+!+'+,+,+!+!+=+!+~+!+;+=+;+=+!+!+~+~+!+~+=+=+=+~+,+=+!+=+!+;+!+!+!+~+'+'+!+!+!+(+!+!+!+!+",
|
||||
"+.B p i | : ( ( { } ) [ [ 0 u u t G S +.2.p.2.2.p.p.K. +W.H.K.K.p.p.p.p.p.p.p.8.+.8.I O O v v 7 a | | < | | | - , , a i r G +.p.F.Z.V. + +Q.o.#.#.#.5.3.3.3.o.o.s.Q.Q.H.Q.W.Q.V.W.Q.W.W.V.H.V.F.F.V.H.W.F.W.H.F.H.l.n.n.n.n.n.n.k.l.l.H.n.n.n.n.n.F.n.n.H.n.H.M.n.W.W.W.W.-+W.-+W.>+W.`.`.`.`.`.`.`.Z.`.`.Z.Z.`.`.,+`.`.,+,+,+,+=+=+=+=+;+;+!+!+=+,+-+=+=+;+=+,+!+=+=+=+!+=+=+!+=+!+!+!+!+!+!+'+~+!+=+!+!+!+!+!+",
|
||||
"<.S O s v e i | : } } ) [ [ [ j y O +.+.2.p.p.p.p.K.W.Q.t.K.H.p.K.K.H.n.w.p.p.p.p.p.p.p.2.2.I O I s s s q q q s 7 e s s I +.` p.V.V.`.V.-+Q.#.u u c u N K K #.#.5.3.3.o.s.Q.Q.Q.W.W.$+W.W.V.V.V.W.W.V.V.W.W.V.W.F.V.F.F.F.F.F.F.l.l.n.n.E.n.E.F.k.n.n.n.n.n.n.n.H.n.n.n.n.H.W.H.W.H.-+W.W.-+V.W.V.Z.`.Z.V.V.V.V.`.V.`.`.`.`.`.Z.`.Z.;+=+=+=+Z.;+=+=+=+=+=+=+,+=+=+;+;+;+;+=+!+Z.!+!+;+!+;+=+'+=+!+=+!+!+!+!+~+!+",
|
||||
"p.+.+.` +.I O s s k 6 } ) { { } k r +.m.m.m.w.w.K.w.H.H.H.n.H.H.n.H.K.F.H.t.H.K.F.l.F.p.p.p.p.8.p.|.8.` 8.8.8.8.F 8.8.8.8.p.8.S.;+Z.=+Z.-+M.N [ { ) [ [ 0 0 t u u N #.#.3.}.o.o.s.Q.M.Q.Q.Q.$+W.W.W.W.W.W.W.V.V.W.V.V.V.F.F.S.F.F.F.E.F.H.F.F.F.F.F.k.n.H.n.n.n.n.n.n.H.F.n.H.H.H.H.H.H.H.F.V.V.W.W.W.Z.Z.V.V.F.V.F.V.V.V.V.V.`.`.`.Z.Z.Z.;+Z.,+Z.Z.=+=+=+=+=+=+=+=+=+=+-+=+=+=+!+!+Z.!+!+=+!+=+'+!+,+~+,+;+!+!+",
|
||||
"m.2.p.p.2.p.` 8.+.O v 6 : - ( ~ a r ..}.}.3.o.3.m.t.m.w.s.q.s.t.p.w.t.w.t.n.H.n.H.W.W.W.K.p.p.p.p.p.p.j.p.E.K.p.8.2.p.p.@+8.;+S.;+!+!+'+-+H.K 5 { } ) } 5 ) { : [ c 0 u N #.#.3.o.}.o.s.s.M.Q.Q.Q.Q.W.$+ + +W. +V.V.`.`.V.V.V.V.S.V.F.W.W.V.F.F.F.F.F.F.n.n.n.H.n.S.n.n.n.H.n.n.n.n.n.H.n.H.n.F.F.F.V.H.W.W.F.F.F.V.F.V.F.V.V.V.W.V.V.V.Z.Z.`.`.>+`.;+;+;+Z.Z.`.`.=+Z.=+=+=+=+!+Z.=+!+=+=+!+-+!+=+-+!+=+!+!+=+;+",
|
||||
"2.p.2.p.p.p.p.|.|.2.+.I e i | { { a S 3. . . . .#. . .<.}.3.}.}.<.m.s.s.s.w.H.W.Q.W.Q.W.W.F.V.F.F.F.K.V.;+;+;+V.p.p.j.p.;+;+V.;+;+(+(+^+{+Q.M k : 6 : 5 5 : : : = } [ [ c t u N N #.#.5.3.3.3.s.M.M.M.Q.H.W.W.W. +V.W. +`.W.W.V.V.V.V.V.V.W.`.W.V.V.V.V.F.F.F.F.H.H.F.W.F.F.F.H.n.H.n.n.n.n.n.n.n.n.n.n.H.H.n.F.n.V.F.V.F.F.S.F.S.F.S.F.F.S.F.V.`.V.Z.Z.Z.Z.Z.`.Z.;+Z.Z.,+=+;+=+!+Z.!+=+=+=+=+=+!+!+!+=+=+!+!+!+",
|
||||
"t.m.2.p.2.p.p.p.p.p.8.+.O B k a } r S K M G O G S M S S ......+.....f.}.<.2.V.$+t.H.Q.H.F.K.V.p.V.F.V.F.;+;+;+V.;+V.;+V.V.;+;+=+!+'+)+{+)+n.O v i i i p 6 a 6 6 : : { : ) } [ 0 u u u K N N #.#.3.3.o.o.o.M.M.Q.W.@+W.W.W. +`.`.V.Z.-+W.-+-+V.V.Z.V.-+W.V.V.W.W.F.W.W.-+W.W.n.H.n.n.H.n.F.n.n.n.n.n.H.n.n.n.n.n.n.n.n.n.n.S.n.S.F.F.F.F.E.F.F.F.F.F.H.V.V.`.V.V.Z.Z.`.`.Z.Z.=+=+Z.=+Z.Z.=+;+=+;+=+=+=+!+!+!+S.=+",
|
||||
"<.t.2.t.p.p.p.t.n.p.p.w.<. .N 0 g 5 B G O I +.+.+.+.I 2.+.+.+.+.2...+.+.2.w.F.W.2.n.F.H.F.l.;+E.;+V.;+F.Z.~+)+`.V.V.;+S.Z.;+`.,+'+-+)+$+>+H._.` I I v I i i r r a 6 : 6 : 6 } [ } 5 } 0 0 u A N N K #.3.3.3.o.o.s.W.W.Q.Q.Q.W.Z.Z.Z.`.W.W.-+`.`.`.Z.Z.V.-+V.-+W.-+W.-+W.W.W.F.W.W.n.F.n.S.n.n.n.n.n.n.n.n.n.k.n.n.n.k.n.n.n.n.k.F.n.E.n.F.F.n.F.n.n.n.H.n.F.F.H.F.V.V.V. +V.Z.;+Z.Z.;+!+Z.=+Z.=+=+=+=+Z.!+=+!+;+",
|
||||
"}.}.m.2.2.p.n.H.H.Q.Q.M.5.>.0 [ ) a r O ` 2.8.2.p.8.2.p.8.p.p.p.2.p.p.p.2.n.K.E.E.E.E.V.F.E.V.;+;+S.@+`.-+>+)+>+Z.Z.Z.`.`.>+>+>+>+>+-+-+`.F.p.|.2.|.` +.I O G B s v k a i i i 6 6 6 6 [ [ [ 0 0 u u u N N K #.3.o.M.M.M.o.s.M. +;+(+'+$+M.Q. +`.=+`.`.Z.-+W.-+W.-+F.-+W.-+-+F.-+V.S.V.V.W.V.F.n.k.n.k.k.|.k.|.|.|.n.n.|.4.|.|.n.n.k.n.n.k.n.|.k.k.k.n.n.n.n.k.n.F.F.F.F.F.V.V.V.;+S.;+S.;+=+Z.;+=+Z.!+S.;+!+Z.=+",
|
||||
"3.#.#.<.n.t.t.M.s.o.o.r.P A [ ) & < s m.+.p.p.p.p.p.p.p.p.m.p.m.m.p.2.p.m.p.K.E.!+(+(+=+;+@+V.;+;+Z.`. +~+>+)+@+,+ +;+>+-+,+,+,+,+,+,+-+,+V.K.l.p.l.|.p.|.2.2.+.O O O v v v p v p i 6 p 5 [ 5 5 [ [ [ 0 0 c u K #.3.o.o.>.#.o. +^+3+++M.o.H.W.`.'+-+=+=+=+=+`.-+-+-+-+-+W.-+V.W.W.S.-+F.-+F.V.F.F.n.n.k.n.k.k.k.n.k.k.k.k.|.|.|.<.|.|.n.2.n.k.|.n.|.|.n.|.k.|.k.|.n.n.n.n.n.F.F.F.V.V.Z.Z.Z.Z.Z.=+Z.;+Z.!+Z.;+=+",
|
||||
"N K K S s.o.o.3.3.5.#.N c % % ~ ( i s +.m.2.p.w.m.p.m.s.s.w.m.2.m.m.}.m.t.s.8.Z.5+j+b+)+ +V.Z.Z.=+@+>+>+>+)+,+-+ +>+)+>+>+,+!+;+,+~+>+ +`.;+;+S.V.F.F.l.p.l.p.l.p.|.|.+.` I I O v v B p p p p k j 6 : { { } [ 0 u >.>.P A N 3.M.:+#+P.3.#.}.W. +-+'+-+=+=+=+=+=+Z.Z.-+-+-+Z.-+-+-+V.-+Z.`.-+V.V.V.V.V.W.V.F.S.F.F.S.k.n.n.n.k.|.n.2.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.|.2.k.n.n.|.n.l.F.l.E.F.F.V.V.V.;+Z.Z.;+Z.Z.;+",
|
||||
"0 } 0 M 3.3.>.P N c 0 5 : ~ & = < 7 +.8.m.m.2.p.f.t.<.s.}.}.f.}...f.3.3.3.3.n.!+j+o+e+{+>+`.`.;+=+,+,+,+;+>+~+,+,+>+~+)+)+>+'+~+>+,+,+~+Z.Z.;+Z.;+V.V.V.F.F.F.l.l.p.p.|.2.2.|.` ` O O G B B B p p k k : : 6 } } 5 u u [ ] 0 N 5.r.r.P N K .Q. +~+~+'+!+!+!+!+!+!+!+-+-+=+-+-+-+-+-+Z.Z.`.-+`.-+V.V.-+F.Z.V.V.V.W.V.V.V.F.H.E.n.k.n.k.|.n.n.n.k.|.|.|.|.2.2.<.|.|.|.2.|.|.|.|.|.|.n.2.l.n.n.F.l.F.F.V.V.V.;+`.Z.",
|
||||
"k k 6 p K N 0 } } - : i 6 : : < i s +...2.2.s.3.}.f.f.#.-. . .......#.#. . .2.`.4+e+3+{+,+;+;+`.,+,+,+;+~+;+;+=+'+~+>+~+,+~+-+-+,+~+;+,+,+,+;+@+;+Z.`.Z.;+V.V.V.K.E.p.F.l.l.l.p.l.|.|.` +.+.O O G G p r r k 6 6 k 5 [ ) } % [ u u c 0 [ p <.t. +>+)+)+~+~+)+)+'+~+'+'+!+!+!+!+-+=+=+!+'+=+=+=+=+-+Z.-+-+Z.V.-+W.-+-+-+V.F.-+F.F.F.k.n.n.k.k.n.n.k.|.|.|.|.|.2.|.|.|.|.2.|.|.|.|.|.|.|.|.|.|.|.k.n.l.F.n.F.F.V.V.",
|
||||
"W y r B t B 5 ( ( < 6 v O r i e s ` m.<.f.f. .f.#. .M .K M W . .K W K B G +.H.{+$+)+>+`.Z.,+,+,+-+!+,+=+,+,+,+,+~+-+'+>+>+)+~+,+,+;+~+,+=+=+`. +`.;+ +`.`.;+`.`.Z.Z.V.F.V.F.F.p.p.p.l.p._.|.|.+.+.O O v M B B r r a { { { { 6 6 6 6 k B ..t.W.>+>+>+<+~+'+)+'+!+^+'+'+'+^+!+^+'+'+'+'+'+!+'+-+-+=+=+-+=+Z.=+-+-+V.-+`.V.`.V.S.V.V.S.F.H.V.F.H.k.n.n.|.|.2.2.|.|.|.|.|.2.|.2.|.k.|.k.|.2.|.|.|.|.|.n.k.n.n.F.n.",
|
||||
"K K K M K B G r v r v r O +.O s O +...}... .#.W M K t M G M M M K G B O s I ` n.-+-+-+-+-+>+Z.,+,+,+-+=+,+-+,+,+-+,+,+ +~+>+,+,+,+'+-+,+!+,+,+'+,+,+>+,+,+ +-+`.=+@+;+;+;+V.S.;+S.V.E.p.E.p.p.p.p.p.2.8.+.+.+.O I I s 7 | i i e s s I I O <.n.Q.W.`.,+'+_+_+!+^+'+!+_+~+_+~+^+'+^+_+~+_+'+^+~+_+'+!+=+!+!+=+=+=+=+-+-+-+-+-+-+`.Z.Z.V.W.V.W.Z.F.F.E.k.k.k.k.|.k.|.|.|.|.|.|.|.|.k.k.n.2.|.|.|.|.|.|.|.|.|.|.k.n.",
|
||||
"M G S I I I 8.s H s O W ..m.I 8.p.m.3.#. .}. .M M B r W r B r B r s I F ` 8.j.F.V.`.`.`.-+>+=+,+,+;+;+,+,+>+>+>+-+,+-+>+~+'+,+;+,+'+-+,+,+=+,+~+~+=+=+,+,+,+,+ +=+=+Z.Z.=+,+Z.;+Z.;+Z.@+S.V.F.p.E.p.p.8.p.2.p.8.2.8.I I F I F F 8.` ` 8.2.2.l.F.V.;+=+!+~+_+~+_+_+!+(+!+^+~+_+'+^+(+!+(+!+(+!+_+~+(+!+'+^+!+~+!+!+=+=+=+`.-+Z.`.`.=+`.-+Z.W.-+V.V.W.V.H.n.F.n.k.n.k.|.|.|.k.k.|.n.F.k.|.n.|.|.n.|.|.2.|.|.|.|.|.",
|
||||
"q q F 8.8.8.8.8.8.E.t.-.M -.p.p.p.<.#. .M S K M r B G v O s s I ` ` 8.8.E.E.Z.;+=+,+>+>+>+,+;+,+,+,+,+,+;+,+-+;+>+~+>+-+-+,+)+=+,+-+>+~+!+;+=+-+,+;+;+,+,+~+,+-+-+,+,+'+,+,+,+Z.,+`.;+Z.;+;+Z.Z.K.S.p.F.p.p.p.p.p.p.p.8.p.8.|.8.p.p.p.p.4.p.F.V.Z.=+<+~+^+~+_+~+!+_+~+~+_+^+^+_+~+'+^+^+_+_+(+(+(+(+(+!+!+^+!+'+'+^+'+!+!+!+-+-+=+-+=+Z.`.Z.V.`. +S.`.V.-+F.V.F.S.n.k.k.n.n.F.n.W.W.n.|.2.2.|.|.2.n.|.|.|.2.|.|.",
|
||||
"8.8.;+8.<+;+]+]+]+*+M.>.j O |.V. +M. .G O +.S O O I O F ` 8.8.8.8.E.8.;+;+Z.;+;+;+;+;+;+,+>+,+,+`.,+,+-+~+,+,+;+>+;+<+>+-+,+>+;+;+~+>+>+>+~+~+'+'+!+,+~+,+~+~+,+-+-+>+-+,+~+>+,+~+-+,+=+Z.Z.;+;+Z.;+S.;+V.V.F.V.E.;+p.p.p.p.V.E.E.p.E.p.F.S.Z.;+!+!+(+!+^+_+^+^+!+(+_+~+!+!+^+^+_+!+^+^+(+_+!+!+(+_+_+_+(+^+^+^+'+^+~+!+'+^+!+'+;+=+!+=+=+=+Z.`.`.`.Z.W.`.V.-+F.V.W.V.V.V.S.F.F.W.-+n.n.k.n.|.|.|.|.|.2.|.<.|.|.",
|
||||
";+]+>+$+{+++++P.#+o.o.K 6 v 2.W.M.o.G O O O ` I +.8.8.p.8.E.l.;+;+;+;+;+;+`.`.-+-+-+=+,+,+-+,+,+,+-+>+>+>+,+~+,+,+>+>+,+>+,+~+-+,+,+~+,+~+)+,+,+,+,+!+=+~+-+-+'+~+~+'+~+!+-+-+!+=+~+;+>+)+,+=+=+,+Z.,+;+Z.@+;+V.;+;+;+Z.;+V.;+;+;+Z.@+V.V.;+!+!+!+(+)+_+_+!+(+!+(+<+(+!+_+_+_+'+!+^+!+!+)+_+^+^+^+[+(+(+_+^+(+(+(+!+(+(+!+!+(+!+(+!+!+!+,+=+-+=+=+Z.Z.-+V.-+`.W.-+`.`.S.V.W.S.F.V.W.W.k.n.n.n.k.|.|._.|.|.2.|.|.",
|
||||
"Q.$+%+#+P.M.M.o.3.3. .G i s ` H.M.}.O 8.8.8.p.8.F.E.E.;+;+;+;+V.;+@+`.`.-+>+>+>+,+,+=+,+,+Z. +,+>+,+,+-+>+>+,+,+-+,+-+,+,+,+,+-+,+,+,+>+,+,+,+~+=+,+,+=+,+~+-+)+-+,+,+~+)+~+-+~+;+!+!+'+'+-+-+~+,+=+=+,+=+Z.=+Z.!+!+;+Z.V.V.;+!+~+=+Z.;+Z.=+(+_+^+(+_+(+^+'+_+(+(+(+<+!+(+!+(+^+_+_+^+_+(+~+^+'+)+^+^+^+_+^+^+_+_+^+'+^+_+(+(+!+(+!+!+(+~+!+!+!+!+!+=+=+=+Z.=+`.Z.Z.-+`.-+V.`.Z.`.W.V.V.V.F.n.n.k.n.k.|.|.|.2._.",
|
||||
"s.s.}.}.<. .2.+.2.` |.+.` ` 2.n.p.p.2.p.p.p.;+V.;+K.;+V.V.;+;+;+`.`.`.>+`.`.`.-+,+ +>+>+,+,+,+,+,+,+-+,+>+>+,+,+;+,+,+,+,+,+~+>+~+;+,+~+~+=+!+,+~+'+~+~+;+-+~+-+'+~+~+-+~+'+~+'+!+~+~+,+~+~+)+-+~+~+'+,+-+~+!+;+!+!+!+;+=+,+(+<+^+~+,+Z.,+'+~+^+!+<+_+^+_+_+!+_+(+(+(+<+~+^+_+_+~+^+~+(+'+^+~+^+_+_+!+!+^+~+(+(+^+_+_+(+(+<+(+(+(+(+_+^+(+_+(+!+!+!+!+!+!+!+=+'+=+=+`.`.`.-+`.W.-+`.`.S.S.-+-+V.S.F.k.k.k.|.k.|.",
|
||||
"2.2.n.2.2.2.2.|.p.p.p.p.p.p.p.n.K.p.p.E.;+;+V.;+V.;+;+;+;+V.`.`.;+`.`. +-+ + +`.,+`.`.,+,+=+=+,+,+ +,+-+-+>+>+>+,+,+>+,+,+,+,+,+-+~+-+>+,+-+'+>+)+-+'+-+~+>+~+,+'+~+~+-+~+~+,+,+~+~+'+'+'+~+)+'+)+)+~+~+,+~+!+!+<+!+!+,+!+-+^+_+^+~+~+!+~+'+~+_+!+(+!+(+_+^+!+_+_+(+!+(+!+~+_+^+^+^+)+_+!+_+!+!+~+_+~+!+^+_+!+(+(+[+(+(+!+<+(+(+^+(+(+^+!+^+(+[+(+(+(+!+(+^+!+!+!+!+!+=+=+=+=+-+Z.Z.-+`.Z.V.V.W.S.W.S.S.E.E.p.E.",
|
||||
"n.K.p.p.p.H.p.p.p.F.p.p.p.F.F.K.F.V.V.@+Z.V.Z.`. +`.V.`.;+ + +;+ + +`.>+ +-+;+ +`. +,+`.,+,+;+;+>+,+,+>+>+~+)+)+>+)+,+>+,+,+~+-+~+-+,+'+'+,+-+'+>+)+>+~+;+~+,+~+-+'+~+)+,+-+~+~+'+'+~+'+~+'+~+'+~+!+'+~+!+!+<+!+!+!+~+!+;+~+^+(+<+^+'+~+~+^+!+!+_+!+<+_+!+_+_+(+_+_+(+!+<+(+!+!+(+^+^+^+^+(+<+^+(+~+^+_+!+_+^+(+_+_+_+(+(+(+_+^+^+^+_+(+^+^+^+_+_+_+(+^+!+(+(+(+!+^+!+(+'+!+!+=+-+=+=+-+-+-+Z.=+`.Z.Z.V.V.;+S.V.",
|
||||
"n.F.K.F.W.H.F.V.H.K.H.H.W.W.V.W.W.@+V.@+`.@+`.`. + + +;+;+Z.`.;+`. +`.>+ +`.,+,+,+-+>+-+,+=+,+,+,+,+,+;+-+,+>+-+ +~+=+,+,+,+,+-+,+,+,+>+~+,+,+!+-+~+>+'+~+,+~+~+-+'+'+'+~+'+~+,+~+'+~+'+~+~+~+'+~+'+'+~+~+!+~+<+~+(+~+!+<+!+~+^+!+!+'+^+!+'+~+(+(+!+(+^+'+^+_+!+_+(+!+(+~+^+_+(+(+(+(+_+^+!+(+!+(+~+_+_+(+_+_+(+(+(+}+_+(+(+(+(+^+[+_+_+(+_+(+(+(+^+^+^+(+(+(+(+(+^+(+!+^+!+(+!+(+'+=+!+=+!+=+=+=+=+=+=+Z.;+S.;+",
|
||||
"H.H.n.H.H.H.H.H.n.H.H.H.H.F.H.@+V.V.;+`. +`. +`.`.`.;+`.;+,+ +>+ +>+>+`.,+-+`.`.`. + +,+;+>+,+,+>+,+-+-+,+,+,+>+,+,+,+-+-+;+>+>+,+~+>+'+>+'+'+-+,+'+~+,+,+!+,+~+~+-+'+~+~+~+'+~+)+)+'+~+~+~+~+~+'+!+'+^+'+~+!+!+_+~+!+!+!+~+^+~+!+^+~+!+!+_+!+~+~+^+'+_+^+^+!+^+(+_+<+^+^+^+!+<+<+_+_+_+(+(+(+(+^+(+(+(+^+}+(+^+_+}+^+(+_+^+_+}+(+_+(+(+}+(+(+}+(+(+(+(+(+(+[+^+^+(+(+[+(+(+(+(+(+!+(+_+(+!+(+!+(+!+!+!+(+;+!+=+",
|
||||
"t.H.H.n.H.t.H.K.n.H.F.H.K.F.F.V.V.V.V.@+`.;+`. +`.Z.;+Z.;+`.`. +>+ + +@+@+ +,+-+=+,+ +>+;+,+,+,+>+,+,+,+-+,+;+;+,+,+,+,+'+!+~+;+,+,+,+-+>+-+)+~+,+'+'+'+>+~+'+)+)+~+)+'+-+~+'+~+~+)+'+)+'+!+~+~+~+~+~+'+~+)+~+!+~+_+~+'+<+~+^+)+_+_+~+_+!+_+!+_+_+_+!+!+^+^+_+_+!+(+_+)+(+(+(+!+(+(+(+_+(+(+(+(+_+^+^+(+(+}+(+^+^+^+^+^+_+[+^+^+(+^+^+^+_+<+(+(+}+(+(+[+^+^+(+[+^+[+(+(+[+(+(+(+(+}+(+(+[+(+(+(+(+(+(+(+(+(+(+(+",
|
||||
"H.t.H.t.F.H.K.p.K.p.K.F.F.W.W.V.V.@+;+V.@+Z. +`.`. +Z.;+`.,+,+,+ +>+;+,+=+,+,+;+ +,+>+,+,+,+,+,+'+>+,+,+>+~+=+,+;+>+,+,+,+,+,+~+,+=+'+)+'+~+;+,+~+>+,+)+'+'+>+~+~+,+!+~+~+'+'+'+'+~+~+'+'+)+'+'+'+'+'+~+!+<+~+'+^+~+^+~+!+~+!+^+'+!+_+!+_+^+_+(+!+!+(+_+!+'+^+_+<+_+_+^+'+(+(+(+_+_+_+^+_+(+<+}+^+^+(+(+(+(+}+_+^+_+^+^+_+)+^+_+^+_+(+(+(+(+(+}+(+}+(+(+[+(+}+_+|+^+|+[+(+[+(+[+[+(+[+(+[+[+[+[+[+[+(+(+(+(+(+(+",
|
||||
"p.H.H.t.K.n.F.p.F.p.K.K.H.K.K.;+V.V.;+V. +;+ + +`. +`.`.`.`. +>+`. +,+ +Z.`.,+;+,+,+>+,+=+,+>+>+-+>+>+,+,+>+,+>+;+>+>+,+,+,+-+,+~+,+'+-+,+!+~+~+~+'+-+'+)+~+~+~+'+-+'+~+'+)+>+)+~+~+,+~+~+^+)+'+'+'+^+~+!+~+~+~+'+'+^+_+'+_+~+^+(+!+_+!+!+!+^+_+(+~+!+_+_+~+^+_+(+(+(+^+_+(+(+(+(+(+(+_+_+[+(+(+[+(+^+^+_+(+(+_+!+^+^+^+^+~+'+_+^+^+_+^+}+_+(+^+(+|+}+}+|+[+[+(+[+(+[+|+}+[+}+[+}+[+|+(+|+|+[+[+(+[+[+7+[+[+}+[+",
|
||||
"H.p.n.H.H.K.K.H.K.K.F.F.V.V.F.V.V.@+V.@+Z.`. + + +`.`.,+ + +,+`.,+;+ +>+>+>+,+Z.`.,+,+`.,+>+>+>+ +-+>+>+,+>+>+,+-+,+~+;+,+,+~+-+,+!+,+>+~+,+=+'+-+>+)+>+~+~+~+~+~+~+~+~+>+)+'+~+~+-+!+'+'+'+'+'+'+'+~+'+~+~+_+~+_+_+~+'+_+'+^+!+^+^+_+_+(+^+_+^+~+(+_+^+_+_+_+^+^+^+_+(+(+(+(+(+^+(+_+^+(+(+(+_+(+^+[+^+^+^+[+_+^+'+~+!+~+^+^+)+'+_+^+^+)+^+<+(+^+(+(+(+^+^+(+}+[+}+|+|+|+(+}+(+(+|+(+[+}+[+[+7+[+[+[+(+}+[+[+}+",
|
||||
"H.H.K.n.H.H.K.n.H.H.F.W.H.V.F.V.V.@+V.@+`.`. +>+ + + + +,+;+`.`.Z.;+`.>+>+`.>+,+,+,+,+`.,+,+>+-+-+,+,+>+,+,+>+>+,+,+-+~+,+,+~+,+,+=+!+-+,+~+=+~+~+~+'+'+'+~+-+,+,+'+~+!+'+'+'+~+!+~+~+~+'+~+~+~+'+^+!+_+!+'+^+'+~+_+_+'+^+!+~+_+~+^+~+<+'+'+(+^+'+!+!+(+(+(+(+_+_+!+<+(+~+_+^+(+^+^+(+(+_+_+^+_+(+_+(+[+(+(+!+_+_+^+^+^+!+~+~+_+)+'+^+)+^+^+^+(+_+}+}+[+[+[+(+(+[+}+|+[+|+[+}+[+[+|+}+(+(+[+}+[+(+[+[+(+7+}+|+|+",
|
||||
"n.H.F.H.H.H.F.H.H.F.H.W.W.W.W.W.`.V.`.`. + +`. +>+ +`.,+`.-+ +,+ +,+ +,+>+>+,+,+`. +-+>+,+,+ + +>+=+,+-+,+=+,+>+,+,+;+,+;+~+,+,+-+>+>+-+-+,+~+,+,+~+,+>+'+-+~+~+'+,+'+)+-+'+'+'+~+~+'+-+~+!+~+'+~+!+_+!+^+_+~+_+)+<+'+^+~+^+^+~+(+!+'+^+^+^+'+(+(+_+_+~+^+!+!+(+(+_+!+(+(+(+(+^+(+(+(+(+(+[+}+}+(+(+^+_+(+^+[+(+(+(+(+(+^+(+(+~+~+^+'+^+'+^+_+^+^+^+^+}+[+[+[+}+|+[+[+|+(+[+[+[+|+(+[+[+7+(+[+}+[+[+[+[+[+|+^+}+",
|
||||
"H.t.F.n.H.Q.F.F.Q.F.F.V.K.W.W.W.W. +V.`.`. +`. + + + +>+`.,+>+,+`.,+`.`.-+`.`.,+`. +`.,+ +,+;+,+>+;+,+-+ +=+=+,+,+-+>+'+,+)+>+>+)+~+,+~+'+,+~+'+-+!+!+>+~+'+-+'+'+)+~+~+)+)+'+'+~+~+~+'+~+'+~+^+)+'+'+~+~+'+'+_+'+~+'+'+~+~+(+~+_+_+~+_+)+<+)+_+(+(+(+~+_+<+!+!+(+(+_+_+(+(+!+_+(+(+<+(+(+(+^+}+(+(+(+_+(+(+^+^+(+(+(+(+[+!+(+(+'+^+)+^+!+(+_+^+^+^+^+^+|+|+|+[+^+}+[+[+}+[+|+(+|+[+(+[+}+[+[+[+[+[+7+^+|+[+|+|+",
|
||||
"p.H.H.H.F.H.F.F.F.F.K.H.V.V.W.W. +V. +`. +`. +`.;+;+`.`. + +`. +>+`.,+-+ +@+;+;+,+>+>+>+,+;+,+;+,+,+,+,+-+>+>+,+-+~+,+,+,+,+,+)+,+,+~+>+>+)+-+-+,+,+~+~+)+>+~+>+'+~+'+)+-+)+)+'+'+~+~+>+'+~+'+)+'+'+^+)+'+_+_+!+^+'+~+^+^+^+'+(+'+!+^+_+_+^+_+_+_+^+'+^+(+!+(+_+_+(+(+(+<+(+(+(+_+<+(+(+(+(+(+(+}+}+}+(+(+^+(+(+(+}+[+[+^+[+(+^+[+^+(+^+^+(+(+(+^+[+^+|+^+[+|+|+[+|+[+|+5+(+[+[+[+[+}+|+[+}+[+7+[+[+[+|+|+[+[+[+",
|
||||
"F.H.H.W.F.H.K.W.W.F.V.V.K.W.W.V.@+V. +`. + + +`.V.`. +,+`. +,+>+>+ +;+,+-+,+`.;+;+,+,+-+,+,+,+;+,+@+;+;+~+,+,+,+>+,+,+,+,+~+;+~+-+>+'+>+>+>+)+~+~+,+~+~+~+'+~+~+'+)+'+)+'+~+,+~+-+~+!+~+)+'+!+^+)+~+~+<+'+'+)+<+'+!+!+_+~+_+'+^+^+'+~+'+'+^+)+^+!+^+_+)+^+<+(+(+^+'+(+(+_+}+(+(+(+(+(+(+^+(+^+(+[+(+(+(+}+(+[+}+[+_+|+(+^+[+(+^+[+[+[+(+^+[+^+(+^+[+_+[+^+^+^+|+|+|+[+[+5+7+5+[+[+[+[+[+[+(+[+}+7+[+[+[+|+5+|+[+",
|
||||
"K.K.H.H.H.K.H.H.F.F.V.W.V.H.V.W.V.V.`.V.;+W.`.@+@+@+,+`.;+,+ +>+ +;+-+ + +`.;+-+>+,+,+>+,+,+,+-+,+,+~+,+-+-+-+,+,+,+~+;+>+>+~+@+>+,+>+)+)+>+~+,+,+~+,+,+~+>+)+~+>+)+>+~+~+'+~+-+~+~+~+)+^+~+~+)+'+)+)+'+'+'+^+'+'+^+^+!+^+^+<+~+^+~+^+!+_+'+^+^+)+_+'+<+^+'+_+'+_+(+_+!+_+_+_+_+(+(+_+(+(+(+[+^+^+^+(+(+(+(+_+[+_+[+(+[+[+^+(+(+(+(+[+[+[+^+[+[+[+[+[+|+|+|+|+6+|+6+6+6+5+5+[+[+7+|+}+[+7+[+7+[+[+|+|+6+[+|+|+6+",
|
||||
"K.l.H.H.F.F.F.K.K.W.K.W.W.W.V.@+V.W. + +`.W. + +`.`. +`.`.-+ +`.`.@+`.>+,+,+ +,+ +>+@+ +>+-+,+,+-+>+-+>+;+,+,+,+,+,+-+~+;+'+'+~+~+>+>+-+~+>+>+-+,+~+~+~+~+~+)+~+~+~+~+'+~+'+~+'+'+~+'+'+'+_+'+)+)+^+'+~+~+~+)+^+'+'+)+(+~+^+^+~+^+!+^+!+!+'+)+^+!+(+'+'+^+'+_+^+^+!+_+(+^+^+!+_+_+(+_+^+^+(+[+(+(+(+[+[+(+[+[+(+[+[+(+[+[+|+[+[+[+[+[+[+[+[+6+|+|+5+[+|+|+^+|+6+|+6+5+6+6+6+7+5+7+7+[+5+7+[+[+5+6+6+5+7+5+6+6+6+",
|
||||
"p.K.F.K.H.F.K.F.F.H.W.W.W.F.W.V. +`.W.`. +&+`.`. + +>+ +;+ +>+>+,+`. +,+ +`.,+ +,+,+,+,+,+>+ +,+`.,+>+,+>+,+,+,+,+,+~+,+-+>+>+>+)+,+'+>+-+~+~+>+~+-+>+>+)+'+,+~+)+~+~+'+'+~+'+'+~+'+~+'+~+~+'+)+'+'+'+'+'+'+'+)+)+^+^+)+^+~+'+_+!+'+)+^+^+^+^+'+^+^+^+)+(+_+^+!+!+(+(+!+(+^+^+(+(+^+(+(+(+^+^+|+[+[+(+(+[+[+|+[+[+|+6+[+|+[+|+[+|+|+|+[+7+5+|+6+5+5+6+5+6+6+6+6+5+5+6+6+6+6+5+[+5+5+5+[+7+5+7+|+7+|+4+6+6+5+6+6+",
|
||||
"F.F.F.K.H.F.K.H.F.H.H.F.W.W.W.W.V.`.W. + + + +`.;+`. + +`.`. + + + + +,+>+ +,+`.`.>+`.,+`.-+>+>+-+,+>+,+>+,+-+>+ +>+;+>+,+-+-+,+'+,+~+,+,+>+~+,+~+'+~+>+>+'+'+,+)+'+~+-+'+~+~+'+~+~+~+'+'+~+'+)+'+~+'+^+'+^+'+^+^+'+_+~+^+)+^+_+_+^+)+'+'+'+)+~+~+^+^+)+(+!+_+_+^+(+_+!+(+(+^+^+(+[+(+[+(+|+|+[+|+|+[+[+[+[+5+|+[+|+6+[+6+5+[+5+[+[+6+5+5+6+6+6+6+6+6+5+5+6+6+0+6+8+6+6+6+8+5+5+5+7+9+5+5+5+5+5+5+5+6+7+6+6+7+5+",
|
||||
"K.K.K.H.H.H.H.F.W.H.W.W.W.V.Q.`.W.V. +W.`.V.`. +`.`.;+`. +>+>+>+,+;+;+ +>+-+`.@+>+`.>+>+>+ +`.,+,+,+,+>+,+-+,+-+)+;+=+,+~+,+~+~+,+=+=+'+)+~+>+~+>+>+-+~+~+)+-+!+,+'+)+~+-+'+'+'+)+'+)+,+~+'+'+'+'+'+~+~+'+)+)+'+'+~+!+^+'+'+'+'+'+~+^+_+_+^+^+^+^+~+^+(+^+^+(+(+(+^+(+^+^+[+(+[+(+[+[+[+|+[+|+6+|+5+6+|+6+5+[+7+5+6+5+5+5+5+5+7+9+7+5+5+5+6+6+6+5+5+6+6+6+0+6+6+5+5+5+5+5+5+7+8+5+8+5+5+5+5+5+5+8+8+6+6+7+6+5+6+",
|
||||
"H.H.H.H.K.F.K.H.H.H.Q.F.W.V.W.V.@+W. +W. + +`.W. + + + +>+ + +>+`.`.;+`. +>+-+`.>+ +`.>+>+,+;+;+;+Z.,+>+>+>+ +,+>+>+~+,+,+-+-+,+,+)+>+,+-+!+,+'+'+,+,+~+'+)+)+'+-+'+'+)+,+'+>+~+,+;+~+,+~+'+'+'+'+'+'+'+'+'+-+)+'+)+,+'+^+'+'+!+(+!+'+(+!+!+!+!+(+!+'+[+(+[+[+[+[+[+[+(+[+[+[+[+|+|+|+5+5+|+5+0+|+6+6+5+6+6+5+8+6+5+6+5+5+0+6+5+5+9+5+8+8+0+0+0+8+5+0+0+6+0+0+b+c+0+0+8+8+5+5+8+5+8+8+8+8+8+8+7+5+6+6+6+7+6+6+5+",
|
||||
"F.H.F.F.F.V.K.F.H.F.F.Q.V.W.W.W.W. +W.;+V.;+`. +>+`.`.`. +>+>+$+>+ +`.-+`. + + +>+,+>+ +,+`.`.,+=+,+>+-+~+,+,+>+-+,+,+,+~+>+>+'+,+~+~+~+,+,+)+>+,+)+~+-+-+~+,+,+~+'+)+~+'+~+!+-+'+!+'+~+-+^+)+~+~+'+'+-+)+'+'+'+'+!+!+^+'+~+_+^+!+'+(+!+_+^+^+[+^+[+[+[+[+[+|+[+|+5+[+[+|+6+6+6+5+5+5+5+6+5+6+6+8+5+0+8+8+5+0+0+0+0+5+0+8+8+0+0+8+8+8+8+0+5+6+8+5+8+5+9+0+0+5+5+5+8+b+0+8+0+b+0+0+8+0+8+8+9+5+8+8+9+7+9+5+5+|+6+",
|
||||
"F.H.K.K.p.;+p.F.H.H.V.H.V.H.W.V.V. +W.@+`.@+`. +$+ + +Z.`.`.>+`.-+`. + +,+,+,+,+,+>+,+>+>+,+ +>+ +,+ + +~+,+,+>+,+,+,+>+~+'+,+~+,+-+-+~+,+,+,+)+,+>+)+)+>+~+>+>+,+,+)+>+>+'+~+=+-+,+'+)+>+'+)+'+'+)+)+^+)+~+!+'+'+^+!+^+^+!+(+^+(+(+[+(+^+(+^+[+|+[+^+|+|+5+6+5+6+7+5+5+5+0+6+6+5+0+6+6+5+0+5+0+8+5+0+0+0+8+0+8+5+8+g+0+f+8+8+8+5+8+0+g+0+0+0+0+0+9+5+5+5+8+8+9+9+f+8+8+8+8+8+8+0+8+0+8+5+8+5+5+5+5+5+5+9+5+6+6+",
|
||||
"H.K.F.K.F.K.H.H.H.V.F.W.Q.W.F.@+W.W. + +V.V. +`. + +`.@+;+`.`. +`.>+;+,+`.;+`.>+ +,+>+>+,+>+>+-+-+>+,+,+,+,+,+>+,+,+-+'+>+,+-+,+=+,+>+>+>+,+>+>+-+,+>+~+=+>+-+)+)+-+-+'+'+)+-+~+~+!+=+'+'+'+^+^+~+^+^+~+(+^+_+!+(+!+[+(+^+[+(+[+(+[+(+[+[+|+[+5+5+|+6+|+6+6+6+6+5+0+5+8+8+5+0+5+0+0+0+0+0+0+0+0+8+f+f+f+f+f+f+f+f+f+f+f+f+f+8+f+f+f+f+0+g+8+8+8+8+8+0+8+8+0+8+8+5+9+0+8+8+8+8+8+5+8+5+8+8+8+8+8+0+0+8+8+5+8+6+6+",
|
||||
"F.F.K.K.F.W.F.F.H.F.K.V.W.W.W.V.`.W.`.@+`.V. +`.`. +`.`.,+-+`. +,+>+`.>+`. +,+,+ +>+>+ +>+,+>+ +>+>+,+-+-+,+,+,+-+-+-+-+>+)+>+)+,+,+>+>+)+-+-+{+-+,+,+>+,+)+,+,+~+>+-+'+'+'+~+^+~+~+!+!+^+'+)+(+^+^+!+(+(+(+(+^+[+[+(+[+[+[+[+|+|+[+|+5+|+6+6+6+5+5+5+5+0+8+0+0+8+0+8+0+f+0+0+8+0+0+f+f+f+f+f+f+g+8+f+c+f+i+0+g+g+f+f+i+f+f+f+f+0+8+f+f+f+f+f+f+0+8+8+8+8+f+f+5+f+8+8+0+f+8+8+g+0+8+8+5+f+5+j+5+8+5+5+8+7+8+5+6+",
|
||||
"p.F.H.F.H.K.K.K.K.F.V.W.V.K.V.W.W.V.@+`.W.`.V.`. + + +;+@+ + +;+;+`. +`.>+>+`.,+,+>+>+,+,+>+>+,+,+,+>+ +>+>+-+`.,+,+,+,+'+>+-+-+-+-+-+,+,+>+>+-+>+-+,+=+'+>+~+~+!+!+~+'+'+^+'+(+!+^+~+^+^+^+(+^+(+^+[+[+[+[+|+[+[+|+|+|+6+[+5+5+5+8+5+6+0+6+6+0+0+0+0+0+0+0+0+8+f+f+f+f+f+f+f+f+f+0+h+f+h+h+f+f+h+o+f+f+h+f+i+f+f+o+i+f+h+f+f+m+f+f+f+f+f+f+c+f+f+f+f+f+0+f+f+f+g+8+0+g+8+8+f+5+8+9+f+8+f+5+8+8+8+0+8+5+5+7+8+0+",
|
||||
"l.F.H.K.F.H.F.H.K.V.H.H.V.W.W. +W.V.W.`. + +@+@+Z.`. +`. + +`. + +>+&+>+ + + +;+,+-+>+`.,+ + +,+`.,+>+>+-+>+>+ +>+>+=+>+>+>+>+>+)+,+'+-+!+~+>+-+'+)+~+~+~+'+'+'+_+~+'+!+'+^+^+^+(+(+(+(+[+^+[+(+[+[+[+7+5+7+7+[+5+5+6+6+6+6+6+6+6+0+0+0+0+0+0+0+0+f+f+0+0+f+f+0+f+f+f+c+h+f+h+f+h+f+h+h+f+m+f+f+f+m+h+m+h+m+m+h+m+o+m+m+m+m+f+f+o+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+f+g+f+0+f+0+f+f+5+8+5+8+9+8+f+8+8+8+8+8+5+6+6+6+",
|
||||
"p.n.K.F.H.F.H.W.F.K.V.F.V.V.V.V.`.W. +W.W.`.Z.`.@+W.W. +;+;+@+`.,+`.`. +`.`.;+`. + +-+-+-+,+,+ + +>+>+,+ +>+>+>+,+,+ +,+~+-+~+=+,+'+-+,+,+'+'+~+>+'+~+!+!+~+_+_+(+^+(+(+[+(+(+[+|+[+[+|+|+5+7+5+5+6+6+5+5+0+5+6+5+5+5+6+0+0+0+8+0+8+0+0+f+0+f+f+f+0+f+f+f+i+f+f+f+f+h+f+f+h+m+h+h+m+h+m+m+o+h+o+m+f+o+m+o+m+f+o+i+m+m+o+m+f+o+m+m+o+o+o+o+m+m+m+o+f+o+f+f+f+h+f+f+f+g+f+f+f+f+n+8+f+f+5+f+0+8+8+8+8+5+8+8+8+7+6+",
|
||||
"8.k.n.F.H.H.H.H.F.H.F.W.W.V.V.K.Z.V. +`.W.W.;+`.;+;+W. +`.`.;+`.`.`. + +;+`.>+ +>+ +>+@+;+;+;+,+,+,+>+>+)+>+,+>+)+!+,+,+'+-+~+=+,+~+'+~+=+!+'+!+~+'+(+(+!+(+(+^+^+|+^+(+[+[+[+|+|+[+|+|+5+5+5+5+5+8+5+8+5+0+0+0+0+0+0+0+f+f+f+f+0+c+f+h+h+i+i+f+h+f+i+h+h+h+m+h+h+m+m+m+m+m+m+o+h+m+o+p+m+o+f+o+m+m+o+m+q+s+m+m+m+q+m+o+m+o+o+f+m+m+m+m+o+o+f+m+o+o+o+o+o+f+m+h+f+f+g+0+g+f+f+8+f+8+8+8+8+f+0+8+0+8+8+6+6+5+7+5+",
|
||||
"_.4.4.n.F.H.F.W.K.V.K.F.V.V.F.;+K.@+V.W.`.@+@+V. +W.;+ + + + +;+@+ +`. + +,+ +,+ +>+>+>+`.;+-+Z.,+=+=+-+>+)+,+~+-+,+~+-+)+~+~+~+!+~+~+!+!+'+_+^+(+(+_+(+(+(+[+(+7+(+5+5+5+6+6+0+6+6+6+0+0+0+5+8+f+8+0+8+f+f+f+0+0+f+f+f+f+f+f+f+f+f+i+f+f+f+f+h+m+o+f+o+o+m+o+o+m+p+p+s+p+o+s+o+o+q+m+m+o+o+s+m+m+p+m+s+s+m+t+t+m+s+o+m+o+m+s+m+m+q+m+m+m+m+o+o+m+m+o+f+o+o+f+f+m+f+f+f+0+f+f+f+f+f+f+8+8+8+8+8+8+0+6+8+8+6+5+6+",
|
||||
"` _.4.l.l.F.F.V.V.K.V.K.@+V.V.V.V.@+@+`.V.V.;+;+;+`.W. +`.`. +>+,+ +,+-+`.,+>+ + +>+,+;+=+;+,+=+,+,+,+!+,+~+,+~+~+'+~+~+'+!+!+_+(+(+(+_+(+(+(+(+[+[+|+[+5+[+5+[+6+7+[+7+5+0+0+4+0+0+6+0+0+f+f+8+f+f+f+f+f+f+f+f+m+f+f+h+h+m+o+o+m+o+o+o+m+m+o+o+m+p+o+m+m+m+o+o+s+s+p+m+m+o+s+t+m+m+o+m+m+o+x+s+m+s+m+m+t+s+m+t+m+t+t+s+t+o+s+q+m+q+s+m+p+m+o+f+o+m+o+m+o+o+o+f+f+g+n+g+8+f+g+f+8+f+8+f+0+8+0+8+8+0+6+6+6+5+6+6+",
|
||||
"_._._.|.k.p.F.F.F.;+F.;+V.W.V.;+;+`.V.`.>+ + +`.`. +,+ +@+ +`.-+>+ +;+;+>+ + +,+,+,+>+,+,+=+-+,+~+~+!+,+!+'+!+!+'+_+_+!+^+^+(+(+^+^+_+(+|+[+7+5+[+7+|+6+5+6+5+5+9+5+8+0+5+8+0+0+c+0+f+f+0+h+f+f+f+f+f+h+h+f+f+m+h+m+m+m+m+m+m+m+o+m+m+m+m+q+s+o+s+s+m+s+q+s+s+m+s+s+s+t+t+t+t+s+y+y+m+y+y+m+y+y+s+s+y+x+m+t+t+s+s+s+s+t+s+s+o+s+m+m+p+s+m+s+m+m+m+o+o+f+o+f+f+i+f+f+f+f+f+g+0+g+f+8+g+f+8+0+8+8+6+6+8+8+7+6+7+6+",
|
||||
"_._._._.4.j.E.V.V.V.@+K.Z.@+V. + +,+;+V.`. + +$+Z.;+`. +;+`. + +>+>+`.;+!+-+=+=+;+~+)+;+)+~+'+'+'+_+^+~+!+~+~+(+(+(+^+(+(+_+(+[+[+[+|+|+|+[+6+7+5+6+6+6+5+0+0+0+0+8+8+f+0+c+i+c+f+f+i+i+f+h+f+m+m+m+o+o+o+o+o+m+m+p+m+o+t+o+o+m+t+s+o+y+s+m+s+o+s+s+t+m+x+s+s+s+s+s+s+m+x+m+y+m+s+x+s+s+x+m+x+y+y+m+y+y+x+x+o+y+m+x+s+o+y+m+y+s+t+t+p+q+o+o+p+s+m+m+o+m+o+o+o+i+f+h+h+f+f+f+0+f+g+8+f+0+8+8+5+9+8+6+6+6+6+5+7+5+",
|
||||
"` _.4._._.8.k.l.F.V.V.;+V.`. +`.`.@+`. +>+`.>+`.@+`.>+-+Z.;+;+>+,+-+;+=+,+,+,+,+!+,+)+'+!+~+~+_+~+_+(+(+^+^+(+(+(+^+}+}+(+5+[+[+}+6+6+6+6+0+6+5+5+8+0+8+8+b+8+8+8+8+f+8+8+f+f+f+i+h+h+h+i+m+m+o+o+o+m+m+m+o+m+m+p+p+s+s+s+s+s+t+s+y+x+s+o+y+y+w+y+m+x+x+s+s+x+t+y+y+y+y+x+y+x+w+y+o+y+y+y+y+y+o+y+y+x+m+x+x+x+s+y+o+x+m+s+y+m+t+o+s+t+m+m+o+o+m+o+o+o+o+o+o+f+f+i+i+f+f+h+f+f+8+f+0+8+f+8+8+0+8+5+8+8+5+6+6+5+|+",
|
||||
"|.` _.4._._.4.k.F.V.V. +@+ +$+`.`. +`. + +`.@+ + +,+ +>+-+,+;+,+;+=+!+~+'+)+~+'+~+_+_+)+_+(+!+_+(+_+^+(+(+}+}+}+[+[+|+4+|+6+6+6+4+6+8+0+6+7+0+0+8+0+0+0+0+0+f+f+f+f+f+i+h+h+m+h+h+o+o+m+p+p+m+o+m+s+m+t+s+s+y+m+s+m+s+t+m+y+x+y+m+y+y+m+x+y+x+y+y+y+m+x+x+x+y+m+x+m+x+y+x+y+x+y+y+y+y+y+y+y+y+w+y+w+y+y+o+x+x+m+y+x+x+y+m+y+s+s+y+s+o+t+s+o+o+m+o+o+o+o+o+o+o+f+f+i+h+0+c+c+i+f+f+8+8+0+0+b+8+8+6+6+6+8+|+6+6+[+",
|
||||
"_._._._._._._.4.j.E.V.Z.`.-+ +>+`.;+,+-+>+>+,+,+>+-+=+=+,+-+!+=+'+'+~+'+)+!+(+~+^+'+~+_+!+_+_+(+[+[+(+|+|+[+[+[+[+|+6+7+6+6+8+6+8+8+4+b+b+0+8+8+f+c+c+c+c+h+0+f+f+f+h+h+m+p+p+o+q+p+p+p+p+m+o+m+s+s+s+m+s+y+s+s+x+x+x+x+y+x+x+x+y+m+y+y+y+y+y+y+y+y+y+y+m+y+x+y+y+x+y+y+y+y+x+y+y+y+y+y+x+y+y+x+y+x+y+y+y+y+y+y+x+y+y+y+y+x+o+y+o+t+s+s+o+m+m+o+o+o+o+m+m+f+i+h+o+c+c+k+h+0+f+c+c+c+c+8+8+8+5+6+6+6+8+6+4+|+|+6+",
|
||||
"_.` 8.` _.8._._.|.k.l.V.`.-+>+-+Z.`.,+`.,+,+,+,+>+~+~+~+~+'+~+~+~+^+^+^+'+'+(+!+^+^+(+}+^+[+(+(+(+6+|+5+|+6+4+}+5+6+5+7+6+0+0+8+8+0+0+8+8+8+f+f+c+c+i+i+c+i+i+f+f+n+o+o+p+p+p+m+m+m+o+m+s+s+s+y+o+y+m+y+m+y+y+s+y+y+y+x+y+y+y+x+y+x+x+x+x+y+y+y+y+y+y+x+B+y+x+x+y+y+y+y+y+y+y+y+y+y+y+y+y+y+y+y+y+x+x+y+y+o+y+y+o+y+s+o+y+y+s+s+y+o+o+s+t+m+m+s+m+o+m+m+o+f+o+i+f+h+h+c+c+0+i+f+8+8+c+c+6+0+8+8+7+7+6+7+6+6+4+|+",
|
||||
"8.H ` _._._._._.4._.j.E.Z.`.-+>+;+;+;+,+,+'+~+!+!+-+,+'+'+'+^+!+~+_+~+~+^+(+(+(+[+}+[+(+[+}+}+6+|+7+7+|+5+6+6+6+6+8+0+5+5+8+4+0+c+c+0+c+c+c+c+h+i+h+i+i+i+m+f+f+f+m+m+p+m+p+m+m+p+t+m+t+s+s+y+s+x+y+y+y+y+y+s+y+x+y+y+y+x+y+x+y+B+y+B+y+x+x+y+B+x+B+B+B+B+y+y+y+B+A+B+y+y+y+y+y+x+y+y+y+y+y+y+y+x+y+y+y+x+y+y+y+x+m+y+y+t+s+o+y+m+y+m+o+s+t+m+o+m+m+i+o+f+o+i+h+h+c+f+f+0+g+c+c+0+6+6+5+5+6+7+6+6+5+7+6+|+|+|+|+",
|
||||
"` 8.8.8._._.4.4._._._.4.F.Z.,+>+'+)+~+,+,+,+~+~+~+~+~+^+~+_+^+(+^+^+(+(+_+(+[+(+[+(+7+}+|+|+}+6+6+6+9+5+5+8+6+6+9+8+0+8+b+8+0+0+f+c+0+0+8+f+c+k+i+k+h+o+f+m+o+m+o+s+m+p+s+s+s+m+s+y+s+y+s+s+y+y+o+y+y+y+y+y+x+y+x+x+y+y+y+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+C+B+C+A+B+y+B+y+y+y+y+B+y+y+y+y+y+y+y+y+y+x+y+y+y+y+x+o+y+s+s+s+o+s+o+y+o+m+t+m+o+m+o+f+m+h+i+i+i+i+c+c+i+0+f+c+0+0+8+0+8+7+8+7+|+4+6+6+|+|+}+}+}+",
|
||||
"_._._._.8.4._._.4._.8.j.j.F.Z.'+,+=+'+'+~+'+'+'+!+(+'+_+^+(+(+^+(+[+|+^+|+(+}+7+5+|+5+6+6+6+6+6+6+6+6+8+8+5+0+8+0+0+8+0+f+i+8+i+f+i+i+g+h+f+f+f+h+m+m+o+q+m+m+s+m+s+s+s+s+s+t+t+s+s+o+y+y+y+x+y+y+y+x+y+y+y+y+y+y+B+B+B+B+B+B+C+B+B+B+B+B+B+B+B+C+A+B+C+C+C+C+A+C+C+B+B+B+B+y+y+B+y+C+A+y+y+y+y+y+y+y+y+w+m+x+x+m+y+x+s+o+s+y+m+o+y+m+s+o+m+q+o+o+i+o+k+k+i+f+i+0+f+i+0+c+0+0+g+8+6+6+6+5+5+5+6+6+6+[+7+}+[+^+^+",
|
||||
"_._._._.4.|.|.4.4.4.4.k.j.l.F.Z.;+!+~+'+_+_+^+^+^+(+^+^+^+_+(+^+}+[+|+|+|+[+|+|+6+|+6+6+6+6+6+5+0+0+c+8+0+8+8+8+b+c+g+0+f+i+0+i+f+f+f+g+i+m+m+o+h+m+m+m+q+p+o+t+t+t+m+s+y+s+s+o+y+x+y+y+x+y+x+x+y+y+x+y+B+y+B+B+B+B+C+C+B+C+B+C+B+C+A+C+C+A+C+C+D+C+C+C+C+C+C+D+C+C+C+B+C+C+A+C+B+B+y+B+y+y+C+y+y+x+y+x+y+y+y+x+x+o+y+m+y+y+o+x+m+y+m+m+t+m+m+i+f+f+h+h+k+i+0+g+8+8+g+8+8+8+8+b+8+6+5+5+|+6+6+6+6+7+[+[+}+[+(+}+",
|
||||
"_._.8.8.j.4.4.4.4.|._.4.4.k.k.V.,+~+^+_+!+^+_+!+(+^+[+|+(+[+}+[+[+|+6+5+6+|+6+6+6+8+6+0+6+6+5+8+5+8+8+8+8+g+0+f+0+f+0+h+h+h+i+f+m+o+o+f+o+o+m+o+o+o+m+s+m+y+x+m+y+x+y+y+s+y+y+y+x+y+y+y+y+A+B+B+B+B+B+B+B+B+B+B+C+C+C+C+C+C+C+C+D+C+D+D+C+D+C+C+D+D+C+D+C+C+C+C+C+C+C+B+B+B+B+B+C+B+B+C+y+B+y+y+y+y+y+y+y+y+x+x+x+x+y+y+s+m+s+m+y+o+q+p+m+p+o+f+f+h+h+c+f+0+g+8+8+0+f+0+4+8+6+0+6+2+7+6+5+6+|+|+}+}+[+}+[+(+(+(+",
|
||||
"4.4._.4.j.4.j.k.k.4.4.8.4.|.4.k.V.`.'+^+^+^+_+(+}+^+}+|+[+|+|+4+|+|+6+6+8+6+6+7+6+6+|+0+0+8+5+8+8+0+0+8+0+i+8+g+f+i+i+i+c+m+m+o+o+f+m+m+p+t+m+o+t+m+o+x+s+y+y+s+y+y+y+y+x+y+y+y+x+x+x+y+B+B+A+B+B+C+C+C+C+C+B+C+C+C+C+D+C+C+D+C+D+C+C+D+D+D+E+D+D+C+D+C+D+F+C+C+C+C+C+C+B+B+B+y+B+B+y+B+B+B+B+B+y+y+y+y+y+o+y+m+y+y+t+y+o+y+o+s+s+m+m+h+m+o+o+h+i+c+h+f+8+0+0+0+8+8+8+8+8+8+6+8+6+|+7+6+6+6+|+6+|+2+}+|+[+}+(+(+",
|
||||
"k.4.4.4.4.8.j.k.4.8.8.4.4.4.4.4.k.Z.Z.'+(+^+(+(+[+|+|+|+7+7+7+|+4+6+6+6+5+6+9+5+8+b+0+6+7+5+f+0+8+8+b+f+f+c+c+f+i+i+i+f+m+o+i+m+m+m+o+o+s+s+t+m+s+s+x+o+t+x+m+y+y+y+y+y+y+y+y+y+B+B+B+B+C+B+B+B+C+C+C+C+C+D+C+C+C+C+E+D+D+D+D+D+D+D+D+D+D+D+E+D+D+D+C+C+C+C+C+C+B+F+C+C+C+A+C+B+B+B+y+y+B+y+y+y+y+x+y+y+y+x+x+y+m+m+y+s+s+m+t+o+m+m+q+p+k+p+i+i+i+f+0+8+8+8+0+8+8+6+0+5+6+6+8+6+6+4+6+4+4+[+|+4+4+|+[+(+}+(+^+_+",
|
||||
"_.4.j.k.j.4.k.k._.4.4.4.|.k.4.4.k.F.S.-+[+|+|+[+[+6+|+|+|+|+6+|+6+6+8+0+5+5+0+8+8+b+8+0+b+0+b+0+b+0+c+i+i+h+f+f+f+f+m+f+m+m+p+o+t+s+m+y+o+x+o+y+y+m+x+x+y+y+x+x+y+y+y+y+B+y+B+B+B+C+B+B+C+C+C+C+D+D+D+C+D+C+D+D+D+D+C+E+D+D+D+D+D+D+D+D+D+D+D+D+D+F+D+C+D+D+E+C+B+C+B+C+C+C+B+B+C+y+B+y+B+B+y+y+y+y+y+m+y+y+m+y+y+s+t+m+m+m+s+m+p+f+i+m+i+i+g+f+c+b+f+9+8+8+5+8+0+4+c+0+6+6+|+6+6+6+|+|+7+}+}+^+^+|+}+(+}+_+^+^+",
|
||||
"4.4.4.4.4.j.k.k.4.4.4.k.4.4.4.4.k.k.n.`.'+_+|+|+4+|+|+6+6+|+5+7+|+8+6+8+0+6+8+4+0+8+b+8+f+i+f+b+f+g+i+h+o+f+h+i+m+m+o+m+m+s+t+s+m+o+y+y+x+y+x+x+x+y+y+y+y+y+B+y+C+B+C+B+B+B+B+C+C+D+C+C+D+D+C+D+C+D+D+D+D+D+D+D+D+D+D+D+D+D+E+E+D+E+D+E+D+D+D+D+E+D+D+C+D+D+D+C+C+B+B+D+B+B+B+B+B+y+B+y+y+y+y+y+y+x+y+x+x+s+y+s+s+o+s+y+o+o+o+q+o+h+h+f+i+i+c+8+8+0+8+5+9+5+0+0+8+6+6+|+0+|+6+6+4+4+|+|+|+|+^+}+|+^+(+^+^+(+_+_+",
|
||||
"_.4.k.4.4.k.|.4.j.j.j.j.k.j.j.4.4.4.4.S.`.!+6+6+6+6+6+5+6+6+6+5+5+5+0+8+0+6+0+8+0+8+i+0+g+f+f+f+0+g+i+f+o+o+m+p+m+m+t+s+s+s+s+x+x+x+x+x+y+y+x+y+y+x+B+B+B+B+C+C+B+C+C+C+C+C+C+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+D+E+D+E+D+D+E+E+E+D+E+D+D+D+D+D+D+D+D+C+D+E+C+C+B+C+B+C+A+C+B+y+C+y+y+y+y+y+y+y+y+y+f+x+s+m+x+s+m+m+s+p+m+m+m+m+f+h+f+h+i+g+g+8+8+8+8+5+7+6+4+8+6+4+4+6+6+4+|+|+4+|+^+4+[+^+}+}+^+_+_+)+^+!+'+",
|
||||
"4.4.4.8.4.4.4.j.k.4.j.k.j.j.j.j.j.8.j.k.E.Z._+7+6+6+6+8+6+6+0+8+8+8+8+8+8+0+8+c+b+g+f+i+f+i+m+h+f+f+f+m+o+o+q+m+t+t+s+y+y+o+y+y+y+y+x+y+B+y+B+B+B+B+B+B+B+B+C+C+D+C+C+D+C+C+D+D+D+D+D+D+D+D+D+D+D+D+D+E+D+D+D+D+C+D+E+D+D+D+D+E+D+E+D+D+D+D+D+E+D+E+E+D+C+D+C+C+B+C+A+C+B+B+B+C+A+y+y+y+y+y+y+y+y+y+y+x+x+x+s+o+y+p+s+o+o+q+o+i+i+o+i+h+f+0+0+0+5+8+5+0+8+8+6+6+6+4+6+}+|+6+|+4+4+4+^+(+_+_+|+)+^+^+^+!+'+)+'+~+",
|
||||
"4.k.4.4.j.4.4.j.k.4.j.j.j.j.j.4.8.j.8.4.k.E.=+}+6+6+5+5+0+5+8+5+8+8+0+0+g+f+0+f+0+g+f+f+o+i+o+p+m+o+o+s+s+y+t+o+y+o+m+x+y+y+x+y+x+B+y+B+x+B+B+B+B+B+C+C+B+C+C+C+D+D+E+D+D+D+D+D+D+D+D+D+E+D+E+D+E+D+E+D+D+D+E+E+C+D+E+E+E+D+D+E+D+F+E+D+D+E+D+D+D+D+C+D+C+D+C+C+B+C+C+A+C+B+B+y+A+B+y+y+x+y+y+y+x+x+y+o+s+t+s+m+p+p+m+o+f+h+o+i+i+i+i+c+i+c+8+8+8+8+6+6+6+|+|+4+6+4+^+4+4+|+|+^+^+(+|+[+^+^+^+^+~+(+'+)+~+)+'+~+",
|
||||
"j.4.4.4.k.4.j.k.k.j.j.j.j.j.j.j.j.j.j.j.4.k.S.=+(+6+8+8+8+c+0+8+8+8+i+f+f+i+i+f+i+i+i+o+f+m+s+m+m+s+s+t+y+m+w+y+y+x+y+y+y+B+y+B+B+B+B+B+C+C+C+C+C+C+D+C+C+D+D+D+D+D+E+D+D+D+E+E+D+F+E+D+E+E+E+E+E+F+E+F+E+E+E+E+E+D+E+D+D+E+E+D+E+D+D+E+E+D+D+D+D+C+D+C+B+C+C+C+B+B+C+B+B+B+B+B+B+y+x+y+y+x+x+m+x+y+m+s+o+m+m+m+o+m+o+f+i+o+f+i+f+f+0+b+8+8+6+0+5+6+6+6+6+6+6+^+4+|+|+^+|+(+^+^+^+4+^+)+)+'+^+~+)+_+)+~+'+~+>+,+",
|
||||
"j.j.j.|.|.4.j.k.k.4.j.j.j.j.j.j.j.j.j.j.k.|.j.S.=+[+5+5+8+b+f+g+0+g+f+i+i+i+h+m+m+m+m+m+o+m+x+s+t+s+y+m+y+x+y+y+y+y+A+x+B+y+B+B+B+C+C+C+C+C+D+C+D+D+D+D+D+D+D+D+E+E+E+D+D+E+D+E+D+D+F+D+D+D+E+D+E+D+D+E+D+E+E+D+E+D+E+E+F+D+E+D+E+E+F+D+D+E+D+D+E+D+C+C+y+y+B+B+A+B+B+B+B+y+y+y+y+B+y+x+y+y+x+y+m+x+s+m+s+p+m+m+i+i+h+f+h+h+h+f+0+b+f+b+6+0+6+0+7+7+6+6+|+4+|+[+^+|+|+^+|+|+^+_+^+)+^+^+)+)+^+'+)+~+)+)+-+~+>+,+",
|
||||
"j.k.n.k._.k.j.E.4.j.j.j.j.j.j.j.j.j.E.E.4.j.4.k.S.=+5+f+f+f+f+f+g+f+i+h+h+p+p+p+m+q+o+y+y+x+s+y+y+y+x+y+y+y+y+y+B+A+B+B+C+C+A+C+D+C+D+C+D+C+D+D+C+D+D+D+D+D+D+D+D+E+E+E+E+E+E+E+E+E+D+E+E+E+E+E+D+E+E+E+E+D+E+E+E+E+D+E+D+E+D+E+E+D+D+D+E+C+C+D+D+C+C+B+B+B+y+B+B+B+y+y+B+y+B+y+y+y+x+m+y+x+y+m+s+m+m+p+m+q+q+i+o+f+f+h+g+g+8+0+b+0+b+8+6+8+9+|+6+[+5+5+|+|+[+^+}+_+}+[+^+_+_+^+)+^+^+'+~+'+)+<+~+)+~+,+>+>+,+-+",
|
||||
"k.k.|.4._.j.k.j.j.j.j.E.E.j.S.j.E.E.E.E.E.j.8.j.k.S.(+0+g+g+f+f+o+o+m+o+m+m+m+p+s+x+s+s+o+x+x+x+y+y+y+x+x+y+y+B+B+B+B+C+C+D+C+D+D+C+D+D+D+D+D+D+D+D+D+D+E+D+F+D+E+E+F+E+E+E+E+E+E+E+E+E+E+D+E+E+E+F+E+E+E+D+E+E+D+E+E+E+F+D+D+D+E+E+D+D+D+D+C+D+D+C+B+C+B+x+x+x+y+B+y+C+y+y+y+y+x+x+y+x+x+m+m+y+s+s+m+o+h+f+m+h+h+f+g+f+0+g+b+8+9+5+8+6+6+6+7+5+5+}+[+}+[+^+}+_+^+(+}+_+^+~+~+~+_+_+_+'+)+)+)+)+~+-+~+)+>+>+>+,+",
|
||||
"k.k.4.4.4.j.E.j.k.k.j.E.E.E.S.S.E.E.E.k.k.j.j.j.j.j.=+|+f+f+m+m+o+p+p+m+q+p+s+y+s+o+y+y+y+y+x+y+y+y+B+B+B+B+C+C+C+C+C+C+C+D+E+D+D+D+D+D+D+E+D+D+E+D+E+E+E+F+E+E+E+E+E+E+E+E+E+E+E+F+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+D+E+E+E+D+D+E+C+D+D+C+C+B+B+B+B+C+B+x+p+x+x+x+y+x+x+x+x+x+y+x+m+m+s+s+m+f+m+o+o+o+m+i+f+i+g+0+0+g+0+0+8+5+8+5+7+6+6+5+[+|+7+}+(+^+^+^+(+(+_+^+_+~+^+~+~+~+'+'+<+~+)+)+>+>+>+-+,+>+>+,+ +",
|
||||
"|.4.4.4.j.j.j.E.F.k.E.k.j.j.S.E.E.E.E.E.E.k.j.j.j.j.E.!+6+o+o+s+m+o+y+s+y+o+x+y+x+y+y+y+y+B+B+B+B+A+B+A+C+C+C+C+D+D+D+C+D+C+D+D+D+D+D+E+D+E+E+E+F+E+F+E+E+E+F+E+F+D+E+E+E+E+F+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+D+E+E+E+E+E+D+E+D+D+D+C+D+E+B+B+B+A+y+C+x+B+x+p+m+m+x+B+y+y+y+x+m+y+m+x+m+m+s+p+o+m+h+f+i+f+c+g+8+g+8+8+6+8+8+8+5+6+6+6+|+|+|+[+[+(+}+_+_+^+^+^+^+^+^+_+~+)+'+'+'+)+~+)+>+>+~+'+,+>+,+>+@+>+-+>+",
|
||||
"4.j.j.4.j.j.j.j.E.k.k.j.j.E.E.E.j.E.E.j.E.E.j.j.j.j.j.S.[+f+m+s+y+s+m+y+y+y+y+y+A+x+y+y+B+B+B+B+B+D+C+C+D+C+D+D+C+D+E+C+E+E+D+E+E+E+E+E+E+E+E+E+E+E+D+E+E+E+E+F+E+F+E+F+F+E+E+E+E+E+E+E+F+E+F+E+E+E+E+E+E+D+E+E+E+D+E+E+D+D+E+D+E+D+E+C+C+C+B+C+B+y+y+B+y+y+t+s+p+p+m+s+m+x+o+o+y+s+y+o+p+p+m+m+p+o+i+h+0+c+f+f+g+5+6+5+8+6+6+6+6+7+6+4+6+6+|+|+^+(+^+(+(+!+^+_+^+^+^+'+-+'+'+)+)+~+,+!+;+,+>+@+,+~+@+;+,+;+&+ +",
|
||||
"j.j.j.j.k.j.j.E.E.k.k.j.j.S.E.j.E.S.S.E.j.E.E.j.j.j.j.j.Z.|+f+t+o+y+x+x+y+y+y+y+B+B+B+B+B+C+C+C+C+C+C+C+D+D+D+D+D+D+D+D+D+E+E+E+D+E+E+F+E+E+E+E+F+F+F+E+F+F+F+F+F+F+F+E+E+F+F+G+E+E+E+E+F+E+E+E+E+E+F+F+E+E+E+E+E+D+E+D+E+E+D+D+D+C+C+C+C+C+y+B+y+y+B+C+B+x+y+y+s+p+h+h+s+o+y+m+s+m+m+s+m+m+i+i+k+i+8+c+f+8+8+0+8+9+6+5+5+6+7+|+6+4+|+|+4+^+^+(+}+(+)+_+(+!+(+'+~+~+>+)+'+>+)+~+'+~+@+~+@+)+,+;+,+,+`.`. +`. + +",
|
||||
"j.j.E.E.E.j.j.E.S.k.j.j.j.S.E.E.j.S.F.E.E.j.E.E.S.E.j.k.j.Z.0+m+y+y+B+y+B+C+B+C+B+C+B+C+C+C+D+D+D+C+D+C+D+D+D+E+D+D+E+D+E+E+E+D+E+D+F+F+F+E+F+F+E+E+E+F+E+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+F+E+F+F+E+E+E+F+E+F+E+E+E+D+E+D+D+E+D+C+D+C+C+B+C+B+B+B+y+y+y+x+y+x+x+o+m+h+f+f+s+m+o+t+m+m+o+o+i+h+h+f+f+c+8+0+b+8+8+4+8+7+|+4+8+|+7+|+5+[+[+^+^+|+_+_+'+^+'+_+_+^+~+'+'+~+~+,+~+,+>+)+>+)+>+,+ + +>+`.`. +@+`.`. + +",
|
||||
"k.E.E.k.k.j.j.S.S.F.j.j.S.S.E.E.j.S.F.k.k.j.S.S.E.S.E.j.8.j.(+f+x+y+B+B+B+B+C+C+D+C+D+C+D+D+D+C+E+D+D+D+D+D+E+E+E+E+F+D+E+E+E+E+F+E+E+F+F+E+F+G+F+G+F+F+F+G+G+F+F+F+G+F+F+F+F+G+E+F+E+E+E+E+E+E+F+E+E+E+E+E+E+E+E+D+D+D+D+D+C+D+C+C+B+A+B+B+B+y+y+x+B+y+y+y+x+x+s+p+h+f+0+m+m+s+m+p+h+h+h+i+i+c+8+8+6+8+0+8+8+7+[+6+6+|+|+|+[+|+|+|+^+(+|+_+(+^+_+~+~+'+_+~+^+-+)+'+,+~+-+>+)+>+,+>+>+ + + +-+ + +;+`. +W. +`.V.",
|
||||
"E.E.E.k.j.j.E.S.V.j.j.j.S.E.S.E.S.E.E.E.j.E.j.E.E.k.j.j.j.j.S.5+o+B+B+B+C+C+C+C+D+C+D+D+D+E+D+F+D+E+E+E+D+F+E+E+E+E+D+E+E+F+F+E+E+F+F+F+F+F+G+F+G+F+F+F+F+F+F+F+G+G+F+F+F+G+F+F+F+E+F+F+F+F+E+F+E+E+E+E+E+C+E+E+E+D+D+D+D+C+D+C+C+C+B+B+A+B+y+x+y+y+x+x+x+s+y+m+t+o+m+f+h+q+m+h+o+q+i+c+c+i+f+0+8+8+6+6+5+7+6+5+[+|+}+|+|+}+^+[+|+^+[+(+!+'+'+!+'+'+'+_+'+'+,+)+>+>+,+{+>+~+ +>+>+`.`. +,+`. +`.;+W. +W. +V.@+ +",
|
||||
"k.k.j.E.j.j.E.E.S.E.8.E.S.E.E.E.S.S.E.j.j.j.E.E.j.E.j.j.j.j.j.!+5+x+C+C+E+C+D+D+E+D+D+D+E+D+E+E+E+E+E+E+F+E+E+E+F+E+E+F+E+F+F+F+G+F+G+G+F+F+F+E+F+G+G+G+F+G+G+F+F+G+G+F+F+F+F+G+F+F+F+E+E+F+F+F+E+F+E+E+E+E+E+C+E+C+C+C+C+C+C+C+A+C+A+B+y+B+y+x+y+y+x+t+t+m+t+s+s+q+o+f+m+p+o+c+f+f+i+0+0+0+8+8+6+6+6+b+6+6+6+7+7+[+[+|+[+}+(+_+^+_+_+_+(+~+_+<+)+-+'+~+)+~+~+'+>+>+,+>+>+,+>+,+>+ + + + +;+ + + +W. +W.@+W.W.W.",
|
||||
"j.j.E.j.E.E.E.E.E.S.8.E.E.E.j.S.E.S.k.E.j.E.S.j.E.S.E.E.S.j.j.j.[+f+B+C+D+E+D+C+E+D+E+E+E+E+E+E+E+F+E+F+E+E+E+E+E+F+F+F+F+F+E+F+E+G+F+F+G+G+F+F+G+F+F+F+G+F+F+F+G+F+E+G+F+F+E+E+F+E+E+F+E+E+E+F+E+C+E+D+C+D+D+E+D+D+D+C+C+A+B+B+B+y+y+B+y+y+y+y+x+x+o+s+s+o+s+o+o+f+o+o+f+i+h+i+b+0+0+c+6+8+8+6+6+6+6+|+6+}+6+|+^+4+|+(+(+(+^+^+^+^+(+(+~+'+'+)+'+,+)+)+,+>+>+>+-+,+>+>+)+ +;+ +@+;+ + + + + +`.V.@+W.@+W.K.W.W.",
|
||||
"j.j.j.S.S.E.S.E.j.S.S.S.E.E.j.;+E.E.E.j.S.S.S.E.S.E.E.S.S.j.j.j.E.[+m+D+D+D+F+D+E+F+D+F+E+E+F+E+E+F+E+G+E+F+F+F+E+F+F+G+F+F+F+G+F+G+G+G+G+G+G+F+G+G+F+F+F+F+F+F+G+G+E+F+F+F+F+E+F+F+C+E+F+E+E+E+E+E+C+D+C+D+D+C+D+C+C+C+C+B+A+y+y+B+x+B+y+y+t+y+y+y+o+o+s+o+m+m+m+m+f+h+h+i+f+0+8+f+8+4+b+5+5+7+|+4+|+|+|+}+^+[+^+_+}+|+_+'+~+~+'+^+'+^+_+,+'+)+-+-+>+~+,+,+-+ +>+$+>+,+,+ +`.`.W.@+W.W. +W.W. +W.V.W.@+V.@+@+W.",
|
||||
"S.j.E.S.S.j.S.j.S.S.S.E.E.E.E.S.E.S.j.E.j.S.S.S.S.S.S.S.k.j.j.j.j.S.0+B+D+F+D+E+F+F+E+E+F+G+E+F+F+F+F+F+G+F+F+F+F+F+F+G+G+G+G+F+G+G+G+F+G+G+G+G+G+F+G+F+G+G+G+G+G+F+F+F+F+F+E+F+F+F+E+E+D+E+E+E+E+D+D+D+C+C+C+C+B+A+C+C+B+y+B+B+x+x+y+x+y+x+o+t+s+m+m+m+o+m+o+p+k+f+i+c+c+c+b+8+0+8+6+0+6+6+6+5+|+|+|+|+^+4+}+^+(+(+(+_+'+'+'+~+~+'+'+~+'+~+,+'+>+>+>+>+>+>+ +-+ + +>+ + +>+ +@+Z.V.`. + +K.@+V.V.@+V.K.K.H.W.K.",
|
||||
"E.j.S.S.E.E.E.j.j.S.S.E.E.S.E.E.S.E.E.E.E.S.S.j.S.S.S.S.S.j.k.j.j.j.(+f+C+E+F+E+F+F+F+F+F+G+G+G+G+G+G+F+G+G+G+G+F+G+F+G+G+F+G+G+G+F+G+G+G+F+F+F+G+G+G+F+F+F+F+F+G+G+E+F+E+F+E+E+F+F+E+E+E+C+D+D+D+D+C+D+B+C+C+B+C+B+B+A+B+y+A+y+y+y+y+x+y+s+s+t+p+t+m+m+p+m+o+h+i+f+f+f+b+6+0+8+0+6+6+6+6+6+|+6+[+|+^+|+^+^+_+'+^+_+!+(+^+^+'+~+~+'+,+,+'+~+>+~+,+-+>+,+ + + +`. +`.`.`. +W.`.@+@+Q.W.W.V.V.@+W.V.@+F.W.W.W.W.K.",
|
||||
"j.j.S.S.E.S.j.j.S.j.;+j.S.S.E.E.E.E.E.S.E.E.S.j.E.S.S.S.S.S.j.j.8.j.E.[+x+D+D+F+F+F+F+F+F+G+F+F+F+G+G+G+G+G+G+G+G+F+G+G+G+G+F+G+G+G+G+G+F+G+G+G+G+F+F+G+F+F+E+F+F+F+F+C+F+D+E+E+E+D+D+C+E+E+C+C+C+C+C+C+C+B+B+B+B+B+B+B+y+y+x+y+x+t+y+y+o+p+m+m+o+h+i+h+o+o+f+o+i+c+c+4+6+5+|+c+4+4+6+6+7+(+}+[+}+(+[+_+^+^+'+_+~+_+_+)+~+~+~+-+-+,+'+~+,+-+,+,+`.,+>+>+,+`. + +`. +&+ +`. +Q.W.V.W.W.;+K.W.W.F.@+F.@+K.H.H.H.W.",
|
||||
"E.E.j.S.S.j.S.S.S.S.S.S.;+S.E.;+j.E.S.j.S.S.S.j.S.E.E.S.S.E.k.j.j._.j.E.f+B+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+F+F+G+G+G+F+F+G+G+F+F+E+F+F+F+E+E+E+E+E+E+E+E+D+D+E+D+C+D+C+C+B+B+C+B+y+B+y+B+y+y+y+x+s+s+t+o+s+o+p+p+m+o+i+o+h+i+m+c+i+b+8+0+6+6+5+|+0+4+6+|+|+6+|+(+(+_+^+(+(+^+^+)+^+!+)+_+^+>+)+~+)+>+>+ +,+;+,+>+,+`.`. + +@+`.`.`.`.`. +;+V.V.W.W.@+W.W.V.W.W.W.V.K.K.K.K.Q.W.K.H.",
|
||||
"j.E.S.j.S.S.S.j.E.j.S.j.S.S.S.S.S.S.S.S.S.Z.S.S.S.j.E.E.-+k.E.j.j.j.j.j.(+m+C+F+F+F+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+F+F+F+F+F+G+C+F+E+E+E+E+E+D+D+E+D+D+D+D+C+C+B+C+C+C+C+A+B+y+y+B+y+x+x+t+s+y+y+y+s+x+o+q+p+o+o+i+i+c+o+b+f+i+c+c+|+4+4+6+8+8+6+|+|+4+|+6+|+_+_+(+(+^+^+_+^+)+^+_+'+'+^+~+~+,+-+,+>+,+-+,+-+,+ + + +`.-+`.`. + + +W.W.@+W. +W.W.W.V.Q.W.W.H.W.Q.Q.K.V.V.W.H.K.H.K.",
|
||||
"S.j.j.S.S.S.8.S.j.j.E.S.S.S.S.Z.S.E.j.S.(+S.Z.E.S.E.E.S.E.E.E.E.j.j.j.j.j.5+x+D+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+F+F+F+F+E+F+F+E+F+E+E+D+E+D+D+E+E+E+C+C+C+C+C+A+C+B+B+B+B+y+y+y+y+x+s+o+m+m+s+o+m+s+m+q+h+f+h+f+c+8+f+4+0+c+b+4+^+|+|+6+7+7+|+^+|+^+|+|+^+^+_+^+'+'+^+'+^+'+-+'+~+,+,+,+-+)+'+,+ + + + +,+,+`.`. + +@+W.`.W. + + +V.W.W.W.W.W.K.V.K.K.K.K.W.V.W.K.K.H.H.Q.H.H.K.",
|
||||
"S.S.j.j.S.!+j.S.S.8.j.E.E.E.S.S.;+S.j.S.=+Z.Z.E.S.E.E.S.E.E.j.j.j.E.k.j.8.S.f+C+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+F+F+F+G+C+F+F+F+E+E+E+D+E+E+D+D+E+D+C+C+C+C+C+A+B+B+B+B+B+B+y+y+v+y+x+s+m+x+m+s+y+o+m+q+o+i+h+k+h+i+c+0+c+0+4+b+0+6+|+'+|+6+|+6+[+^+|+^+^+4+^+(+(+^+^+)+)+_+)+'+)+'+'+'+,+,+~+,+ +>+>+>+ +,+;+ +`.>+ +W.;+`.`.W.`.V.@+W.W.W.@+H.@+V.K.@+K.W.W.W.K.K.H.H.K.K.Q.K.H.m.t.",
|
||||
"E.E.j.S.;+j.j.!+j.S.S.S.E.S.;+E.S.8.S.S.S.S.S.E.E.S.E.E.E.S.E.E.j.E.j.j.8.j.5+x+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+F+G+G+G+G+G+E+F+G+F+C+F+E+C+E+C+D+D+D+D+D+D+C+B+C+B+B+y+y+B+B+y+y+x+x+y+s+y+s+t+o+q+o+p+m+o+m+h+k+c+0+k+c+0+b+8+c+6+|+4+0+6+^+^+|+|+|+|+|+^+|+^+^+^+'+_+~+'+'+)+)+^+)+'+)+)+'+,+`.>+ +,+-+`.,+,+ +`.;+ +`. +`. +@+V.;+V.W.W.@+Q. +W.W.H.K.W.K.V.K.H.K.F.K.H.m.H.s.w.Q.s.H.w.w.",
|
||||
"S.j.S.S.S.j.j.(+Z.S.S.E.E.S.S.Z.S.j.j.S.S.S.S.E.S.S.E.E.E.V.k.j.E.j.j.j.4.j.E.f+C+G+G+G+G+G+G+G+G+E+F+G+G+G+G+G+G+G+G+G+G+G+G+G+F+G+F+G+G+F+E+F+F+E+E+E+D+E+E+E+E+E+D+D+C+C+D+A+C+A+B+y+x+B+y+y+x+B+t+x+s+m+s+t+m+p+m+m+h+k+p+i+c+0+0+c+0+c+4+6+6+6+^+^+6+c+^+^+!+4+^+4+^+^+!+^+^+^+^+^+_+_+)+^+'+^+)+>+>+>+>+>+`. + +,+`. + + + +;+`.W.`.V.`.W.W.V.@+W.K. +W.W.W.H.Q.K.V.W.H.H.K.H.H.H.K.H.K.t.w.K.H.s.w.m.m.s.",
|
||||
"E.S.S.S.j.S.S.S.S.Z.S.S.S.S.S.S.S.S.E.j.S.Z.S.E.E.E.j.j.S.S.j.j.j.j.k.j.8.j.j.!+s+F+G+G+G+G+G+G+G+E+F+F+G+G+G+G+G+G+G+G+G+G+G+G+F+G+F+F+F+F+F+F+F+E+E+E+D+E+D+D+C+E+C+D+C+B+C+B+C+y+B+B+x+y+x+t+s+s+t+o+s+p+s+i+o+i+k+i+f+f+i+c+0+8+0+c+6+4+|+|+6+4+^+^+6+|+[+)+^+|+^+4+'+^+^+(+^+'+'+^+~+~+'+'+~+>+)+)+-+>+,+>+ + + + +;+`.W.>+ + +`. + +W.W.@+ +W.V.K.@+K.V.W.K.K.V.K.K.K.H.H.t.K.H.s.K.s.K.m.w.w.m.w.m.m.m.m.",
|
||||
"S.j.S.S.S.j.!+Z.S.Z.Z.S.Z.S.E.S.Z.S.S.S.S.Z.E.E.S.k.j.E.S.k.j.E.j.E.j.4.j.8.4.k.6+B+G+G+G+G+G+G+G+F+E+F+G+G+G+G+G+G+G+G+G+G+G+G+G+G+G+F+E+E+C+E+E+E+E+D+E+D+D+D+D+C+C+B+B+t+B+B+y+y+t+y+o+m+s+m+s+s+p+p+p+o+o+i+f+i+i+c+c+c+i+b+4+c+6+6+4+|+|+|+|+^+'+^+6+^+4+-+)+'+^+'+^+^+!+'+'+^+'+'+'+^+,+'+{+>+ +>+)+ + + +W.W.H.W. +W. +`.`.`. +V.W. +W.W.H.W.@+V.K.V.K.F.K.F.H.K.K.K.w.Q.w.Q.m.K.w.s.s.t.m.K.w.m.s.q.f.q.",
|
||||
"S.S.S.8.S.S.S.S.S.S.Z.E.S.V.E.E.S.S.S.S.S.S.S.E.S.j.E.E.E.4.j.j.j.E.4.4.j.j.4.4.E.m+F+G+G+G+G+G+G+z+E+E+G+G+G+G+G+G+G+G+G+G+F+G+F+F+F+F+E+E+E+E+C+E+D+C+C+C+C+E+B+C+C+B+B+y+y+B+B+y+o+y+t+o+s+m+p+m+o+i+m+m+i+i+i+i+e+c+6+0+0+|+}+4+4+|+|+[+(+[+[+|+'+^+|+^+4+-+)+!+^+~+^+^+)+)+'+)+)+)+~+'+,+,+>+>+>+ + + + +H.n.F.n.Q.>+V.W. +W.V. + +W. +W.W.W.H.K.V.H.H.K.K.K.K.H.H.n.w.K.t.w.t.m.s.w.q.s.s.m.m.w.m.m.m.m.f.",
|
||||
"j.S.S.j.S.S.(+S.S.S.Z.j.E.E.E.j.E.S.S.S.S.S.E.V.E.E.E.E.E.8.E.E.k.k.4.8.j._._._.k.(+C+G+G+G+G+G+G+E+E+F+F+G+G+G+G+G+G+G+G+G+G+F+F+F+F+C+E+E+E+E+E+D+D+D+C+E+C+B+B+B+B+B+y+y+t+w+y+t+o+w+m+m+s+q+p+k+h+h+i+i+c+f+c+c+0+4+4+4+4+|+|+|+^+^+|+}+}+|+^+^+^+^+^+^+^+`.-+)+'+-+!+_+'+'+>+,+'+'+-+)+>+>+ +W.W.Q.H. +W.n.t.t.t.H.W.W.W.W. +W.@+W.W.W.Q.H.H.H.W.H.H.H.H.H.K.t.K.m.w.K.w.w.w.m.Q.m.m.t.q.m.f.m.m.m.f.f.f.f.",
|
||||
"E.j.j.S.(+S.S.S.E.S.E.j.S.S.E.E.S.E.S.Z.E.S.S.F.E.j.S.l.k.j.E.E.k.j.j.j.j._.4._.4.j.f+C+G+G+G+G+G+E+E+E+E+F+G+G+G+G+G+G+G+G+G+F+F+E+F+E+D+D+D+D+C+C+E+C+B+B+C+B+A+A+y+y+s+y+m+t+y+o+m+o+q+i+o+i+m+i+8+c+i+0+c+c+c+4+6+6+|+^+^+^+^+^+_+_+^+^+<+^+[+^+)+^+'+'+>+`.-+>+)+>+~+,+>+~+'+>+>+>+>+>+W. + +n.n.H.H.V.K.2.t.t.t.}.W.W.W.K.W.W.W.Q.W.V.Q.Q.H.w.H.Q.Q.s.H.s.w.s.H.w.m.w.w.w.w.m.m.q.q.m.f.m.f.f.m.f.f.f.f.f.",
|
||||
"E.S.j.j.S.;+S.E.j.E.E.E.E.;+j.S.S.j.S.S.E.S.F.E.j.j.S.F.j.j.E.k.4.j.j.j.j.8.j._.4.4.=+B+G+G+G+G+G+F+E+E+F+F+G+G+G+G+G+G+G+G+F+F+F+F+D+E+E+D+C+C+D+C+B+C+B+B+A+B+B+y+x+B+t+o+t+s+m+p+m+o+h+h+c+i+i+c+8+g+b+4+6+6+6+6+^+|+|+(+^+4+)+'+^+'+^+'+)+-+)+'+^+)+)+)+-+-+>+;+,+,+,+,+>+>+ +>+W.>+>+W.Q. +F.}.t.Q.W. +F.n.n.t.}.n.Q.W.V.H.@+K.K.W.W.K.K.Q.K.H.T.w.w.K.w.K.s.w.w.T.s.t.w.m.m.m.f.m.f.f.m.f.f.m.f.f.f.i.f.h.",
|
||||
"j.j.S.!+S.E.S.j.j.S.E.E.S.E.j.S.S.E.Z.E.k.S.E.j.j.E.S.4.j.k.E.E.k.j.E.4.4.j._.` 4._.j.6+C+G+G+G+G+G+E+E+z+E+F+G+G+G+G+G+G+G+F+F+E+D+E+C+D+D+C+C+B+C+B+y+y+B+A+y+x+B+s+s+m+m+m+s+m+k+m+h+c+c+6+c+0+4+5+0+6+6+|+6+6+6+^+[+|+_+^+)+)+^+)+)+{+`.>+>+)+)+)+>+{+ +&+~+>+>+{+>+>+>+>+>+ + +H. +>+H.H.W.F.2.H.Q.Q.H.H.t.}.n.n.n.n.H.K.H.W.H.H.K.Q.H.t.s.t.w.H.t.s.m.m.m.t.s.t.w.m.s.m.f.m.m.f.m.f.f.f.m.h.f.h.f.h.i.f.h.",
|
||||
"E.E.j.E.S.E.E.l.j.E.E.E.V.S.j.S.E.E.S.V.k.E.E.E.E.E.k.4.j.k.k.k.k.k.k.4.j.k._._._._._.S.i+C+G+G+G+G+G+F+E+z+F+G+G+G+G+G+G+F+F+D+F+B+E+D+C+C+E+A+B+B+y+v+B+t+x+x+s+s+t+q+q+o+m+p+k+f+c+i+c+8+8+6+6+|+|+7+|+|+4+4+4+^+^+'+_+'+~+)+)+)+>+$+`. +-+$+{+$+$+++$+$+$+++++++M.P.++W.>+,+`.W.t. +W.H.n.H.n.n.n.n.n.s.H.n.}.}.t.<.t.H.H.H.K.H.m.Q.K.m.Q.Q.s.s.m.w.m.s.s.s.q.m.m.f.q.m.m.q.f.f.f.f.f.h.f.h.h.f.f.i.f.f.h.f.",
|
||||
"j.j.S.S.S.E.k.E.j.S.E.E.F.j.E.S.E.S.E.k.j.j.E.F.l.l.j.4.k.k.j.k.|.k.k.4.k.4._._._.` ` 4.=+t+G+G+G+G+G+G+F+F+G+G+G+G+G+G+F+F+F+F+u+E+C+D+C+B+C+C+B+x+y+t+x+y+t+y+o+m+m+o+o+q+o+m+h+b+c+c+c+4+6+4+|+|+|+4+|+^+4+4+^+_+^+'+~+'+-+-+)+>+>+$+>+Q.$+$+++++P.P.P.P.P.P.r.P.P.P.o.Q. + +W.W.t.W.W.Q.n.H.n.n.t.t.t.}.M.n.<.t.s.<.t.Q.w.H.w.H.m.s.H.m.w.w.w.q.M.q.w.m.f.q.s.m.m.s.m.f.f.q.f.f.f.f.f.f.f.f.h.f.f.e.e.e.e.e.",
|
||||
"E.j.S.S.E.E.j.E.k.E.S.E.j.j.j.E.E.F.l.l.j.E.E.k.k.k.4.j.k.4.4.k._.4.j.k.|._._.` _._.|._.E.f+F+G+G+G+G+G+G+G+G+G+G+G+F+F+F+F+F+D+C+C+D+C+B+C+A+C+v+t+B+s+t+s+s+s+s+p+q+o+i+o+i+i+8+0+c+c+6+6+|+(+^+_+|+^+4+)+^+{+)+'+>+)+'+)+>+>+&+W.$+ +M.M.++P.P.r.r.r.o.r.r.d.5.~.~.5.o.Q.W.>+ +H.n.H.W.H.t.n.H.Q.t.Q.n.}.t.n.n.2.2.t.K.t.t.w.w.s.t.K.m.t.m.s.w.s.m.s.q.f.s.o.f.f.m.f.f.m.q.f.i.i.e.h.f.h.f.f.f.i.i.-.h.-.h.^.",
|
||||
"E.S.V.F.F.E.j.j.j.E.V.k.j.E.8.;+E.E.j.j.l.l.E.k.k.|.4.4.4.4.4._._._.j.E.|.` 8.H _._.` ` j.(+y+F+G+G+G+G+G+G+G+G+G+G+G+G+E+D+F+u+D+D+C+C+A+B+u+q+k+c+x+s+q+t+p+p+o+o+o+o+c+k+c+c+6+8+6+|+6+|+|+[+}+^+|+^+)+{+)+{+)+)+>+>+>+>+ +W.$+M.P.M.M.P.r.r.d.d.~.~.P P P P A N P P 3.M.Q. +`.F.n.n.H.Q.}.n.H.H.n.s.<.<.s.t.n.t.<.m.w.w.K.w.w.m.m.m.m.m.m.s.m.s.m.t.m.f.f.q.h.f.f.f.f.f.h.m.h.f.f.f.h.f.h.e.-.-.e.0.6.6.^.6.",
|
||||
"S.S.S.E.E.p.E.E.j.E.S.p.j.S.j.j.E.E.j.l.E.j.k.4.k.k.|.k.4.4._._._.4.4.4._.H 4._.|.` ` ` _.E.0+F+G+G+G+G+G+G+G+G+G+F+G+E+F+E+E+r+D+B+B+B+C+d+e+^+6+f+t+o+m+p+q+o+p+m+o+b+0+c+b+6+4+4+4+|+6+[+(+_+^+^+(+'+'+'+'+-+$+>+&+$+$+$+++M.P.P.r.d.5.d.~.~.A A A u u c c c 0 0 u N 3.M.$+W.W.W.n.n.Q.H.<.t.H.H.s.n.<.t.H.t.w.w.w.w.w.m.m.m.p.m.m.m.q.m.m.f.f.m.w.f.m.q.f.i.f.h.f.f.m.f.h.f.f.f.e.e.i.-.e.e.e.e.^.0.^.^.h.^.",
|
||||
"S.S.E.E.S.E.j.E.E.V.E.k.j.j.E.E.E.E.E.E.l.j.k.j.E.4.4.4.4.k.4._._.4.k.4._.` j._._.` F ` _.8.S.y+F+G+G+G+G+G+G+G+z+F+G+E+D+C+B+k+B+t+C+B+u+++-+[+0+f+m+t+o+o+i+o+p+i+f+b+8+0+4+6+8+|+|+}+_+(+_+^+^+)+^+)+{+$+{+{+$+$+$+M.P.P.P.P.5.~.~.~.P A c ] ] % ] [ 0 0 0 0 0 u u N #.o.M.M.Q.H.n.2.n.t.}.H.Q.n.s.2.t.t.t.t.t.w.w.w.w.m.s.m.s.m.m.m.q.q.m.m.f.f.m.f.m.f.f.h.f.f.f.i.f.f.i.i.e.e.e.-.e.0.>.0.^.6.0.^.^.6.^.^.",
|
||||
"E.F.F.E.j.E.j.S.E.E.E.j.j.8.E.j.S.V.E.F.4.4.4.k.k.|.4.4.k.4.4._.4._._._.` _.4._.` F H ` H _.j.8+E+G+G+G+G+G+G+G+F+F+E+C+u+r+e+4+e+e+t+B+v+n.S.5+f+f+q+m+m+m+i+f+k+k+8+8+8+6+|+4+4+|+|+[+_+_+(+'+^+)+{+++$+++++++P.P.P.r.r.5.5.P P c c c ] ] % % % % % [ 0 [ 0 j 0 u u P #.o.M.M.Q.W.t.n.t.<.n.H.t.s.t.m.w.w.s.s.w.w.w.m.m.t.m.m.m.q.q.q.f.f.f.f.f.q.f.f.f.h.h.f.i.i.i.f.e.e.i.e.e.>.e.6.6.^.9.6.6.-.6.6.6.6.6.6.",
|
||||
"E.E.j.j.S.8.;+S.l.l.j.j.j.j.S.E.E.l.k.l._.8.4.k.k.k._.4.k.|.4._.4.4._._.|._.4._.` I F ` F _.j.!+B+E+G+G+G+G+F+G+F+F+E+r+e+3+^+6+|+|+c+s+r+n.=+f+y+h+i+q+q+c+c+f+h+4+8+8+6+7+(+|+4+^+^+[+^+)+^+)+{+++{+++#+#+P.r.r.d.d.~.P P c c % ) % % % % + & ) ) ) c 5 0 5 j u u N P r.M.Q.H.K.w.n.t.t.t.t.H.m.w.w.w.w.w.m.m.m.m.m.q.m.m.f.f.f.q.q.f.f.f.h.f.f.h.q.f.f.h.f.f.i.e.e.f.>.h.-.6.6.6.^.h.0.^.e.6.h.-.6.6.^.^.6.",
|
||||
"l.E.p.j.S.j.k.F.k.8.l.j.j.E.p.l.k.k.|._._._._.n.|._.4.k.k._.4._.k.` |._._._.|.` ` ` H ` F H _.E.m+E+F+G+G+F+G+F+F+E+D+d+ +=+0+m+0+^+'+c+h+-+-+6+m+i+k+f+f+c+0+c+h+c+8+c+7+|+|+|+^+^+^+3+^+{+{+++++#+#+r.r.d.5.~.P A c c ] ] ] ] ] ~ [ [ [ % % [ % ) 5 0 j j 0 j u N #.5.P.M.H.s.K.s.t.t.t.s.s.s.w.m.s.m.m.m.m.f.m.q.f.q.f.m.m.q.f.f.q.h.m.h.i.q.f.i.i.f.f.i.e.>.e.6.6.0.0.6.h.^.0.6.^.6.1.^.6.6.6.^.6.6.^.6.",
|
||||
"k.j.l.j.l.j.E.l.4.j.j.j.E.E.4.|.l.|._.8.4.4.k.k._._.j.k.k._.4._._.` _.|._._.|.` F I F _.` F H 4.[+x+E+z+G+F+F+F+E+E+C+v+-+!+o+x+i+4+>+^+0+|+W.^+i+h+c+c+0+8+0+8+c+8+6+b+7+7+^+|+^+{+{+++#+#+#+P.r.d.d.~.P A c c c ] ] % ] ] ] h h h c c 0 [ % % ) ) [ 0 0 u p j t u u N 5.M.M.H.s.H.s.w.w.s.w.T.w.w.m.q.f.q.q.f.q.f.q.f.q.f.h.h.h.f.f.q.f.f.q.i.i.i.e.0.e.6.e.e.0.>.6.^.6.-.0.^.0.^.0.6.6.0.0.^.-.h.6.-.6.6.^.",
|
||||
"E.k.j.k.j.k.l.k.k.j.l.j.E.l.|.4.4._.8.4.4.k._._._.k.k.4._._._._.` _._.|.|.|.` F ` H ` _.F H F 8.E.m+D+F+F+F+E+E+F+C+E+r+)+=+o+y+s+e+>+-+6+0+`.-+^+3+3+^+4+6+8+c+8+6+8+0+6+4+4+{+{+++#+#+r.r.d.~.P P c c ] ] > > ] ] l l d w w l l h ] c C g % % ) ) [ 0 j j j j u u N P 3.o.M.s.w.s.m.m.Q.m.m.m.m.m.q.q.q.q.q.q.h.q.f.q.m.f.m.m.q.q.i.i.i.h.f.e.e.e.5.e.e.^.6.6.^.i.>.e.e.6.e.0.>.6.h.-.h.^.6.6.6.6.6.6.-.6.6.",
|
||||
"k.E.l.l.j.S.k.4.l.4.4.k.l.4.4.j.4.|.4.j.4.4._._.4.E.n.|.F _._.` H _._.` |.` ` I F F ` ` I F F H j.5+x+E+F+F+E+C+C+C+B+r+^+=+6+q+p+k+$+F.^+6+^+-+-+>+>+!+|+|+8+4+c+6+|+6+|+3+#+#+#+P.5.d.~.P c c ] ] % % % ] ] d w w w w w w A c ] ^ [ [ A y ) @ & ) ) [ 5 j j j j u u K N 3.P.o.Q.m.s.Q.q.m.m.m.m.q.m.m.m.f.f.h.q.m.f.h.q.q.h.f.f.f.i.i.e.i.6.e.e.6.^.e.^.e.^.0.e.6.e.>.e.^.0.^.0.e.6.6.6.-.6.^.6.6.V h.6.6.-.6.",
|
||||
"E.l.l.j.j.F.l.j.k.4.k.F.|.8.j.k.k.k.|.4._.4.4.4.4.k.` ` ` ` _.F _.` I ` ` ` ` ` F F F F F F ` H _.S.m+D+E+E+E+B+A+B+B+o+c+^+-+c+p+h+Q.n.[+0+^+-+-+V.Z.'+|+6+|+|+4+4+6+^+4+:+#+r.d.P P c c ] ] ] % % > ] h P R Z Y R w C l ] _ ] ] ; % ] W j $ % % ) ) 0 0 j u t p u u N N 3.o.Q.M.m.m.m.w.q.q.m.m.m.m.m.f.f.q.f.f.h.f.o.i.f.i.i.i.h.i.e.e.6.e.6.0.0.6.6.6.0.e.0.:.0.^.e.0.0.0.e.^.^.6.-.6.9.^.6.-.6.^.:.^.6.6.6.",
|
||||
"k.k.l.|.j.k._.8.|._.k.E.|.4.k.k.|._._._._.4.4._.|.|.` ` ` _._.H ` ` F F ` ` ` F ` F F q F F H F _.j.[+x+D+C+u+r+y+y+s+p+h+4+`.^+3+{+n.k.(+f+4+^+!+=+!+(+|+|+|+|+^+|+|+|+4+#+r.P A ] % % ] + > ] h l n C C R R w d c ] ] > % % % ] % % c T g $ % ) ) 0 0 t 0 u j u u N N 3.o.s.Q.s.m.m.m.m.f.f.m.h.h.m.f.h.f.q.q.q.f.i.i.i.e.i.e.-.e.^.e.-.6.e.0.e.e.e.6.6.e.0.0.6.6.^.0.0.0.h.6.^.9.6.>.:.0.:.6.6.6.:.0.^.:.:.",
|
||||
"k.l.|.4.j.4.8.|._._.4.k.|.k.k.|.` _.` ` _.k._._.|.` ` ` H _.` ` ` F F ` _.` ` F ` F F H q q F F F _.S.f+v+r+g+y+y+x+s+s+p+e+`.-+>+`.E.Z.0+0+0+6+5+(+[+|+^+}+(+[+|+^+[+^+3+#+~.c ] % % $ ] h l w w w R h R C c ] ] > % > % ; % ] ] ) % c P c & % ) ) 0 0 0 j u p t u N K }.s.M.o.q.f.m.f.f.h.m.m.m.f.h.m.f.q.q.f.f.i.i.5.0.e.^.0.0.e.e.6.6.e.^.0.0.6.6.6.^.6.^.6.6.-.6.^.0.6.^.6.6.0.6.:.6.:.0.6.^.6.^.6.:.1.1.",
|
||||
"k.k.4.4.j.4.4._._.4.k.|._.|.|._._.` ` _.4.|._._._.` ` F _._._.` F F F ` |.I F ` F F I q q H q ` F ` |.)+e+4+m+x+t+t+t+s+m+e+-+=+Z.=+=+(+0+e+4+4+6+|+)+,+^+}+_+!+[+^+}+4+{+#+P ] ] ^ l n l T R R C l c ] c ] ) % % % & % % ; % % ] ~ ] A T c $ % ) ) 0 u p t j p t u N N 3.}.Q.s.s.h.f.h.m.h.f.q.f.q.q.q.i.i.i.i.i.e.e.e.0.e.^.e.6.0.0.0.0.0.0.0.0.0.e.e.0.0.0.e.6.e.6.6.^.6.6.^.6.6.6.:.6.:.^.1.1.:.1.:.^.^.:.",
|
||||
"4.j.4.j.8.k.|._.` 4.|.4._.` _.` _.+.` _._._.` |.` ` F H _._.` ` ` F F _.` F F F I F q q H q H F F ` |.n.n.!+o+o+s+y+m+p+i+0+|+!+[+[+[+8+c+{+{+)+^+3+>+V.!+^+_+^+~+^+^+^+)+++o.h n C w R w C l c c ] ] ] % ; % ] % % % % > % % ] % % ) A P C $ % % % ) 0 j j u t u u u N #.3.q.o.M.m.f.m.h.f.q.q.f.q.f.i.e.e.5.5.0.6.e.0.0.^.6.h.6.^.e.0.0.0.0.^.e.^.0.6.e.^.1.^.1.0.^.6.^.6.6.6.6.6.6.^.0.6.6.1.:.1.0.:.0.:.:.^.",
|
||||
"_.4.4.k.4.k.|.|.` 4.4._.` _._.` _.` ` _._._._._.` ` F _._._.` F F F ` ` I F F F F F q q q q H F q F ` +.2.=+f+o+m+q+o+k+c+c+0+6+6+4+)+4+4+$+Q.-+-+)+Q.H.-+!+_+'+~+^+)+)+)+++N.T w w C l ] h ] ] ] > % % % ) ) % ] % ) % > % % ] ] ) ] A T g % ) ) 0 u u j t u N N N #.3.}.s.o.m.f.q.q.q.q.i.e.e.e.e.5.1.1.d.1.6.6.e.0.0.6.e.0.6.e.6.6.e.e.6.0.e.0.0.0.e.0.0.1.0.^.e.^.6.^.:.^.6.:.^.6.^.^.6.^.:.^.^.:.^.:.^.",
|
||||
"|.|.|.|.|._._._.` _.j._.` _._.` _._.` _._.` ` ` F ` H _.` ` F F F F F ` I ` F F q q q H q q F q F F O O B |.^+f+h+i+k+h+c+0+0+6+c+3+>+)+6+-+<.n. +$+>+n.`.)+~+)+'+'+)+)+{+:+#+T n h ^ ) ; > ] > % % % % ; % % & ) ) % % % % % ] [ c P >.g & % % [ ) 0 u u t u u N N N #.3.o.M.Q.q.q.f.f.i.e.e.e.e.e.e.0.0.0.0.0.6.h.0.0.0.6.6.e.6.6.6.h.6.6.e.^.6.0.0.>.6.^.0.>.1.0.6.6.^.:.0.9.:.e.^.^.:.6.:.:.^.^.6.:.:.:.:.",
|
||||
"` |.k.|.|.` ` ` ` _.j._.` ` ` ` _.` ` ` ` ` |.` F ` _._.` ` F F F F F F ` ` q F q q q q F q q q q q s I 6 G V.6+0+f+c+c+4+6+5+|+4+$+n.>+)+>+n.<.W.W.$+n.H.>+>+>+>+ +{+>+>+++#+A ^ & $ ; & % % % % ~ & $ ) ) % @ = ) ; % % + % ] [ c A >.u % % % ) [ j u j t u N N N N K 3.s.T.M.T.f.i.i.i.e.e.^.6.9.e.0.0.e.e.e.6.h.6.6.6.h.6.h.-.0.1.e.6.6.e.e.6.0.^.e.e.6.6.6.0.1.^.6.6.^.6.^.:.6.6.^.(.^.^.9.^.:.^.6.^.1.:.",
|
||||
"_._.` |.|.` _.F ` _.k.|.` |.F H _._.` F ` ` I F F ` ` I I F F q F F F F _.F q q q q q q q q 7 e e e e v : { 2.-+c+8+6+6+6+|+4+6+4+)+n.W.)+>+t.2.n.H.Q.t.n. +,+ +W.$+>+ +>+#+#+A ) ) % % % ] % @ % ) = & & % ) & & ) ) % + % % % ] ] ] P P A c % % ) [ 0 t u u u u u N N #.3.q.M.T.o.e.e.>.0.0.0.0.1.0.0.e.e.6.6.6.h.6.6.h.e.6.6.6.6.0.1.0.0.e.0.6.-.6.6.6.6.^.^.^.0.>.0.^.6.6.^.:.:.:.:.:.6.:.6.!.6.^.:.^.:.:.^.",
|
||||
"_._.` |.` ` _.` ` 4.|.|._.` ` _.` F F H F I ` F ` I F F F F F F F F F F ` F q q F q b b s e e e i : e | : = v F.(+}+4+|+_+|+^+)+^+{+n.n.-+W.n.2.H.H.t.}.n.Q. +>+W.V.`.Q. +$+#+P ^ ) % & ) ) $ $ % ~ ) ) ) g { ) [ ) $ + + % % ] ] c P N c % % ) 0 u u u u u N N u N N 3.s.M.N.q.0.0.1.0.1.0.^.0.1.0.e.e.e.6.0.6.6.6.6.6.h.6.e.0.0.6.6.0.e.6.6.6.0.6.^.0.0.0.6.:.:.0.^.^.1.0.^.:.:.1.:.^.:.^.:.V 6.!.^.!.:.!.",
|
||||
"_.+.` |.` _.|._._.|.` ` ` ` ` ` ` F F I F I F ` I I F F F F q F q H F ` F F q q F s b b 4 i | : : - | 4 - @ 6 |.=+[+|+|+^+^+4+)+)+>+Q.n.Q.>+Q.n.H.H.Q.<.}.H.`.W.`.Q.W.W.W.++#+>.[ ~ ~ & & ) ) ; ) = } [ ) ) } g [ ] ) % % % c P P c + % ) c 0 u u u u u K K N #.3.M.P.P.0.e.0.0.e.0.0.0.e.0.h.6.0.6.1.0.e.e.0.e.e.6.e.6.0.0.0.^.6.6.e.-.e.^.1.1.:.^.6.^.6.0.^.6.6.^.:.[.1.^.6.:.[.:.:.:.^.6.:.^.!.^.:.",
|
||||
"_.` _.` ` _.|.` ` ` ` ` ` ` ` F ` H F F F F q F F F ` F q q q q F F F F q q 9 q s e | i : { : - ( | | e ( @ { v F.^+^+^+!+^+)+)+)+)+Q.<.H.W.H.<.H.H.n.<.2.n. +Q.W.W.W.H.H.M.#+5.] { ) ) $ ~ ] h ; ~ } 0 [ [ } 0 [ ) ; % + + & @ % % u N [ & ) [ p u u u u u K N N N 5.M.N.u.0.6.6.0.6.6.0.6.6.0.h.6.0.6.0.0.0.0.1.1.0.6.0.6.e.0.0.^.6.6.0.0.0.0.1.1.1.0.:.:.:.:.^.^.:.:.:.:.:.:.:.:.:.(.^.!.!.V :.(.:.:.:.",
|
||||
"` ` |.` ` |.|.F ` +.` ` F F ` F F F I F F F F ` F ` ` I q q q q q F q q b 9 b e i : : { { - - : ( | | e ( @ - 6 2.`.)+^+)+^+)+>+)+$+W.}.n.W.W.<.n.H.H.n.n.H.W.W.W.K.W.H.K.$+#+r.% { { g & } [ [ ~ [ [ [ ] [ [ ) ; ; + + + % % % % % % c N c % % ) 0 0 0 t K u u K N N #.3.P.u.5.0.e.6.6.0.e.0.1.6.6.0.e.e.e.x.6.6.0.1.d.0.0.6.>.0.0.0.6.6.0.1.^.6.^.6.1.^.^.0.:.1.^.9.(.:.:.:.:.:.(.^.:.^.!.:.^.^.!.:.(.R :.(.",
|
||||
"_.` _.` ` ` I I F ` ` ` ` F ` H F F F F F F F ` ` ` I F q 9 H q ` F b b 7 7 | : : { { - ) : , | | 4 4 7 | & @ { G n.,+)+>+>+-+>+>+$+H.n.n.n.W.o.n.W.H.n.n.t.Q.H.W.K.H.Q.K.*+*+P.) { } } = ) [ { { ~ ] [ % ] ; % ; + % % > ] % % c N c % ) 0 u u t t u K u K #.#.o.P.q.0.1.0.6.0.0.e.0.0.0.1.1.0.0.0.0.6.i.0.0.0.0.6.6.9.:.0.1.1.1.0.1.0.1.^.6.1.:.:.^.:.1.^.6.:.^.:.:.:.:.(.^.:.^.^.!.(.:.V ^.(.:.:.R ",
|
||||
"|.` +.I ` ` ` F ` I O ` ` F F q q F F F F F ` F ` I F q q q H _.` b 7 4 | ( : : ) ~ = = - - ( | 4 4 b e | = % = 6 2.W.-+>+>+Q.>+Q.W.W.n.<.F.V.n.t.H.H.w.H.H.H.Q.w.Q.T.K.T.$+P.u.g { a ~ ~ [ ~ ) & & % > + ; + % % % % % % % ] ] ] u P [ % % % 0 u u t K u N N K N #.o.o.i.e.0.1.1.6.0.0.6.0.1.1.0.0.0.0.6.6.6.1.1.6.6.6.6.0.0.~.[.~.1.:.0.^.6.6.:.9.^.6.:.1.(.:.:.0.:.6.^.9.(.:.:.(.(.:.:.:.:.:.R (.R :.:.",
|
||||
"|.` ` F I F I ` F F F I ` I q q F F F F F ` F F F F b q 9 F ` |.O e 7 | ( - = { { { - ( ( | | | 4 4 1 b | = & : O n.`.`.W. +W.W.W.W.H.n.Q.H.H.H.K.K.w.H.m.w.H.K.w.s.T.H.Q.M.P.y g ~ ) % ; $ $ ; + % & ; % + % % % % % ) ] % % [ N P ) ; % ) u u t K u K K K N #.3.P.o.5.6.0.d.1.6.6.0.6.6.0.0.0.0.6.6.6.6.6.6.1.0.0.9.6.1.0.1.[.~.1.6.6.6.:.^.:.g.:.6.^.^.1.^.^.:.(.(.:.!.6.!.^.:.!.:.:.T (.:.:.R (.:.:.",
|
||||
"` +.` ` ` ` I F F F F I F I F F F F F q F F F F F q q q q q ` I b | ( - - { = - = ( ( < | | | | | b b 8 7 { % & - e |.F.$+W.W.W. +H.K.H.t.Q.w.K.w.K.Q.w.T.t.w.q.T.t.T.s.s.M.o.N.A % ) $ ; ; % + + + @ % [ % > % % % % ) ) 0 0 [ [ [ 0 N u % % % ) t K B K K u K N K N 5.o.o.e.e.0.0.1.6.x.6.u.1.6.0.0.0.h.6.6.6.x.1.9.9.1.0.1.1.1.d.1.1.0.:.:.6.^.:.:.:.:.:.:.:.[.:.[.^.:.:.(.^.!.V !.6.T :.(.(.(.R :.(.R R !.",
|
||||
"F ` F ` ` ` I ` I I q F I F F ` F F q q F q q s F q q q q F s i | ( , { = { ~ ( : ( ( | | 8 7 7 e 4 b b 4 ( $ = 6 +.F.W.Q.W.Q.W.Q.H.H.H.Q.s.K.Q.w.w.K.m.s.w.s.q.m.m.s.T.s.o.N.u % + + + + + % [ 0 [ % % % % % [ 0 c c [ c c u W c + % % [ B K K K K K K N N #.5.o.5.6.0.0.6.6.0.0.9.0.0.6.1.u.0.6.6.6.1.9.0.1.[.1.:.1.1.1.1.1.1.1.^.:.0.^.0.^.:.6.:.:.:.:.^.(.^.:.:.R :.!.9.!.(.(.:.R (.(.R :.(.!.(.(.",
|
||||
"` ` ` I ` I F I F F F I F q F ` I F q q F q F s F q q F s e e | - - = ~ = { = ( ( : : | ! | 7 | | 7 7 4 b | = & & : S t.H.Q.W.Q.Q.H.K.m.s.s.m.T.m.T.w.q.T.q.q.T.m.q.q.q.Q.T.q.M.P + + $ % 0 c [ % % $ ) ) ) c c 0 c u N #.P % % % % 5 . .K K K K K N N #.o.N.e.0.6.e.0.0.6.0.e.6.6.6.6.6.6.6.6.6.6.6.9.[.1.[.1.1.1.1.0.~.1.:.1.0.:.0.:.(.:.:.^.^.:.^.(.:.:.!.:.^.!.:.(.(.:.:.(.:.R (.:.!.!.R (.!.",
|
||||
"` ` I I I I F F F q F I F F ` +.I I q F q q q s q q q I s e ( : = = = { = { = - ( ( ( | | | 4 7 | 7 7 7 7 e { & & : p <.K.H.W.Q.Q.s.H.w.w.s.m.w.m.T.m.m.w.m.m.q.q.m.m.q.m.H.s.++#.+ + % + ; % [ 0 c % ) ) [ { 0 [ [ 0 u N P P c % % @ } B }. .K .K #.#.5.P #.3.i.e.6.6.6.0.6.6.9.6.6.6.1.1.1.e.6.0.0.0.6.1.[.1.[.[.[.[.0.0.1.1.:.^.:.:.:.:.:.:.:.:.^.:.:.:.:.:.^.!.^.:.!.:.R :.R :.:.:.R :.V !.!.!.R ",
|
||||
"I ` F I I I F s F I I ` I F I I q F q q q b q q b q q I v | - { = { ~ ) $ $ & { - : ( ( | 7 | 7 1 7 b 1 9 | ( @ & = 6 O n.s.w.T.m.Q.q.q.T.q.Q.q.s.m.m.m.q.q.T.q.m.m.t.H. +Q.Q.$+5.% % % % ) [ % % [ [ [ ) ) [ } [ 0 u u u u N N N ) = : p ..}.o.}.#...#.K #.3.#.5.N.3.e.6.6.0.u.1.1.0.6.0.1.1.[.9.9.1.1.9.9.9.9.[.[.1.1.1.1.^.>.:.1.1.:.^.:.:.6.:.:.(.(.:.(.:.:.^.!.:.:.(.V !.(.:.R (.R !.(.R (.!.!.Y ,.!.",
|
||||
"I F F F I I F q F F I F F s F s q q q q 9 9 b b b q q I 6 : { ~ & ) ~ % ; + . % = - - ( < | 8 | 7 4 b 7 b 7 : = & = ( r <.w.w.w.m.T.w.m.m.q.q.T.m.m.m.q.m.m.m.w.K.K.%+>+{+&+$+#+r.; % % % % ] ] [ c [ [ [ [ c ) ) c 0 u u u P c u u 0 0 5 B G ..n.t.o.}.}.}.}. .#.#.#.5.i.e.6.6.0.1.1.5.1.1.1.1.1.0.1.9.9.:.1.:.1.0.6.(.[.1.:.1.1.:.:.1.:.(.[.[.(.:.:.:.:.[.(.:.!.^.(.:.:.:.:.(.(.!.!.(.(.(.R (.(.R ).).).R ,.,.",
|
||||
"I F F I I I F q F s F q q F q b q b q 9 9 q q b q q F e : } ) & % % ; . $ . & = - - < | 8 1 8 8 1 4 b | - @ & - r S t.w.m.w.m.m.m.q.q.q.m.h.T.m.w.m.K.@+@+ +]+ +$+++$+++#+u.% ] [ [ [ [ 0 c c [ u c [ [ c u u u u c N u u 0 t t M .}.}.<.o.M.t.3.}.}.}.}. .}.3.3.i.5.0.1.0.1.1.1.0.u.1.1.1.1.6.6.9.9.1.1.:.6.:.1.:.[.:.:.^.1.^.(.:.:.:.(.:.9.V ^.(.(.(.!.^.!.:.(.R :.(.R :.(.R (.!.!.(.R (.!.R (.Y ).Y Y ",
|
||||
"I F F I I F s q s F F q q q q q q e q 9 9 q q 9 q q s i : - ~ . + + ; + + @ @ @ = - ( < 4 4 4 1 1 4 b | - $ $ = ( M f.w.m.m.T.q.m.q.m.m.w.p.w.K.@+]+$+>+$+$+$+++{+++++++#+~.] [ c u c c c j 0 c t u 0 u u u u 0 0 u u u M .. .#.}.}.}.}.<.}.3.o.n.}.n.}.}.o.}.o.o.5.0.1.[.d.0.u.0.0.1.1.1.1.1.:.6.(.1.0.^.1.6.(.:.:.[.:.:.6.(.:.[.:.:.:.(.(.(.(.:.:.:.(.!.:.:.(.(.:.:.(.(.R (.!.R !.(.!.Y ).).Y ).).Y Z Y ",
|
||||
"I F F I s F F q q F F q q q e q q q q q 9 q q q b s i 6 } $ ; + + + . + + . + . . @ = - , | | ! 2 1 b 4 e : & @ @ : r +.m.m.m.m.K.m.m.w.w.@+@+<+&+&+$+>+++M.$+++M.P.++$+#+#+P [ 0 c [ u 0 0 c u u N u c 0 0 u 0 p B M }.}.}.<.}.}.}.}.}.3.}.}.}.3.o.t.M.M.++++M.M.o.e.e.1.1.1.0.1.0.0.1.[.1.[.6.6.:.0.1.[.1.(.(.9.[.[.(.(.:.:.:.[.:.:.:.^.^.(.(.(.R (.(.(.:.:.(.R (.(.R (.(.(.,.).).).R (.R ).Y R Y Z @.Y Z ",
|
||||
"I F F F F F e F q F q q q q s s q e 9 9 q 9 b 9 b e 5 } ~ + + + + + + @ @ - ! 4 4 7 4 7 | 7 | & & - 6 O h.m.q.q.T.K.@+@+@+<+&+$+ +&+++T.M.M.o.N.N.N.N.N.*+P.c ] 0 c 0 u u N u u u N 0 u 0 0 p G ....}.}.n.}.n.}.n.}.}.}.M.}.M.o.M.M.M.++++#+#+#+P.r.5.0.1.1.9.1.6.:.0.0.[.:.1.^.9.:.9.:.[.1.1.[.[.[.[.1.:.:.:.(.[.:.:.:.(.(.!.(.(.(.[.(.(.R (.(.(.R (.(.).!.R !.R ).).).).Y Y Y Z Y Y Z U Y ",
|
||||
"F I F s F q F q q q q q q q q q e q q b q b q b e 6 = ) + ; + + ; $ + + + + @ - , | 4 4 4 4 7 8 4 - @ @ & a r <.f.m.m.K.w.H.T. +&+&+T.N.o.q.o.N.o.u.o.u.u.u.P.P.r.c 0 c u K u N N u 0 0 c 0 j B S <.<.n.n.M.n.t.n.M.n.}.M.}.M.n.M.M.M.++$+++++#+#+#+#+u.0.[.1.6.0.[.9.:.1.1.:.1.1.:.1.:.6.0.1.:.(.(.(.[.[.:.(.:.:.:.(.(.(.:.:.(.!.:.(.[.(.(.(.(.).!.(.(.!.(.R (.(.(.).).Y ).Z Z ).Y ).Y Y U U Y U ",
|
||||
"I F q F q e q q s q 9 q q b e q b b b 9 9 9 b 7 | { % % + + + + + + + . + + . @ - , | | 4 8 4 8 | - @ = & - r ..q.q.q.T.T.Q.T.N.M.q.q.i.i.u.e.e.i.h.i.u.u.u.N.N.3.c N N u u P c c 0 [ j B .}.<.<.t.}.n.n.t.}.M.}.M.H.t.M.M.M.++++++++#+++#+#+#+#+#+r.r.0.1.0.6.6.:.9.9.[.1.0.:.1.:.1.(.:.^.1.:.(.(.:.:.(.1.(.:.(.:.(.(.(.(.!.:.(.:.(.(.(.(.(.(.!.(.!.(.!.).).).Y !.Y ).Y ).Z X Z X Y U Y U U U Y ",
|
||||
"I I q q q q s q s s b b q b q b b q 9 q 9 9 b e { % + + + + + . + + + @ @ - - < 4 | 4 1 2 8 | = @ @ ( r +.w.m.s.s.s.q.o.q.i.i.i.i.x.h.e.x.h.x.h.e.0.0.o.u.5.P P u N c c c 0 j B +.<.<.t.t.n.M.n.}.t.}.n.n.n.n.M.M.++++++++#+#+#+#+#+#+#+P.r.r.u.1.1.0.6.:.6.9.[.:.0.:.^.0.:.9.(.1.:.[.:.[.).[.(.:.:.[.:.(.:.(.(.(.:.:.:.!.!.!.(.R (.!.R (.!.R ).).).(.R ).).).Y Z Z X Y z Y Y U Z Q w '.U Z ",
|
||||
"I q s q q q q F q q b 4 b b q b b q b b b 9 4 | ) + + + + + . @ + + + . + + + . @ - , ! | 7 8 1 8 | - @ @ - i +.m.q.f.q.q.h.q.e.h.h.i.i.0.u.e.u.i.6.h.u.x.6.i.P.5.A A c c [ 6 B G ..<.n.n.t.t.o.}.}.n.t.n.n.H.H.M.W.++++++#+#+#+#+P.r.r.u.u.u.u.u.1.1.1.1.1.6.6.^.:.[.[.:.:.:.1.1.1.(.9.:.[.[.[.[.(.(.(.~.).[.(.(.(.!.(.(.!.R (.:.!.(.!.(.(.).).).(.R ).Y ).Z Z Z Z Z Z Z X Z U U Y Y Z X U Y U Z ",
|
||||
"q q q q q q q s e q b 9 q b b q b 9 q 9 1 1 | : & + + + + + + + + . % % . . + + @ @ - , | 4 4 8 4 4 | - @ $ - a +.m.q.h.h.q.h.x.h.i.i.x.h.h.i.5.0.e.u.e.e.e.u.i.r.d.c [ 0 p K ..<.<.<.M.s.t.H.Q.n.n.n.o.M.M.++M.M.++++#+#+#+P.P.r..+u.u.[.d.u.d.[.1.0.6.1.:.[.:.:.6.6.^.:.1.1.1.1.[.[.[.(.(.:.[.(.(.(.(.(.(.[.(.(.(.(.(.).!.(.(.(.!.(.!.R (.).!.(.).).).Y ).Z ).Z X Z Z z Y Z Z X U X U Z U '.U Y U ",
|
||||
"q q q b q q q q q b 9 q q q b q b b b 9 1 1 | ) @ + + . . @ & + + + . @ . , , | 4 4 4 1 e ( - - ( v 2.m.q.x.q.i.e.u.h.i.e.e.h.h.i.e.e.e.u.e.6.h.i.P.5.0 u M .}.}.t.n.t.t.t.n.H.M.M.H.++W.++++$+++++P.P.P.r.u.r.u.e.1.1.1.0.[.[.[.d.9.6.6.0.0.^.1.:.1.6.9.:.[.[.[.^.(.(.(.:.(.:.(.[.(.(.(.(.(.(.).~.(.(.(.!.(.!.!.!.(.(.(.!.(.).).Y Y Z Z Z Y U Z Z E Z z Z Y Z z Z U Z U Z U Y U Y Y ",
|
||||
"q 9 b q q q q q 9 q 9 b s q b q b q b b 1 | : @ + . . . + + . . $ + . + + . @ @ - , | | 7 4 | 8 | = @ & < r +.q.q.q.u.i.u.i.u.e.x.e.e.h.x.u.i.i.h.u.e.u.u.N.3.#.}.}.}.}.t.t.}.t.M.H.M.H.W.M.++++++++#+#+P.P.r.r.u.u.1.6.0.0.0.1.[.[.1.1.1.[.6.^.9.(.[.[.[.[.:.:.:.9.(.[.:.1.1.1.[.(.:.:.(.(.(.(.(.:.(.(.(.(.R (.!.(.,.R (.).).R (.!.Y ).Y ).).Z Z Z z Z Y Y Y Y Z z Z Z @.Z Z Y Z Z Y Z Z Z Z ",
|
||||
"q q 9 q b b q b b b b q q b 9 b b 9 9 1 7 | ) @ + @ + + . . . + . @ , | 4 4 1 | 4 4 ( @ @ ( a ..N.e.h.h.i.u.i.h.i.e.u.e.i.h.h.h.x.e.i.6.e.5.N.f.}.n.}.t.M.o.M.M.t.M.++$+>+++++++#+#+P.M.u.u.u.0.1.[.1.1.9.1.1.9.1.1.[.1.1.1.:.1.0.:.:.9.:.1.1.1.^.(.:.:.:.(.:.(.:.(.:.:.:.(.(.:.(.(.(.(.(.(.(.(.(.,.(.,.!.!.,.'.,.).Y Y Z Y Y Y Y Z Z Y Z z Z z Y Y Y U Y Z U X U U U Y Y Y Y Y ",
|
||||
"q b q b q b b b q b b b q b q 9 9 1 1 b | : @ + . + + + . . % + + . + . @ @ - | | 8 | 8 8 | ( = = = ( ..o.q.q.h.i.i.x.i.e.u.e.e.6.h.i.h.i.6.x.6.e.i.N.s.t.n.M.M.M.++M.$+++++{+#+++++#+#+P.o.P.d.u.0.0.1.[.[.1.9.1.9.6.9.9.1.1.[.[.1.1.1.(.9.g.:.:.[.(.(.[.:.9.:.:.9.9.(.(.:.:.!.(.(.(.!.!.).!.(.(.(.(.!.!.(.).(.).!.!.,.,.Y Y Z Z X Z U Y Y z Z Z Z Y Z Z U U U X Z U Z Z '.Y Y Y Z U Z ",
|
||||
"q q q b b 9 b 1 1 1 1 b b b 1 1 1 1 1 b | ) @ + ; + + . . . . + + + + . . - , 4 1 | | 8 4 < = @ = ( S q.h.i.h.h.i.0.x.h.x.e.i.e.x.e.6.x.i.h.x.6.u.N.o.M.M.$+{+++++++++++:+#+++#+#+r.r.u.0.0.1.u.1.d.1.1.[.[.1.1.9.6.6.6.9.1.1.:.1.:.1.[.:.:.(.:.:.:.:.[.(.(.!.(.:.!.(.(.:.:.:.(.[.[.(.(.(.(.!.(.!.(.(.!.,.).).Y Y Y Y ).Z Y Y Y Z Y Z z Y Y z Y z Y Y Y Z U Z X Z Y Y Y Y Y Z Z Y Y Y ",
|
||||
"b q e q b b b b 1 1 1 1 9 9 b b b 1 b 4 | - - } % @ + . . . ; + + + @ @ - ( | | 7 4 8 | | = % = ( O s.q.h.i.f.u.i.e.e.h.i.h.i.e.u.e.e.6.6.h.e.e.o.++++{+d+:+d+:+:+:+#+#+#+P.P.d.u.u.1.0.0.1.1.0.[.d.[.1.1.9.:.:.1.:.9.6.1.:.1.:.1.:.:.:.(.1.:.:.9.[.(.[.(.(.9.!.!.(.9.!.:.(.(.(.(.(.(.).!.!.(.!.!.,.,.,.Y ).Y Y Y Y Z Y Y Y Z z Y Y Y Y Y Y Z Y Z Z Z Z X Z Y Y Y '.Y Y U Y Y Z U '.",
|
||||
"9 q b b b b b 1 1 b 1 b b 1 9 1 1 1 1 7 | b _.s.>.) % ; + + . + . . + . % + + + . . - , 4 4 | 4 8 4 | - % & ( i m.q.h.h.q.h.i.e.u.h.e.x.i.6.u.6.x.e.6.h.h.e.o.++:+d+++{+++++#+#+P.r.u.u.0.1.[.1.0.9.0.1.1.1.1.0.1.1.1.1.9.9.0.:.:.:.9.[.[.(.1.[.1.:.(.[.:.:.:.[.[.(.(.(.(.9.!.!.9.!.:.(.(.(.(.!.(.).).).).).Y ,.Y Y '.Z Y Y Z Z X Y Y Z Z Z Z X Z X Z Y U Z Z Z U Y Z Z Y Y Y U U '.Y Y Y ).Y Y ",
|
||||
"9 9 9 q b q b b b b b 1 b 9 1 9 9 1 1 7 7 H j+z+d.h % % . . . + . . + . + + + + . @ @ - | | 4 | 4 4 | - @ & ( i <.q.h.h.x.i.h.e.h.u.h.i.h.i.e.e.e.i.u.6.6.u.o.#+#+d+#+:+#+P.P.r.u.1.0.0.u.0.0.1.9.9.6.0.9.6.9.^.0.1.[.[.:.9.(.6.1.1.:.:.(.1.:.:.(.9.9.:.9.(.(.:.:.9.9.(.:.(.(.:.:.!.(.(.(.(.!.!.(.R (.Y ).Y Y Y Y X U U U z Z Z z Z Z Z X X z Y Z Y Y Y Y Z Y Y Y Z Y Z Z Z Z Z Y Y Y '.'.Y Z Y ",
|
||||
"b b b 7 1 1 9 b 1 e b 4 1 1 9 9 1 1 b 4 b E.A+:+).c ^ ; + + . + + + + . @ @ + . . . @ - 4 4 1 | 8 8 i { @ & - k f.q.q.f.e.u.x.u.i.e.6.u.h.h.x.6.6.h.0.u.e.e.i.P.#+#+++#+P.u.0.1.u.e.6.6.0.[.[.1.0.1.6.^.6.6.1.:.0.0.6.1.[.9.[.(.:.:.[.9.:.[.[.9.(.(.(.(.:.(.(.g.:.(.9.(.(.(.!.!.!.(.(.!.).!.).,.).).Y Z X Z Z Z Y Z U Y Z Z Z Z Z Z w Z Z X Z Y Z Z Z Z Y Z Y Y Y Y Y Y Z Z X Y '.Y Y Y Y Y ).Z ",
|
||||
"b b b b 1 9 9 b b b b 1 1 2 2 9 2 2 b 8 s ]+z+d.c h h + # + + . @ + + . @ . @ @ , | b 7 | 8 8 8 ( @ = ( a .q.e.h.h.e.i.h.e.x.h.i.u.e.i.i.e.u.0.0.e.u.i.N.P.#+P.5.u.1.u.0.0.1.e.0.0.0.1.0.0.1.[.1.:.^.6.1.:.0.1.[.[.[.(.g.:.g.(.(.(.[.(.(.(.[.~.).[.(.(.(.(.9.!.!.(.(.:.(.(.!.).).).).Y Z Z Z Z Z Z X X U X Z Z X X Z Y Z Z Z Z Z Y Z Z z Y Y Y Y Z R Y Y Y Y Y Z ).Z Z Z U Y '.Y '.,.X '.",
|
||||
"b b b b b b 1 1 b 9 9 2 1 9 2 2 9 2 7 | i t.P.~.T C ] ] + + + + + + + + + @ . + @ @ @ - | e s | < | | : @ @ - a .q.u.e.h.e.e.i.i.i.h.h.e.e.x.e.1.e.e.u.e.e.e.i.o.i.u.e.e.5.1.0.0.1.6.9.1.1.1.1.0.0.[.~.[.:.:.1.:.9.1.:.:.(.9.(.6.:.:.[.[.[.[.[.:.(.[.(.).[.(.(.(.(.(.).).).(.).).Y ).Y Z Z Z Z Z Z Z X Z Z X Z Z Z Y Z X Z Y Z Y Y Z Z Y Z X Z Y Y Y Y Z Y Y Y Y Y Y Z Z X Z Z '.Y '.Y U '.X Z ",
|
||||
"b b b 1 b q 9 b 1 1 9 2 1 9 2 2 1 4 4 6 : M o.r.1.T ] ; + + . + . + + . @ - | e e | | 8 | 6 & & - i S q.i.h.i.h.h.e.6.x.6.i.i.i.e.u.u.e.e.0.0.0.e.u.u.i.u.6.u.[.1.6.0.1.1.1.1.1.1.0.1.1.1.[.1.1.0.6.(.6.:.1.:.g.(.9.(.:.[.:.[.(.[.(.:.(.[.).[.).g.).).g.(.(.).).$.).Y ,.U Z @.@.Z U Z Z X Z Z X Z U Y Y Z Z Y Y D R Y Z Z Y Z Z Z Z Z Y Z Z Z Z Y Y Y Z Y Z Z Z X Z Y '.Z U '.=.Z =.",
|
||||
"b b 1 b b 1 1 b b b 2 2 9 2 9 2 1 4 4 : : +.X.r.d.T ] + + + + . + . + + + + + + + + @ @ @ , | i | | | | | : & ; = 6 S f.i.h.i.u.h.u.e.e.6.h.6.e.e.0.6.e.e.u.e.0.0.0.0.0.0.9.0.1.1.1.1.1.1.1.1.1.6.9.1.[.1.:.[.(.(.6.[.(.(.9.:.[.[.:.(.[.(.(.(.(.(.(.:.!.[.[.(.).).).).)./.).).Z @.@.Z Y ,.Z Z Z Y Z X Z X Z Z X Z Z Z Z Z Z Y Y Y U Y Y Z Y Y Z X Z Y Y Z Z Z Z ).Y Y X Y Y ,.Y =.U Z '.=.Q U =.'.'.",
|
||||
"b b 1 1 9 1 9 1 b 1 1 1 9 2 1 1 4 1 | ( ( <.N.r.[.c ] + . . + % % @ @ @ @ - , | | a < | | 6 & ) k ..m.h.u.h.i.u.e.e.x.e.e.6.6.0.h.h.h.e.0.0.0.6.0.0.6.6.0.1.1.1.1.1.[.[.g.6.9.:.^.9.1.(.1.:.:.1.(.(.[.9.:.[.[.[.(.[.(.(.(.(.(.[.(.[.(.(.).).).).).$.@.Z X @.Z Z Z Y Z U Z X Z X U Z Z Z Z Z Z Z Z Z Z Y Y Z Y Z Y Y Y Z Y Y ).Z Y Y Z Z ).Y Z Z Z Z Y Y $.Z =.'.=.@.*.=.*.*.U &.=.",
|
||||
"7 1 1 1 9 9 1 b 1 7 1 1 1 1 1 1 4 1 | - = M 3.>.A ] + + + + + + . @ & % + + . . @ @ = - , | | | 6 | | 8 | - @ = 6 .f.f.u.u.e.u.e.e.e.0.e.x.e.0.6.h.6.e.0.e.e.6.6.e.0.6.0.0.0.1.1.0.1.1.[.0.1.:.:.:.9.(.0.:.(.1.:.(.[.[.(.(.[.(.(.(.[.(.(.).!.).,.).).).).Y ).Z @.$.@.@.@.Z Z Y Z Y Z Z X X X Z Z Z Z Z Z Y Y Z Z Z Z Y Y Z Y Z Z Z Y Z Y Y Y Z Z Y Y Z Y Y ).Z Y ,.Y Y Z Z X Z =.Z *.Z &.&.=.&.*.",
|
||||
"4 1 2 1 2 1 1 4 1 1 4 1 1 1 4 4 b b a & @ [ c c ] > + + + + + + . + + . @ ~ @ % + @ @ & $ @ = - , | | | | < < | ( - @ = 6 ..f.i.i.i.u.e.i.x.x.6.0.e.h.h.h.x.0.0.e.0.6.6.6.6.1.0.0.6.6.1.1.1.1.1.:.1.:.g.:.[.1.9.:.9.9.(.[.(.(.(.(.(.[.).(.).(.).).).).).Y ).Z Z Y Y Z Z Z X @.@.Z Z Z Z Z Z X X X Z Z @.X X Z Z Y Y Y Z Z Y Y Z Z Y Y Z Z Z X Y Y Y Y ,.Y ).Y ).Z Y X Z Z Y Z Y '.=.Z X =.=.=.=.*.=.&.*.*.",
|
||||
"1 4 1 1 1 1 b 1 1 1 1 1 7 1 b 1 1 4 | & @ ; ; + + + @ { ~ $ + . = = = @ @ - , 4 | 8 | < | | 7 a - @ @ a S f.i.x.i.0.0.e.e.e.h.e.0.0.6.6.h.e.0.6.0.6.0.1.1.1.1.1.1.1.1.1.:.1.1.:.1.:.:.:.(.[.(.(.:.!.:.1.(.).(.).).).).).$.).).Y Y Y Y Z X X X w Z X Z Z X Z X Z Z Z Z Z Z X X X X @.X Z X Z Y Z ).Y Z Z Z Z Z Z Z Y Z Z Z Z Y ).Y Y ).Y ).Y Y Y ).Z ).=.Y $.Z Z $.=.X *.Q *.@.=.=.&.Q &.",
|
||||
"1 1 7 1 b 4 4 1 4 1 4 1 4 1 1 1 1 b 6 ) + + + . + $ ) % @ . = - - & = = , | 4 < ! | < | < | ( @ $ ( O 3.q.i.e.e.e.e.0.6.0.x.0.e.0.e.0.6.6.h.6.e.0.1.1.1.1.1.1.1.9.^.1.:.:.9.[.[.[.[.g.!.9.!.!.(.(.).).).$.).).).).$.Z @.X Z Z X Z Z Z Z Z X w Z X @.Z X Z Z X @.$.X @.Z X X @.X Z @.Z Z Z Y Z Z Z Z ).Y Z Z Y ,.Y @.Z ,.Z X $.Y Y Y Y Y R ).Z Z Z Y $.Y Y Z *.=.$.$.*.*.&.=.Q *.&.*.",
|
||||
"4 | 7 e 4 e 1 4 4 4 4 1 2 2 1 1 1 1 i % . + + + % ) ; + + @ @ - - - - - - , | | i < ! a | < | ( @ % { r f.f.h.h.e.0.u.0.6.e.e.0.0.0.0.e.e.6.h.6.6.0.1.1.[.1.1.^.:.1.1.9.9.(.[.[.[.(.(.(.!.(.(.,.).).).).).Z Z @.X Y @.X @.X Z Z X Z Z @.Z Z Z X Z @.X X X Z Z Z X X @.X Z @.U Y Z Y Z Y Y Y Z Z Z @.Z Z Z ).@.Y =.Z Z Z ,.Y Z $.Z Z Y ).Z Z Y ).Z $.Z @.$.=.Z *.*.*.*.*.*.&.=.=.%.Q &.",
|
||||
"1 4 4 | e | 1 1 1 4 1 2 2 1 1 8 4 4 i = + . + @ & % @ @ - - - - @ - , 8 4 | | | < | ( | | ( @ @ ( t .i.e.e.h.e.1.u.e.6.6.6.0.0.0.6.6.0.6.6.:.6.6.1.1.[.(.1.1.[.(.(.[.).[.).).(.).,./.$./.).$.Z X X @.X X @.X X @.@.X @.@.Z Z @.X Z X Z Z Z X X X Z Z X X Z Z Z Z =.Z Z Y '.'.Z Z $.Z Z Z @.Z Z Z Z Z X Z @.X '.'.U '.'.$.Z Y ).Z Y ).Y Z Z Z Z Z $.Z $.Z ,.*.*.*.%.*.=.*.Q X X z ",
|
||||
"4 1 7 4 e ! 1 1 1 4 ! 1 1 ! 4 4 1 b | { & . + @ = & - , , - , - - ( | 4 8 < ( | | ( a < a ( = j -.f.e.0.e.e.0.0.e.6.6.0.0.0.0.6.0.1.0.0.9.0.6.:.(.1.g.(.:.(.).).).).).)./.).).$.$.@.*.@.@.Z @.X @.@.X @.%.%.X @.X X @.@.Z Z X Z X @.X Z @.@.X Z Z Z X Z Z Z Y Z Z '.Y U '.Y Z Z Z $.Z Z ).Z Z Z ).,.Z =.@.Z ).Y Y Y ).Y Y ).).Y $.).Y Y Z =.Z @.$.$.*.=.*.*.&.*.&.Q *.Q z m f ",
|
||||
"1 1 1 4 4 1 1 4 1 4 1 1 2 1 4 4 7 1 e : ) + + . = & @ @ . . - ( < | , , , , | 4 | 4 | | ( < | < a | ( = & 6 M h.e.0.0.e.e.6.6.1.e.6.0.0.6.0.1.1.9.:.1.:.[.[.g.).(.(.).).).).@.%.].=.$.@.X @.X X @.@.*.@.@.X Z Z Z X X Z %.@.X @.%.X %.@.Z Z @.X @.X Z X Z *.=.Z Z Z Y Y Z Z '.Z Z Z Y Y Z Z Z Z ).Z Z $./.Z Z Y '.'.Z @.X Z U '.Z ).).Y '.=.$.U Z =.=.=.@.%.%.=.=.=.*.*.*.*.*.U z w f / * ",
|
||||
"1 1 1 1 b 1 1 1 4 4 1 2 2 8 1 1 8 1 b e : @ + + @ $ $ % = $ @ @ @ - , | | | | , , ! 7 4 | | ( ( a ( | ( < a ( & $ $ [ B h.e.6.6.0.0.0.0.1.0.0.0.1.1.[.[.[.[.(.[.(.(.(.)./.$.).).].@.@.@.%.*.&.=.X X @.*.X *.X X X %.X @.X $.@.%.@.X @.@.X %.@.X %.@.@.X @.@.Z Z Z Z X Z X @.Z '.'.Z Z Y Z $.X $.@.Z ,.Y @.Z /.Z Z $.$.$.'.U '.Y ,.$.$.Z =.Z Y ,.Z ,.Y @.@.Z =.*.=.@.@.*.*.*.].%.*.=.U z w d _ / * # ",
|
||||
"4 1 1 7 1 1 1 4 7 4 1 1 4 1 9 2 9 9 7 e k { . @ @ & @ $ & ) & - | e v e | | : | 4 e e 7 | ( < 6 ( ( } a < | ( ) % % : y e.0.0.0.6.e.6.9.9.9.[.[.1.[.[.(.[.).(.).,.$.@.$.$.$.%.%.%.@.%.%.%.@.=.=.=.*.Q Z @.X @.@.@.X %.%.%.&.*.@.X @.X X @.%.%.@.@.X @.@.X Z X Z $.U *.*.@.Z Z Z Z Z Z Z Z Z ,.Z Z Y R Y Y Z ).,.$.Y Z '.X =.*.=.Z Z '.=.Z $.$.=.$.=.=.=.X *.=.@.&.&.&.*.=.=.U *.Z z w f _ ' # # # * ",
|
||||
"4 4 4 4 1 4 4 4 1 7 4 1 4 7 1 9 8 7 e e e | | 6 { % % % % $ @ & = : 5 = - , O O O i | i : 4 b 7 e 4 | | | : 6 a : : < a < ~ ) ] } y -.0.0.0.1.[.1.1.1.[.[.(.(.(.).).).Z @.@.@.@.%.X @.=.%.*.*.*.].%.;.%.*.*.$.$.@.U $.*.X X @.@.X X %.X U *.*.$.@.X @.X X X X @.X %.@.@.@.=.X $.X X X $.Z Z Z X @.X Z Z Y Y $.$.Y ,.Y Z Z '.@.$.X =.*.X *.=.=.X '.=.Z Z $.X $.U ,.=.*.&.&.@.=.*.*.=.U '.U w w f _ ' * * * + # * ",
|
||||
"4 7 b | 1 7 4 1 4 4 1 7 4 4 1 b b b 7 e i i i p } { { ) = = - ( : 6 6 i e v S G G v i | 7 e s 7 7 | | ( ( ( ( < < < | < } [ l h g W >.1.9.[.[.[.[.(.).).).)./.$./.@.$.$.].%.*.Q *.;.*.*.%.%.*.*.&.*.%.%.$.=.=.$.U $.U Z @.@.@.X $.@.@.$.=.=.=.X X %.X %.%.%.@.@.X @.X @.@.X $.Z U =.=.'.Y $.=.$.Z $.$.Y ,.Z Y Y ,.Y Z '.'.Z Z @.$.@.$.*.$.@.X $.Z =.=.$.@.@.%.@.X *.=.=.&.*.*.Z Q U '.x f f _ ' * * * . # * ' ' ",
|
||||
"4 7 4 7 7 4 e 4 7 7 b 8 4 7 8 b 8 8 b 7 e e v v 6 5 i 6 : - : 6 6 i e v e v O v v v e | 7 e s | | < ( ( 6 : : a ( a | | } h C w R R !.!.!.)././.).).,.$.@.Z Z @.@.%.%.X @.@.@.;.%.;.X *.*.X X @.*.*.*.@.*.*.*.X *.*.Z *.X @.$.X $.@.*.*.*.*.*.@.@.%.%.X X X @.@.@.@.X =.Y Z @.@.X X Z Z Z X *.X $.Z $.Y ).Z $.Z $.).Y Y $.=.Z @.*.@.*.*.@.$.Z =.$.*.=.=.*.*.%.@.@.@.&.*.*.*.@.Z U z w f / * * * * * * * * ' _ 3 ",
|
||||
"1 7 1 7 1 4 4 7 4 7 7 4 4 8 4 7 b b e 7 e e e e i v G 6 i i i k v s v s s v v v e e e e 7 s e i < ( ( ( ( ( : ( | < ( a g h R '.Y !.Y ,.,.).@.@.%.].%.@.@.@.%.@.$.X X *.%.;.%.X *.X *.X Z *.@.@.%.X %.@.X X @.*.*.X *.X *.@.@.=.Z Z @.@.*.@.$.=.Z @.%.%.@.%.@.@.Z Z @.Z $.$.Z @.Z $.Y '.Z X =.Z Z Z Z Z =.,.Z @.Z @.$.Y Z Z @.@.@.*.*.@.$.@.$.*.=.=.*.*.*.%.;.*.*.@.X $.X U Y w w f / * * * + + * * ' _ _ _ f f ",
|
||||
"7 4 4 7 4 1 4 4 7 b b 7 7 7 4 7 7 b b e b 7 e s e s O v e v v s i s e s I s e q s I s e e e | | < | : ( a ( : ( < | < ( 6 C R =.Z Y =.=.@.@.%.@.%.].@.$.X Z $.X =.].%.X @.*.;.X *.X X X X U *.Z %.%.;.%.*.*.*.X =.X *.*.*.@.@.*.$.Z X %.X @.@.$.@.@.$.Z @.%.X @.@.U =.Z Z X @.%.@.X U =.Z @.@.$.$.$.$.Y '.=.Z ).Z @.).Z $.Z *.X @.@.=.*.X *.$.=.*.$.@.@.*.%.;.%.*.@.X X Z z w l ' _ * * # * * * * _ _ f f f o x ",
|
||||
"7 4 4 7 4 4 1 4 4 7 | 4 e | e 7 9 b 4 b 4 7 q b q s s s s F s v v e v I I v I s v v s e | | : : | : ( | ( { ( ( ( < | | a g R Y Y $.$.@.%.%.%.%.@.%.X X @.@.@.=.*.*.*.*.&.X @.*.Q *.E X $.@.@.@.@.X %.%.@.@.@.*.*.$.=.=.@.*.=.$.*.=.$.@.@.@.=.*.@.*.@.].Z *.*.@.Z $.*.$.$.Z X Z Z '.,.U '.Z Z $.Y Y Z '.=.Z Z Z Z X @.).,.=.Z @.%.%.Q =.*.=.&.*.*.*.=.*.%.;.%.*.Z Z X z d d _ ' > # * + * * * * _ _ 3 f o x D D ",
|
||||
"4 4 4 7 4 7 7 7 b b 7 4 e 7 7 7 b b e 7 4 b 7 1 b b e s v s q I s s v I v I e s s s v i ( | ( ( | ( ( ( < ( a ( < ( ( ( a 5 V $.$.Z ,.$.@.@.%.%.*.$.%.X @.=.*.@.*.X ;.X *.*.%.X X U D X X %.@.@.@.@.X %.*.*.*.@.*.=.=.=.$.@.=.Z ].@.*.].*.=.*.=.@.*.@.*.$.X =.=.=.Y '.,.,.Z $.Z X Z ,.Z '.Z $.Y '.Y $.'.U ,.@./.).Z @.X Z $.$.$.Q *.*.*.@.=.*.@.*.*.@.@.@.X X Q Y w w d _ ' * # * * * * * / _ 3 f o o o E x &.Q ",
|
||||
"4 4 4 b 4 4 7 7 7 7 4 7 b 7 4 b b 7 7 7 7 7 7 7 b b b e e s e q F s s s e v s e e e 6 | : ( ( ( ( ( : ( ( ( < < ( < | a a g T Y Z $.X $.$.%.%.@.$.Q X %.X *.X *.*.;.%.%.*.%.X @.@.z Z X @.X X =.@.@.@.@.@.].@.@.$.@.@.@.@.*.*.*.@.].@.$.'.=.=.=.=.%.*.'.$.$.X =.'.=.Z Z Z ,.Y ,.Y =.X Z Z @.Z $.Z $.Z Y Y @.Z Z Z Y ,.$.$.=.*.=.=.@.*.%.*.*.*.;.%.;.;.%.X X Q z f d 3 ' > * . * # # * / _ _ f f o o E E E ;.Q {.",
|
||||
"7 4 4 4 b 4 7 7 4 b b 4 7 7 4 7 7 b e 7 7 4 4 b 4 b 4 b b q 7 q s s s e e e e | | | ( | : ( ( < ( ( : : ( { : : : ( ( < | a C ).$.$.%.X @.%.%.X =.@.*.*.@.@.@.*.%.X *.Z %.%.X Q X X X X *.$.@.X @.%.@.].@.*.=.*.@.].@.@.@.=.$.%.%.@.@.%.=.=.=.=.=.$.@.=.$.$.$.Z $.=.@.@.X $.Z $.U =.$.@.Z ,.Z $.Z Y =.$.Y $.$.$./.Z $.$.X $.*.X *.@.*.*.*.*.&.*.*.=.Q X X z w d _ > > + > * * * * / _ f f f o x D E E Q {.{.;.;.",
|
||||
"7 7 4 b 4 7 7 7 7 7 7 7 4 7 7 7 7 7 7 | 4 4 4 4 | 4 4 4 7 b b e e q e e 7 | | | | ( : : ( : : a ( ( : ( ( ( : ( : ( < | a a C Y Z @.*.;.*.=.X =.X *.@.*.%.*.*.X %.%.X *.X Q &.X D Z X X $.$.@.%.%.@.*.@.=.$.].$.*.@.@.@.$.@.].*.@.@.].*.*.*.*.*.*.@.$./.$.$.$.@.=.$.Z $.$.X $.U $.Z X Z '.Z '.Z $.@.$.Y $.Y Z ).Y ,.Z @.=.*.@.*.@.*.%.;.;.;.%.*.X U U z w d _ ' > + * * * * * _ _ _ f f o x E D Q E {.{.E ;.{.{.",
|
||||
"4 4 7 b 4 7 7 4 7 7 7 e 7 7 7 7 7 b 7 | 4 4 4 4 4 7 | 7 4 7 7 4 | e | | | | : : | , ( ( ( ( } : } ( ( ( : ( ( < ( ( < < < a C R $.Z *.*.%.*.$.$.X =.=.*.;.%.*.*.%.%.@.*.%.X X $.X X X X Q /.$.%.%.@.*.=.$.'.=.$.$.$.$.@.=.@.@.].].].].%././.].].]./.=.=.%.@.$.$.*.$.@.Z $.X @.=.=.$.Z @.Z X =.Z =.$.@.$.$.$.Z ,.Y $.=.@.*.&.*.].%.*.%.%.%.;.*.Q Q z m 3 ' > * * * + ' ' ' _ _ 3 f o o o D E Q ;.Q {.;.;.{.{.{.{.",
|
||||
"b b 4 b b 4 7 7 7 4 b | 7 | 7 7 7 7 e e , | | , | | 7 | | | | 7 | | | | | : : : : ( a : < < < { : : } ( ( ( ( ( ( | < | a k y Y Y Z @.%./.].@.X *.*.*.%.X *.*.X %.X %.X X %.X *.X X X @.$.=.@.@.@.@.$.].$.@.=.$.'.$.=.$.@.*.@.@.$.*.].*.*./.].].].*.=.].@.%.$.,.).Y Z @.=.$.X @.Q *.@.@.*.@.Z $.@.Z Z $.Z Y ,.Y $.$.*.*.=.=.].*.].c.*.;.%.*.U z w f ' ' ' + * + * * * _ _ 3 o o x x D Q Q Q Q ;.{.&.{.{.{.{.{.{.",
|
||||
"1 1 7 7 1 7 4 7 e 7 7 | e 7 e 7 7 7 i | | | | | | | ( | ( | ( | ( | : | ( : { ( ( ( a : ( ( ( } { ( : ( ( : : : ( ( ( ( < a j Y Z Z '.*.%.c.@.$.@.%.%.%.*.*.Q @.@.X %.%.X X %.X X X Z Z @.=./.$.].$.$.@.@.Z =.$.'.$.@.=.@.@.@.@.$.*.%.].=.*.*.*.=.=.=.$.$.$.$.'.$.,.,.$.Z $.@.@.X *.X X @.*.U $.).).Y /.Z Y $.=.@.@.%.*.*.=.=.%.@.%.%.X X z w d ' ' > + + ' * * ' ' _ _ f m o E E Q ;.;.;.;.&.{.;.{.{.{.{.{.{.{.",
|
||||
"b 4 7 e 7 4 7 4 1 7 7 b 1 7 4 7 e e e | | | | | | : 6 : : : | , | ( < | , ( ( : : 6 } ( ( ( ( ( ( { ( = { - ( < ( ( ( < | a y R @.$.$./.].*.@./.*.*.%.%.%.@.@.Z /.@.%.X X *.X %.X X $.$.=.$.@.%.$.$.$.$.$.$.Z '.'.*.@.@.,.=.'.=.$.@.].'.=.=./.=.*.*.$.'.$./.).$.,.$.@.X @.X Z @.=.Z @.@.X @.@.Y Z Z /.Y $.@.=.=.@.;.*.c.*.&.*.*.*.U X E w d _ ' > + + * * * * * _ _ f f o x E Q E ;.E {.{.{.;.{.{.{.{.{.b.{.7.{.",
|
||||
"7 4 7 7 7 b 4 7 7 7 7 7 4 b 7 7 8 7 e | | < | | i | | ( : : : | ( ( ( : : : { ( { : ~ { = { < ( ( = { ( ( { - { { ( | ( < a 0 R Z @.$.].].=.*.*.*.*.X %.@.@.@.@.$.@.%.X Q *.Q X X @.@././.$.@.].@.]./.,.@.$.$.Z Z =.=.@.=.&.=.*.$.$.*.'.'.=.]././.].@.$.$.@.$.$.$.=.$.@.$.X $.X $.$.@.@.Z Z @.=.,.,.$.Z $.=.*.&.].;.*.*.*.*.*.Z X z w d ' > > * * * # * * * _ _ f o o o x E Q ;.;.;.{.{.{.{.;.{.{.{.7.{.7.7.y.{.",
|
||||
"e 7 4 b 7 7 4 7 7 7 7 7 7 7 7 7 b 7 7 | ( | ( ( i , | | ( : : : ( : : : ( { ( { ( { { { { { = = = ~ ( = { = ( < - : ( ( | | 6 R Z =.=.*.@.*.$.@.$./.*.$.*.Z @.@.@.].$.@.@.X X @.$.$.$.$.@.@./.$.).$.$.$./.@.@.=.'.].Z '.$./.*.].].]./.=.a.*.*.].].].].%.@.].].$.$.'.@.=.'.=.X $.Z X Z '.'.*.=.*.X Z $.$.$.@.*.].;.c.*.*.;.X Z z f 3 ' ' > * + + * * * _ _ _ f f o x x Q Q E ;.E {.E {.{.{.{.{.{.{.{.7.b.b.7.7.b.",
|
||||
"4 7 7 e b e 7 7 8 b 8 b 7 7 7 4 7 8 7 | | ( | | | : : , | ( : ( : : ( { : { { = - ( @ & @ ~ = = = & = ~ - ~ - ( ( { ( ( ( | 6 C $.@.@.@.X $.=.*.*./.*.].@.@.Z ).$.].$.$.$.@.X @.@././.=.,.$.$.$./.$.$.).$.$.].].,.$.$.$.@.].%.%.%.*.c.*.=.a.*.%.*.%.].].@.].].$.$.'.@.*.=.'.=.@.@.@.@.X Y *.Z *.*.@.@.]././.*.].%.%.@.X Z z m d ' * * + + * * * * / _ _ f f o o E E E Q ;.&.{.;.{.{.;.{.{.{.{.{.{.y.{.7.7.7.7.b.",
|
||||
"7 7 7 e e 7 | e 7 7 7 | 4 b 7 7 7 7 e | : , | < ( , < : : ( ( - : - : : } ~ ~ = = . @ = @ @ @ = @ & & = & - ( - { { ( ( | | a C Y %.@.@.$.$.,.,.].*.].$.*.$.).Z /./.@.$.@.%.$./.,.$.$.,.$.).@.@.)./.).Z ).$.@.$.Z /.$.@.].%.%.%.c.%.*.=.&.*.*.*.].].].*.].@.].$.$.$.$.$.U =.=.@.Q *.@.@.@.$.*.*.%.%.;.%.@.].].*.%.%.Z z d d ' > + * + * * * * * / _ f f o x E D Q Q {.E ;.;.{.{.&.{.;.;.{.{.{.{.{.b.b.b.b.7.y.b.",
|
||||
"7 7 7 | 7 e 4 7 7 7 7 e 7 7 7 7 b 8 7 | a | < | | < ( : : | : ( : ( { ~ & $ @ . . . . . . @ . & @ = = - - - - ( ( < < a a V Y @.X @.@.$.$.,.].].]./.@.@./.Z @././././.@./.$.$.,.$.,.$././.@.).*.).$.).$.$./.Y ,.$.@.%.%.%.].].].].].c.%.c.%.]./.$.].].@.@.$.$.@.%.@.=.=.=.$.$.=.@.%.*.*.*.*.%.].%.*.*.*.].=.U z w d ^ > + * + * * * ' ' _ f 3 o o E E E E Q Q {.;.;.;.;.{.{.{.{.{.{.{.{.{.{.b.b.b.b.b.7.7.7.",
|
||||
"7 | e 7 4 1 b 1 8 7 7 4 | 7 e 4 7 7 7 7 ( ( ( ( < ( | < ( { ( ( ( = & @ & . . @ . @ @ # @ @ @ = - - - - , ( | | | y !.Z ,.)./.).)././.$.'.=.$.@./.@.@./.@./.$.].$.'.'.]./.].].$./.Z @.$.@.$.$./.@././.$.$.%.*.].@.].].].]./.*.*.].].$.@./.].*././.].@.$.@.@.%.X %.*.@.%.%.%.%.%.%.%.%.%.].].].@.X z w d / * * * # + * * * ' 3 3 3 f o m E D E E {.Q {.Q {.{.;.{.{.{.{.{.{.{.{.b.b.{.b.b.b.7.7.7.7.7.",
|
||||
"7 | 7 7 e 7 7 b 1 7 | 7 | | 7 e 7 8 7 | | | | , ( : : , ( : { = = @ @ . @ @ @ @ + . + $ . . @ = - - { < < < a a y !.Y ,.).).).).)./.$.$.$./.@.,.)././.@.@./.$.$.$.,./.=.=.$.$././.@.$.$.@.@.@.Z )././.].%.].].].].].*.*./.].%.].@.].*.].].$././././.@.$.$.%.@.@.*.*.%.;.;.;.;.%.c.%.].@.Z U z w 3 * > + + + * . * * ' _ 3 3 m o D D E E ;.;.;.{.;.;.{.{.E {.{.{.{.{.{.b.{.{.b.b.{.7.b.b.7.7.A.7.y.",
|
||||
"4 7 b 7 4 | 4 7 7 8 e e e 7 7 4 7 7 e e i ( | | | | ( : : { = $ $ @ @ @ @ - - - , , , - - @ @ + @ . @ = = - - , ( | | y !.).,.a.).).).,.,.'.,.].$.$.@.$./.*./.).$.].*.$.$.,.=./.'.'.'.,./.$.$.$.$.)./.).).a.].=.$.$.$.=.=.*./.].;.%.*.@.*.].*.$.*.$././.$.$.*.@.$.@.@.@.@.;.%.%.%.%.*.%.@.*.U w d l ' # * # + + * > * * _ 3 3 m o D D D Q X {.;.;.;.%.{.{.{.{.{.{.{.b.{.y.{.{.{.y.{.b.b.7.7.b.b.7.y.v.b.",
|
||||
"4 7 4 7 b 7 4 1 b b 4 7 7 7 e 7 7 7 v i , ( | , < ( ( : { ) @ @ @ . - , , ! ! ! , ! ! ! , , - @ @ @ @ = = < , ( | a t !.(.).(.).a.a.,.,.,.).]./.$.].$.@.].=.).$./.].].$.)././.,.).=.,.)./.Z @.@./.@.,.,./.%.%.$.=.=.*.].*.*./.*.%.*.*.&.].].=.=././.@./.'.*.%.@.=.*.%.%.*.c.*.*.;.*.%.U z z l ' ' * + * + # * * * _ _ 3 f m m E E Q Q ;.;.;.;.%.{.{.{.{.{.{.{.{.{.{.b.{.b.y.{.b.{.7.b.b.b.b.b.b.b.y.b.",
|
||||
"7 | b b 7 7 e 7 4 7 7 7 7 e 4 7 b e e 6 | | ( ( < , { & @ - , ! ! 4 e e b 2 2 2 2 2 ! ! , - @ . . . @ @ = - < | a | y :.'.!.a.).).).,.!.,.*.$.].].$.].].].,.$./.].*.$././.$.$./.].,.'.,.)././.$.$././.].@.@.].*./.].].*.%.].=./.*.*.]./.&.*.].@.].].].@.@.=.].*.*.*.*.c.*.&.].%.%.X z w _ ' ' ' + + * * * ' * _ _ _ f o o x D E E ;.Q ;.;.;.;.{.{.{.{.b.{.b.;.7.b.{.{.b.{.b.b.b.v.b.v.b.A.7.b.y.b.b.y.",
|
||||
"b 7 4 1 b 4 | 7 1 8 7 7 7 e e e 7 s e | : | ( : ( < { & @ @ - , ! 2 2 q 4.k.` s 9 1 9 9 9 b b ! ! - @ @ . . @ . @ = - , , | | k ^.!.!.).).,.,.,.,.,./.$.]./.$.].@./.'.$.$.$.$.$.$.=./././.]././.$.Z $.$.).$.$.$.$.].$././.$.*.*.*.].%.*././.*.&./.*.].%.@.]./.%.].*.%.].*.c.;.*.].=.=.&.$.Y w d _ > > + * + # + * / / 3 3 f o o E E E Q ;.;.{.E {.{.{.;.;.{.{.{.{.b.b.7.7.b.b.b.b.y.b.y.b.y.b.b.v.7.A.b.y.y.v.v.",
|
||||
"| 7 4 7 7 e b | 4 7 7 b 7 7 | 4 4 e e i | : : ( ( = @ @ @ - , ! 2 q H S.V.|.I q 9 9 9 9 b b b q 7 ! , @ @ . @ @ - - - < < | r V '.).).).).g.(.,.,./.]./.@./.$./.*./.,.=./.]././.,./.$./.$.,.'.).).,.'.$.$.$.$.$.X ].].@.].*.].].].].].=.*.*.].&.].%.].].a.].].].c.].].].].].].=.*.=.Y f f _ ' + * # * * * * ' _ _ 3 3 m D D D E ;.E {.E {.{.{.{.{.;.;.;.{.{.{.{.b.7.7.y.b.v.b.b.b.7.7.7.v.7.A.7.v.b.y.v.y.v.v.",
|
||||
"4 | e 7 4 e 7 e 7 7 7 b 4 7 e e | 7 7 | < < ( ~ = = @ - , ! ! 2 9 j.S.=+n.I s 1 9 2 2 9 9 b b b 7 7 , - @ . @ @ . - - , ! < 8 y :.'.,./.a.!.,.(.'.'./.].].$./.$./.].].=.=./.@./.$.,.,.,./.$./.$.$.).$./.,./.$.=.$.].@.=.].].].].@.*.&.*.*.*.*.].*.].].%.%./.].c.].c.c.].c.].].=.,.U w 3 / ' + > + * # * * / _ 3 f f m z z E Q *.;.{.{.{.{.{.{.{.;.{.%.;.;.7.{.b.{.{.b.7.7.b.b.v.b.y.y.7.b.v.A.v.7.A.v.y.b.y.y.v.",
|
||||
"4 e | 7 b 4 e i | 8 8 | | 4 4 | 7 7 | ( | ( ( = = - - , ! 2 1 H j.S.-+|.I q 1 2 2 9 2 2 1 4 b 7 b 4 4 , @ @ . @ - @ - - < 8 | r !.)././.).!.a.'.,.,.=.$.$././.@.].].].].*.]./.,.,.,.,.$.$./.Z /.)./.).,.Y ).,.=./.@.$.$.$.].%.*.*.].].&.*.].]./.=.=.=.*.].c.].].&.].=.*.@.@.'.w w d 3 > * * + + ' * * / _ 3 f f o z z U X Q ;.Q ;.;.{.{.{.{.{.{.{.;.7.c.{.{.b.{.{.b.7.{.7.7.b.7.7.b.v.v.I.7.v.A.v.y.y.v.y.y.C.G.",
|
||||
"4 7 | | 7 e e | 7 7 1 e 7 7 b 7 7 b e a ( < - @ - , , , ! b H S.S.V.+.v 4 4 1 1 2 1 2 2 9 1 7 b b b b | - @ @ @ @ - - - , < 8 y ^.)./.,.a.,.(.,.,.,.'./.=./././././././.=././.,.,.!.,.).$./.$.@.$.@.).).$.,.,.=.=.=././.$.=.].].].].].].%.].].*.*.&.=.c././.].c.'.a.=.'.Z z w l / * * > # * ' * * ' _ _ f o m z Q Q X ;.;.*.;.*.;.{.{.{.{.{.{.7.7.7.b.c.c.7.7.7.c.7.b.7.b.7.7.7.v.b.b.7.I.A.v.A.v.v.v.v.I.A.y.A.",
|
||||
"7 4 4 b 4 | e e 4 8 8 8 7 7 4 7 | 7 7 i ( - = @ - , ! 4 q _.S.-+n.F e 1 ! 1 2 2 1 1 2 2 1 4 4 4 7 7 7 | - @ - @ @ @ < < | | r R )././.!.a.'.(.,.,./.'././././.).].,.'.=.=.'.a.'.'.!./.).Z /./.Z /.$.$.,.$.].=.*.*.].*.=.=.%.%.].*.*.&.*.*.].=.a.*.*.=././.].].*.=.U Y w d / ' * * # # # * * ' _ _ 3 f f o E E Q Q ;.{.%.;.&.;.;.{.{.{.7.{.c.{.c.{.7.7.7.7.b.7.7.7.7.7.7.v.7.v.b.b.v.v.b.v.y.y.C.y.v.v.A.v.v.A.",
|
||||
"7 b 7 4 7 e e e 4 8 4 | 7 e 7 7 | e 7 i { = @ , , ! ! q H S.`.|.s 4 1 b b 1 ! ! 1 1 2 1 1 1 1 1 8 8 7 e ( - @ @ @ , - , , ! a y !.(.).a.,.!.,.).,.,./.=.].$.$././././.'.=./.,.,.'.'.,.)./.@.@./.,.$./.$.$.$.].].].%.].*.].c./.*.].=.a.*.].*.c.&.*.c.*.=././.]./.Y Y m l / / # # # * # * * ' / 3 f f o o x x Q ;.;.;.;.{.%.{.c.;.{.7.7.{.c.7.7.b.7.7.7.7.7.{.7.b.7.7.v.A.c.A.y.7.v.v.b.I.7.A.A.7.y.A.v.v.v.v.A.A.",
|
||||
"4 4 4 4 b e e | 7 | 4 7 7 4 7 e e 7 7 a { - , , 2 2 b q E.S.` e 1 b 1 q b q 1 1 2 2 2 4 1 1 b b 7 7 7 e i ( @ @ . - - - , | | r :.!.,.).).).,.).,.$.'./.$.]./.,.,.,.=./.,.'.'.,.,.'.,././././.$.$.,.$.,.,.$.].@.].%.c.%.*.].].].a.=.&.].c.;.].]./.=./.=./.@.Z Y w d / ' * * * * * * ' / / _ 3 f m m x x U Q Q E {.X {.{.{.7.b.7.7.{.{.{.b.7.c.7.b.c.7.b.b.7.y.b.v.b.b.A.A.7.A.v.A.v.A.A.I.A.y.y.7.v.v.b.A.A.v.y.",
|
||||
"4 4 b 4 7 4 7 7 7 7 1 4 7 4 4 4 7 7 7 a - , , ! 2 2 q F k.I e q e q q q e b b b 1 4 1 1 4 1 7 7 7 7 | i | ( = @ @ @ - , , ! a t (.,.!.!.).).,.$.=./.=././.$.,.,.$.,././.a.,.'././.,.,.)./.@.].=././.$.$././.].%.%.%.]./.=.].].%.%.].].*.%.c.].].c././.$.Z Y w d ' _ > * # # # # * / / _ f m m z D E Q Q *.;.;.{.;.;.{.{.{.;.{.{.7.7.b.b.b.b.b.7.b.7.c.b.b.b.7.7.7.A.b.I.I.7.A.v.b.I.y.y.A.A.C.y.y.v.v.v.v.b.v.y.",
|
||||
"4 4 4 7 7 8 1 4 b 4 7 7 4 4 | 7 | | e | - , ! ! 2 b b F s e 7 q s s e q e q e 4 e | 4 7 7 4 | 7 i 8 i 7 i | - @ @ @ - - , | | y (.g.'.!.!.,.,.'.,.,.,.=.,.,.'.=.,.$./.].$.a.,.,././.,./././.]./.=.,././.$.$./.=.*.].].].].].].].c.;.c.].].]./.].].$.Y Y z d _ > > > * # * * / / _ _ f m m z D E X X %.;.;.;.;.*.;.;.{.{.{.{.{.7.{.{.b.{.7.b.b.7.7.c.7.v.b.v.b.v.v.b.A.b.I.v.v.v.y.C.C.A.v.y.y.A.A.v.v.v.v.v.b.v.",
|
||||
"b b 4 4 7 7 4 4 7 8 7 e 7 4 4 8 7 7 4 | , ! ! 2 1 b 7 b 1 1 q v s q e q e b e e | | e s O 7 | 8 8 8 i | i | - @ - @ - - , < | y !.).,.,.).,.,.=.=.,.,./.=.,.,./.=.'./.=./.,.,.,.'./.).Z /./.].].=.,.@./.).$.=.=.c.].%.].].].c.*.].*.].]././.$.Z X Y w _ ' ] > + # # * # / / _ 3 f f m z D X X %.%.{.{.%.;.{.{.&.;.;.{.{.b.{.b.b.{.7.b.{.7.7.b.7.A.c.c.v.b.v.b.b.A.A.A.A.b.v.A.v.v.A.A.A.A.y.A.v.A.v.y.y.A.v.y.y.",
|
||||
"| 7 b e | 8 b 7 4 4 4 4 7 7 7 7 4 8 | | , ! ! ! 4 1 4 1 1 q e F e q e q e b e e i i 6 M G a 7 i 8 i 8 i | a ( @ @ - - , < | a N ).).,.!.,.)./.=.,././././.=.,././.,.'.,.'.,.a.,.$.)./.)./././././.=.,.,.=.=.a.*.*.%.%.c./.*./.].a./.c./.$.,.Y Y w d / ' > * # ; * ' / / / / _ f f z z X X X %.{.%.{.%.{.{.{.{.{.;.&.7.b.b.b.b.7.b.b.b.b.7.7.b.7.7.7.A.7.y.v.y.y.7.A.A.v.I.v.v.A.A.v.A.A.y.A.A.A.y.y.A.A.y.y.C.C.",
|
||||
"| | 4 7 4 4 b 7 4 7 4 4 1 4 7 4 | b 7 | , ! , ! 1 ! 1 1 e q e e e e b 4 e e B B 6 : k t B B r r | i i | 7 i a @ = @ - , , 8 | C (.).).,.,.=././.'.'.'.'././.,./.]././.,.'.!.g.).$.)./.,.,././.]./.=./.,.].%.].].].c.%.c.].].a.].=.'./.,.Y Y w d _ ' > * > + * > > ' _ _ f f w z z X X X ;.;.*.%.7.{.7.%.7.b.b.7.b.7.7.7.7.7.7.7.b.b.b.7.7.C.7.L.c.7.A.b.b.b.v.y.A.y.A.A.I.v.v.A.J.J.A.A.A.A.A.A.C.A.A.C.C.c.B.c.",
|
||||
"7 e 7 4 | 4 4 4 7 7 4 b b 7 8 7 1 b 8 ! ! ! , ! ! 1 4 q e q e q e e e e s G K K [ { } 6 y B M B p a 8 a 7 a } @ - - - , ! 8 a T ).).).).,.,.'.'./.=.=.]././.$.$.)./.,./.).a.).).,.).,.,.$.$.].a././.=.a.].c.%.c.]./.].].a.=.]./.,.,.Y Y w 3 _ / * ; # + # / * / _ 3 l m m z z Z X X X %.*.*.{.%.%.c.%.c.{.b.7.b.b.b.7.7.7.7.7.7.7.b.7.7.7.7.A.7.A.7.7.v.v.v.y.7.y.y.A.v.A.v.I.v.J.A.I.G.y.A.C.C.A.A.A.y.B.B.z.z.",
|
||||
"1 4 4 4 | | 4 4 4 7 | 4 4 4 7 7 8 b 7 4 , ! 1 ! ! 1 b e b b b e b 7 4 e G .N u ) ) % - a y y p B a 7 7 7 a : @ @ - , , | 8 a V !.,.,./.$././.'./.*.'.'.,.).).=.,.,.a./.)./.).).)./././.'.'./.,./.,.=.a.%.c.].a.a.a.].c.).a./.,.).R w l / ] ; # # # / * > / ' _ 3 d m z z X X X Q %.*.%.%.*.;.c.%.c.c.c.7.b.7.b.7.7.b.b.b.7.7.7.C.7.A.7.I.7.A.c.A.A.A.v.v.v.y.v.v.v.A.v.A.y.I.v.v.G.v.G.C.A.J.C.A.C.C.A.B.B.c.z.",
|
||||
"4 4 4 7 | e 7 1 | 7 4 | 7 7 4 4 1 8 4 ! ! ! 1 ! 1 4 e b 4 e 4 7 4 e 4 v ..u u 0 [ & @ @ & { 5 j p r a 7 a r { = - - - | ! ! a V ).,.$.,././.=.]././././.=.$././.'.).).)./.)./.)./.).'.a./././.a.=.a.'.*.].%.c.&.a.=./.)./.,.Y Y R l _ ' > * * # / * > ^ / _ l l w m z Y D X X *.%.%.;.*.{.c.;.7.;.;.{.{.7.7.7.7.b.7.b.b.7.I.7.A.7.A.7.A.c.A.A.v.7.A.7.A.v.v.v.y.y.y.v.A.y.v.y.v.G.v.D.v.A.C.C.A.A.A.A.C.C.B.B.B.",
|
||||
"4 4 4 7 7 e 4 4 4 7 4 7 | 4 | 7 1 8 7 7 ! ! ! ! 1 1 1 7 4 4 7 4 e | e u K j j 0 [ & @ @ @ & } r r | i a a ( = - , - , 8 8 5 R '.'.$.,.$././.$./.,.,.,.$.$././.,.).).).).).).a./.).,.,./.=./.a.=.].a.].a.].a.c.a.=.a.$.Y R w d ] ^ ; > # # / > ' / 3 l l d d w z Y D Z X *.;.*.c.%.c.c.7.7.c.7.7.;.7.{.%.7.7.c.7.7.7.I.c.7.I.7.7.I.7.I.7.A.A.A.A.y.A.C.y.A.y.y.v.v.v.v.y.A.y.I.v.y.D.y.C.A.A.A.A.v.v.A.y.C.B.D.",
|
||||
"4 b b 7 | 4 7 b 7 4 4 | b 4 7 | 7 4 4 | , ! ! 1 b 4 1 4 1 4 4 ! e 6 k 5 j K K t ) @ @ @ = = - : K G a i a a = - , - , ! ! 4 y !.Y ,.,.].=.=././././.$./.,./././.,.'.).)././.).)./.].].a./.a.].a.=.a.].c.].a.]./.].$.Z Y w d ^ > * # * ; * # ^ / ] d l l d Y z Y Z X @.@.@.%.;.c.*.c.%.%.7.%.{.7.7.b.7.c.b.%.c.c.7.c.c.c.7.7.L.I.c.c.A.A.A.A.v.v.v.A.A.A.A.G.G.v.y.y.v.I.v.v.A.y.A.y.y.C.A.y.A.A.v.A.A.A.y.C.y.A.",
|
||||
"4 4 4 b e 7 | 7 | b 1 4 7 4 | 4 | 4 1 4 | ! ! b 7 4 4 4 4 4 1 4 v 6 6 : 5 W u K & @ = @ : : k 6 K M a a a a < , , ! , ! 8 | j !.).$.,.,.,.,.$.$.$.'.'./.,.$.,./.).$.).).)./.).).)././.].].a./.a.].c.a./.a.].a./.).Y w d ] ' # # # # * ^ / / / l l c C R R R (.).).).,.].c.].%.c.].c.c.c.%.7.%.7.c.7.7.c.7.I.7.c.7.7.C.c.I.7.7.I.7.L.c.C.C.A.A.A.v.A.v.v.I.G.y.v.I.y.G.J.I.I.A.A.y.y.y.c.A.A.A.A.A.y.A.y.y.y.7.v.",
|
||||
"4 4 1 4 7 7 7 7 4 1 4 4 4 | 7 | 1 1 4 e i ! , 4 4 4 | ! ! 4 1 e .5 } - p B K [ & = = : 6 k p j S W 7 a a < - , , ! ! ! | | V Y *./.'.'.'.=././.=././.$.].=.$.).$.Y ).).,.)./.)./.,.,.,.]./.a.a.a.].].c./.).$.R w l ' ^ * / # ~ / / ^ ^ c C T #.i.q.N.P.++#+*+*+P.N.u.u.U.[.a.a.c.c.%.c.c.c.7.7.7.c.7.7.c.c.c.c.I.7.c.I.c.7.I.7.A.A.A.C.7.A.A.y.A.A.J.I.I.v.G.G.A.A.I.v.y.A.A.y.y.y.y.v.A.I.v.A.A.A.y.y.y.y.A.v.",
|
||||
"4 1 1 4 4 4 4 b b 1 4 4 1 4 7 7 7 7 b e | 4 1 4 ! | ! ! | ! 1 s G ) : : t t t u & = = } 6 k p p S a i a a a < , , ! < 1 ! < V !.$./././.,.'.'./.=.=./.$.].*.@.,./.).).).$.)./.).).).'.a.=.a.].a.).].a.).).Y w d ] > > ; ; # / ^ ^ g y W 3.M.N.$+{+{+3+3+3+3+3+3+3+3+/+{+:+*+P.U.a.c.7.c.c.%.7.7.7.c.7.I.7.7.I.%.7.b.L.7.I.c.I.c.A.7.A.C.L.A.A.A.v.J.A.v.I.v.y.y.v.A.A.J.G.A.G.C.C.C.C.A.J.A.A.v.A.A.y.y.A.v.G.v.",
|
||||
"4 4 4 4 1 7 4 4 4 4 4 4 4 b 8 8 | 4 7 7 , ! | ! 4 ! 4 ! 4 ! 4 s v - | p M K N u [ & : ( 5 t k B W a | g a - < , ! ! ! 8 | a V ,.,./.a.)./././.'.a.,.,.'.,./.=.).).Z ).).).,.).a.)./.a.,.a./.a./././.Y Y w l ] ^ * # $ # / ^ [ y -.q.T.$+{+{+e+e+e+e+e+k+r+k+r+r+l+k+k+l+e+3+{+:+#+.+d.c.c.c.L.c.c.7.7.7.c.7.%.I.7.7.c.I.7.I.7.I.C.L.A.A.A.A.C.C.A.I.J.A.I.J.G.G.G.G.G.I.v.A.y.y.y.y.A.A.I.v.v.A.A.A.y.A.C.G.A.J.",
|
||||
"4 4 1 4 4 1 7 7 | | 4 4 8 1 8 1 7 7 7 e , ! ! ! , 4 ! ! | ! 1 e 6 : B ..M K K u [ ) = ( : 6 j K B a < a a ( , < | 8 4 4 | g !.).).$./.,.,.'./.'.'././.'.'./././.).$.).,.).,.).).).).].].a././.,.Y R l l ^ ' ; # ~ ^ ~ 0 u -.s.H.&+{+3+e+k+e+k+r+p+p+q+p+r+p+r+v+r+q+r+r+r+r+l+d+:+:+*+.+a.a.L.7.L.%.I.7.I.7.c.A.7.I.c.I.c.I.c.A.A.C.C.C.C.J.A.A.C.A.A.G.G.I.I.G.A.A.A.J.G.G.A.A.A.A.A.A.A.A.A.y.y.A.A.A.C.A.A.A.",
|
||||
"4 4 4 1 7 4 | 7 4 4 4 1 1 4 1 8 1 4 4 | | ! ! ! ! ! , ! , , 4 s p v S }.}.}. .p 5 } & & = } k M p a a a < , < | < | 8 7 | y !.$./.).,./.).]./.,.,./././.,.'.'.).,.).).).,.(.,./.,./.,./.=.'.Y Y l l / * > $ ^ ~ y M f.Q.&+{+{+3+c+e+h+k+p+p+p+p+q+t+s+s+s+t+s+t+y+x+v+y+y+o+q+p+e+3+d+:+#+R.d./.L.c.L.c.L.c.I.c.C.].I.c.7.C.7.A.b.A.A.v.J.J.v.A.A.A.G.v.I.J.v.I.G.J.I.J.I.I.A.A.A.A.v.A.C.y.A.y.C.C.C.A.A.C.G.G.",
|
||||
"4 4 4 7 7 | 7 7 4 | 1 b 1 4 4 8 b 4 b | | , ! ! ! ! | , | ! e O t G S <.n.<.S p p [ = = { = p M 6 a a a a | , | ! | 7 8 i V )./././.,././.]./.,.,./././.).,.,./.,.$.).).,.,.,./.,./.,.,.Y w l l / ^ ; # ~ u .T.M.$+$+3+3+e+k+k+m+r+p+r+p+r+s+s+s+s+t+v+v+y+y+t+t+y+v+t+B+t+t+v+v+p+k+d+3+:+.+R.c.L.c.L.7.L.c.L.A.L.7.I.L.C.7.C.A.A.C.A.C.A.I.I.A.J.J.G.J.J.G.I.I.J.J.C.C.I.I.v.I.L.A.A.C.A.A.7.A.G.O.C.y.C.C.C.",
|
||||
"4 4 7 4 4 | 4 4 | 4 4 4 4 8 8 4 4 4 | e 4 , , , , ! | , , ! e ..B G +.n.|.+.G B p p : : : i B r a 5 g a < | | 4 | e v | a V ,.,.'.'./.$././.,.a./.'.).).a.).,.,.,.,./.,.'.'.,.).,.'.'.R n l / / > * ^ [ W T.&+{+3+3+e+k+k+p+p+p+r+p+v+s+s+s+s+r+t+t+v+B+v+v+y+v+B+t+y+w+w+y+y+y+s+v+r+r+e+3+:+#+R.~.L.R.c.L.I.7.R.I.I.7.J.J.C.A.A.A.y.C.C.C.A.y.C.A.G.J.G.G.I.v.J.I.J.L.J.A.J.J.J.J.L.J.y.v.A.A.G.C.G.A.A.A.A.A.",
|
||||
"4 4 4 | 4 4 4 1 4 4 8 4 ! 8 4 | 7 4 1 4 | , , , ! , , , | 4 s .K G I |.I O G G G G G p p B #.t a g 5 ( | | | 7 4 s e i y !.'.'.=.'.)./.$./.,.,.a./.$.).).(.)./././.a.,.!.'.'.'.Y w w l / / ; / ; # [ 3.$+{+c+c+k+p+p+p+r+r+r+p+p+s+p+r+s+t+y+B+v+v+x+x+y+x+y+y+x+y+B+t+y+y+y+t+y+v+v+v+r+k+e+:+:+.+c.I.L.c.L.L.L.I.I.I.L.L.C.A.A.A.I.A.A.A.C.C.G.C.A.A.J.J.J.J.J.I.J.L.L.J.J.A.J.J.J.I.A.A.G.C.J.L.C.J.A.L.C.A.",
|
||||
"4 7 7 4 4 4 4 4 4 4 4 8 4 4 4 | 7 7 b b 4 , , , , , , , , , I S ..G +.O p v S ......<. .S s.}.y g a } i | e e e e s 7 e y !.,.,.,.)./.)./././.).).a.,.!.!.,.,.,.).a.'.,.a.,.!.Y w d / # # # # # / ] W &+^+c+e+e+h+k+r+p+p+s+s+s+r+v+v+s+s+v+t+t+x+x+v+y+t+B+y+y+B+t+y+y+y+A+t+B+y+A+y+y+y+t+k+e+:+:+r.c.R.I.L.L.L.L.L.L.J.J.L.J.J.I.A.L.C.J.A.C.C.A.C.C.L.A.A.J.J.J.I.G.v.G.J.J.J.J.J.A.J.J.A.J.J.J.A.I.J.J.L.L.",
|
||||
"4 7 4 4 4 4 4 7 4 4 4 4 4 7 1 4 7 | 7 7 | , , , , , , , | ! I S ..<...p v B S ..<.n.}.<.n.s.K k a a : i e e e q 7 7 | j R a./.]./.,.@./.,./././.,.a.$.).!.!.,.a.).).!.'.R w l l ] ^ > # ~ ~ ^ ^ ^ u $+3+3+b+4+e+k+h+k+p+k+q+t+t+t+y+t+B+t+x+x+y+y+x+v+x+y+t+y+y+B+B+y+B+y+B+y+y+y+y+B+t+y+A+r+t+k+d+:+.+R.c.L.c.L.I.L.L.L.I.J.J.J.J.J.J.J.I.A.A.L.L.A.A.J.A.A.A.v.v.v.C.y.A.J.J.J.I.I.L.L.L.G.G.J.J.J.I.J.J.C.A.",
|
||||
"4 7 4 b 4 4 4 7 7 4 4 4 4 7 4 4 4 4 7 e | , , , , , , , , ! I 2.+.2.S p G S ....-+n.W.n.t. .j g a : i e s s s s q b i C ).)././.'./././.a.,.,.,./.).).).!.!.).).,.,.'.Y V n n ~ ~ ) g 0 g 0 y N W q.{+3+4+4+e+c+c+c+k+e+i+i+i+k+r+v+v+t+x+v+t+B+t+y+y+y+y+y+y+y+y+y+y+y+B+y+B+B+y+B+y+y+w+t+w+t+r+a+d+:+d.c.L.I.L.L.I.L.L.I.L.J.I.I.L.I.J.J.I.L.J.J.A.I.A.A.A.A.v.A.y.C.C.C.C.A.J.L.L.L.C.L.J.I.G.J.A.J.J.L.J.L.",
|
||||
"4 4 4 4 4 4 4 4 4 4 4 7 | 4 4 4 4 4 4 1 | , , , , , , , , ! I +.|.<...G +.+.<.}.-+n.M.n. .j 5 g ( 6 v s e s s s s 7 a V /./.)./.a.).).,.'./.a.,././.).).(.(.(.,.Y R w l g j r -...f.f.o.M.M.M.$+W.{+|+4+4+c+e+c+3+6+4+3+4+4+4+e+e+p+s+y+y+x+t+y+t+x+y+w+A+A+A+A+y+B+y+A+A+y+A+A+A+A+A+y+A+y+y+t+s+q+a+d+/+.+a.I.B.L.L.L.L.I.L.L.I.I.I.I.I.J.J.L.J.J.J.J.L.C.A.A.v.A.A.y.C.A.A.A.v.v.J.J.C.B.G.J.G.J.A.L.J.J.J.J.",
|
||||
"4 4 4 4 4 4 4 7 b 1 4 7 4 4 4 4 1 7 1 7 | - - , - , , , , , F O I 2...}.n.n.n.W.n.H.<.M k 6 } 6 | e e s v O I F s e y !.'.a.,.,.'.'./.a./././.a.a.).a.!.,.).,.R V C -.#.s.K.@+@+&+&+>+{+{+{+4+{+4+b+4+4+c+c+e+e+c+e+4+4+4+3+3+4+4+b+g+q+s+B+y+t+y+y+A+y+y+A+A+y+B+y+A+y+y+A+B+B+y+B+A+A+B+y+t+B+t+y+q+l+3+*+.+L.c.L.L.L.L.L.L.I.L.L.I.L.I.I.J.J.J.J.A.J.J.v.I.J.L.A.A.A.A.C.J.v.A.A.A.A.c.C.B.A.J.A.L.C.L.J.I.J.",
|
||||
"4 1 1 4 4 | 4 1 1 1 4 4 4 4 4 4 1 1 7 4 | , , , , , , - , , | e I O 2.<.n.n.n.M.n.<.O 6 a } ( | e s s I I O s I 7 i V ,.'.,.).).a.,././.].a./.a.a.g.,.(.(.:.V ^.f.Q.W.>+]+{+|+4+6+b+b+c+c+e+i+c+0+h+h+h+h+h+k+i+h+k+c+e+4+4+{+{+^+3+2+g+o+t+B+t+B+t+y+y+v+y+y+y+A+B+B+y+B+A+A+A+y+B+A+A+A+A+w+B+t+y+r+r+l+/+*+R.O.L.L.I.L.L.L.I.L.I.I.L.L.I.J.I.I.J.I.I.J.I.A.A.L.A.A.J.J.A.C.J.C.C.A.v.y.y.C.A.C.C.c.C.c.I.J.J.",
|
||||
"4 4 ! 4 4 7 7 4 2 2 4 1 4 | 7 4 4 b 1 4 | , - , , , , , , , , , e I +.|.n.|.n.<.G k | ( a < 4 v s s F F I I I s O y !.,.,.,./.,.,.,.'.a.a.a.a.[.g.(.6.^.i.q.Q. +$+{+3+4+c+b+e+c+h+i+i+k+k+p+k+q+k+k+i+h+p+p+m+q+k+p+k+c+e+e+3+3+]+{+3+3+b+k+q+B+y+y+B+B+B+B+B+y+B+y+A+B+A+A+B+B+B+A+A+A+y+y+y+w+B+t+t+B+r+k+:+.+R.B.L.L.L.C.L.L.I.J.L.I.J.L.L.L.I.I.I.J.J.J.A.J.A.A.A.A.J.L.A.C.C.A.J.J.A.A.A.C.J.C.J.C.A.C.C.A.",
|
||||
"4 4 1 4 4 4 4 4 1 2 1 2 2 4 4 4 b 4 1 1 | , , , , , , , , , ! , , e v I +.+.I G 6 : ( ( | , e s I G I I ` +.F s t R ).,.a.,.).).).a.a.a.a.[.[.1.u.N.T.Q.>+]+{+6+4+c+e+c+h+h+h+i+h+m+m+m+p+p+p+o+s+q+q+p+p+p+p+m+p+p+p+m+h+h+c+e+{+{+)+{+4+b+i+q+t+y+w+w+y+y+A+A+y+y+A+B+A+A+A+A+B+A+A+A+y+y+y+w+y+A+t+t+w+w+e+/+U.L.I.L.L.L.I.L.I.I.J.J.J.A.J.L.L.L.I.J.J.J.G.G.G.A.J.J.A.L.J.J.J.J.J.J.J.J.J.J.J.C.C.J.C.A.C.A.",
|
||||
"4 4 4 4 b 1 4 1 4 1 1 1 1 b 4 4 4 4 4 b 1 < - - , , , ! ! , , , , , e e e | | | , - - , | e s I I I ` F ` I s i y (.,.,.'.!.a.a.,.a.(.[.1.u.N.*+&+&+^+1+4+c+0+b+h+k+h+k+k+p+p+p+p+q+p+p+p+s+q+s+q+p+q+p+m+p+o+t+s+p+s+p+q+k+k+c+b+2+]+]+]+]+e+i+t+y+B+y+y+y+y+y+A+B+y+A+B+B+A+A+A+B+A+y+A+y+y+y+w+y+w+y+r+q+l+a+#+R.R.I.L.I.L.L.L.J.J.J.J.A.A.A.L.J.L.J.J.L.L.A.I.J.J.L.J.I.A.J.J.L.J.J.L.J.J.I.J.J.J.L.J.L.J.C.",
|
||||
"4 4 4 4 4 4 4 4 4 1 1 1 4 4 4 4 4 1 1 1 7 | - , , , , , , , , , , , , , , , , , - , - ( e e I I O ` |.` ` O e y R )./.a./.,.g.g.9.g.u.N.%+&+{+{+|+4+c+e+e+k+k+k+k+k+p+p+k+p+p+p+p+q+s+p+p+m+t+s+s+m+t+t+t+s+s+p+s+s+s+s+s+s+p+p+k+c+4+{+^+]+3+0+k+s+B+B+B+B+A+B+y+B+y+A+A+B+A+A+A+A+A+B+A+A+y+y+w+y+t+y+B+r+r+l+/+.+R.R.L.L.L.I.I.I.J.A.J.J.I.J.C.J.L.L.L.L.L.J.v.J.A.I.I.J.I.A.J.C.C.J.J.J.J.I.J.J.I.L.L.L.J.J.",
|
||||
"2 4 1 ! 1 4 4 4 7 ! 4 4 4 4 4 4 4 4 1 7 4 i - - , , , , , - - , - , , , , - , - , - | | e v I I ` +.` ` +.s a V (./.a.a.a.).[.x.i.M.*+{+^+4+4+c+c+k+e+h+h+i+p+p+m+p+p+p+m+p+o+t+q+m+p+s+s+s+m+t+o+s+s+s+s+v+s+t+t+t+t+s+s+s+v+q+p+k+e+e+3+^+^+2+i+k+s+y+y+y+y+y+B+y+B+B+A+A+B+y+B+y+x+y+y+y+y+B+y+y+A+t+t+t+t+r+d+:+.+R.L.I.L.L.I.J.C.A.A.J.A.I.J.J.C.C.G.G.L.C.L.L.C.L.J.I.J.C.J.J.J.A.J.J.I.I.I.L.L.R.L.J.I.J.",
|
||||
"4 4 4 1 1 1 1 ! | 4 2 4 1 4 4 1 1 4 1 b 7 | - - , , , , , , , - , - , - , - , - , : i v v I I ` ` ` ` ` O r y !.).a./.a.a.1.u.%+]+^+3+e+e+c+h+k+h+h+k+p+q+h+q+p+p+p+p+p+q+s+o+s+s+t+s+o+t+s+x+s+s+m+y+t+t+s+x+x+s+x+t+s+s+s+s+t+t+p+p+e+e+4+4+4+6+e+q+t+B+y+A+y+B+y+y+y+A+A+A+A+A+A+y+B+y+y+w+y+w+t+B+y+t+t+t+q+l+/+.+R.R.L.R.I.L.I.C.G.A.L.C.A.J.J.L.C.G.A.J.C.J.A.A.I.J.J.C.C.L.J.I.I.J.L.L.L.L.L.L.L.L.I.I.J.",
|
||||
"1 1 1 4 4 1 1 1 1 4 4 2 4 4 4 4 4 1 8 1 b | - @ - , , - , , , , , , , - - : - : | i B I O I +.I ` ` ` I O y V (.[.).[.[.e.X.]+{+3+e+4+h+k+h+k+p+k+p+m+o+o+q+p+q+q+s+p+s+m+v+s+t+t+s+s+t+s+v+s+s+s+t+s+y+s+x+s+s+t+t+s+t+t+t+s+v+s+v+p+p+h+e+3+4+4+0+i+q+y+A+B+A+y+y+A+A+B+A+B+y+y+B+y+y+B+v+y+w+y+B+t+t+A+t+t+r+r+d+:+.+L.L.L.L.L.L.L.G.L.L.J.J.A.J.L.L.L.G.G.J.J.A.A.A.A.J.A.L.L.L.L.J.J.L.L.I.L.I.L.L.L.L.J.J.",
|
||||
"8 1 ! 1 1 4 4 1 1 1 4 1 ! 4 4 7 8 1 b 2 b 7 < - - - , , - , , - - , - : : } 6 6 e G I G ` I ` ` ` ` ` I p V 9.g.[.a.[.e.Q.>+^+4+4+c+c+c+c+h+k+h+p+q+p+p+q+p+m+m+r+s+p+s+m+s+m+v+s+s+s+s+y+m+x+t+s+x+s+y+t+x+y+s+x+y+x+x+x+y+s+s+s+s+s+p+p+h+c+4+^+4+6+i+t+y+y+A+A+y+y+A+B+y+y+B+A+B+A+y+A+t+B+t+w+y+B+v+B+w+t+w+q+d+/+.+R.R.R.L.L.L.L.L.L.L.L.J.A.J.L.G.J.J.C.L.C.J.C.A.L.A.A.J.L.L.J.I.I.J.J.J.L.I.L.I.L.L.C.A.",
|
||||
"4 ! 1 ! 1 1 1 8 1 1 4 4 b b 4 8 1 4 8 b 4 e , - @ - - , : , , : : - - 6 B B B B I G I G ` G I F F F ` G W :.!.[.(.(.:.f.]+^+7+6+6+0+4+0+6+6+0+h+o+m+q+o+s+o+t+s+s+p+s+s+t+s+v+s+s+s+s+t+s+t+s+x+y+t+y+s+x+t+y+y+y+s+y+t+t+s+y+t+t+t+s+v+p+p+k+c+3+4+4+e+k+t+B+y+A+B+y+y+y+y+B+A+y+A+y+A+w+B+w+B+x+v+t+t+t+v+t+r+r+l+d+:+.+L.L.L.O.J.J.L.J.L.J.L.J.J.J.L.L.C.J.A.C.C.A.L.A.J.J.L.L.L.L.I.L.I.I.L.L.L.L.C.C.J.J.A.",
|
||||
"1 8 2 2 2 2 1 1 4 b 7 7 7 b 4 7 1 4 4 7 4 7 | - = - - 6 5 { : : 6 6 6 B B G O O +.` I +.G ` +.I ` F I G >.!.!.(.Y T W &+<+^+^+4+4+|+|+^+|+|+|+6+b+i+p+m+s+m+p+m+s+s+r+s+t+t+o+t+t+x+s+y+x+y+s+s+x+s+y+y+y+t+y+m+x+x+x+x+y+s+x+y+s+o+t+s+r+p+k+h+e+3+|+4+e+o+t+B+y+A+y+y+B+y+y+y+y+A+y+y+w+s+t+A+y+B+x+y+v+t+B+w+r+r+d+/+.+L.R.L.L.I.I.L.L.O.J.L.J.J.J.J.J.J.C.J.A.A.A.G.A.J.J.J.L.L.L.J.L.L.J.L.I.L.L.L.L.J.J.I.",
|
||||
"4 1 ! 4 4 1 1 4 4 e b b b 4 7 7 7 7 7 1 b b 8 | | - 6 B u K p p p p G ..S +.+.+.+.<.|.2.2.+.|.` ` |.` #.0.:.(.R C g p.'+)+)+4+^+^+^+)+)+'+'+!+[+[+8+g+q+t+s+v+s+s+s+s+s+s+x+s+x+x+v+x+s+t+s+y+x+y+y+x+m+y+x+x+y+y+y+y+x+y+y+y+x+y+x+s+v+s+s+p+p+c+c+4+^+6+e+q+q+B+B+A+t+B+B+y+A+w+y+y+y+t+B+B+t+t+t+t+v+t+v+t+t+t+r+l+d+.+.+I.L.L.I.J.J.L.L.L.J.L.L.L.L.L.L.J.J.J.G.G.A.J.C.I.J.L.C.J.L.A.C.C.A.I.A.L.C.G.A.I.J.",
|
||||
"! 4 8 4 ! 1 4 4 b | 7 4 e 7 7 7 7 1 7 4 b b b e s i v G K N M .+...2.k.n.n.n.H.F.n.-+W.-+H.W.F.F.W.n.M.o.q.f.i.e... +^+)+)+)+)+)+~+,+>+>+>+>+>+~+[+5+f+o+m+t+s+s+s+s+t+t+s+t+s+x+t+y+y+y+t+y+s+t+y+y+y+y+y+x+x+y+y+y+s+x+y+s+x+t+y+s+x+s+s+m+p+h+e+4+4+|+4+i+o+t+B+B+w+t+y+y+y+y+t+t+y+y+t+v+B+w+v+y+v+v+t+r+t+r+w+d+d+.+R.L.R.L.I.I.J.J.L.G.L.L.L.L.L.J.J.I.J.J.L.J.J.J.L.J.J.L.L.J.C.A.C.A.J.C.C.L.C.D.A.J.J.",
|
||||
"4 ! 4 4 4 4 4 7 7 7 4 e 4 4 1 4 7 e 7 e e 7 q s v G I +.}.}.n.H.n.H.-+>+-+-+-+)+-+-+-+)+)+^+)+^+'+-+)+>+>+Q.$+W.W.@+_+}+^+)+{+{+>+&+ +>+`.$+ + +>+ +~+|+b+o+s+t+t+s+t+s+s+y+s+x+o+y+y+t+y+x+s+y+y+y+y+y+y+x+y+y+y+x+y+y+y+x+y+y+y+s+y+s+s+s+s+p+q+m+e+4+^+|+b+e+t+t+y+y+y+y+y+w+w+y+y+y+t+x+y+y+v+y+v+v+B+u+t+t+t+r+q+l+:+.+R.L.R.L.L.J.J.L.L.G.J.J.L.L.L.L.I.J.J.J.I.L.I.L.L.L.L.O.O.C.L.A.A.J.A.C.G.D.A.G.L.L.",
|
||||
"1 1 4 1 4 7 4 7 ! b b 7 7 8 1 b 1 b 4 7 e s s I |.2.|.W.W.>+>+-+)+-+)+^+^+4+4+^+6+|+0+6+|+0+|+6+6+|+4+^+4+)+4+)+)+4+4+2+4+^+)+{+)+{+ + + + + +W. + +@+!+^+0+h+p+t+s+x+x+s+t+y+s+x+s+x+y+t+y+y+o+x+y+y+y+y+y+y+x+y+x+y+x+y+x+y+y+y+y+y+v+x+t+x+s+q+m+k+c+4+4+4+c+k+t+B+t+t+y+x+t+w+y+t+y+y+v+s+y+t+t+v+v+s+v+t+r+r+r+r+l+/+.+O.L.L.J.J.J.J.J.L.L.J.J.J.J.L.L.L.J.L.L.I.I.L.L.L.O.L.L.O.L.L.O.J.A.A.L.G.G.G.J.L.L.",
|
||||
"4 4 4 2 2 4 7 4 1 4 7 4 4 4 7 8 7 7 e s s +.|.n.n.W.-+-+)+-+^+|+|+|+0+|+6+6+4+0+6+^+6+6+6+6+0+0+0+6+6+c+b+6+4+c+4+4+6+6+4+4+4+4+^+)+]+$+ + +Q. +Q.Q.W.W.-+^+c+m+m+s+s+s+x+s+s+y+t+x+s+s+y+y+y+y+y+o+y+o+y+y+x+y+x+x+x+y+x+y+x+x+y+y+x+x+y+x+s+p+s+p+m+k+4+|+^+4+c+p+t+A+t+B+t+x+x+v+x+v+v+s+t+s+w+B+t+t+B+r+w+w+t+r+w+l+d+.+R.O.L.O.L.J.J.L.J.J.O.I.I.J.L.L.L.L.L.I.R.L.L.L.L.L.L.L.L.O.O.O.O.L.L.B.C.C.C.C.C.G.",
|
||||
"7 4 4 4 4 4 7 4 4 4 b 4 b 1 7 e e s F ` |.F.V.-+-+)+-+^+[+[+[+|+6+0+|+6+6+6+0+|+0+6+0+c+4+c+4+0+0+0+8+0+c+c+0+0+0+8+b+b+c+c+4+c+4+4+^+{+{+&+ +$+Q.W.W.K.@+`.)+4+h+s+s+t+y+y+s+x+y+y+x+x+s+x+y+y+y+y+y+y+x+y+x+y+y+y+y+y+y+y+y+y+y+y+y+s+t+s+s+p+t+s+p+h+c+4+}+}+4+k+v+B+t+v+B+t+y+v+x+t+t+v+t+v+t+t+t+t+t+v+r+r+t+r+r+l+a+/+R.L.L.L.L.L.L.L.O.L.O.O.L.I.O.O.L.L.L.L.L.L.R.I.I.L.L.O.L.L.L.O.L.L.J.L.L.C.L.L.L.C.",
|
||||
"| 7 4 4 7 4 | e 4 4 4 1 1 7 e s I ` n.F.`.-+'+!+^+|+[+[+[+|+6+6+|+6+6+0+4+6+6+0+6+0+4+6+0+0+c+c+c+c+0+0+c+c+c+c+c+h+h+0+c+c+k+k+c+c+e+6+3+^+{+>+$+$+T.Q.Q.W. +^+6+f+t+x+y+t+y+t+s+s+y+y+y+y+x+y+y+y+y+y+y+y+y+y+y+y+y+y+x+y+y+y+s+y+y+y+x+t+t+s+s+p+p+k+c+6+4+2+^+c+k+t+v+y+t+B+s+t+B+v+v+v+v+t+v+B+r+r+r+w+s+t+r+r+r+l+a+/+.+O.L.L.L.J.J.L.L.O.L.L.L.L.L.L.L.J.L.L.L.I.L.L.L.I.L.L.L.R.O.O.L.J.I.J.L.L.J.L.J.J.",
|
||||
"4 4 2 4 4 e e v 7 4 4 e 7 s O +.p.F.`.-+~+_+^+(+[+|+6+4+6+4+6+4+6+6+6+0+6+0+8+0+5+0+c+0+0+0+0+0+h+h+i+h+i+i+f+i+c+c+k+h+c+f+h+k+c+h+c+0+e+e+{+{+{+$+$+ +T.Q.W.W.'+5+f+s+y+t+y+y+y+y+t+y+s+y+y+x+x+x+y+A+x+y+y+y+y+B+y+B+y+x+x+y+y+s+s+y+x+x+t+s+s+o+m+p+k+c+4+2+^+4+e+t+v+v+x+t+y+t+t+v+x+y+s+s+t+t+t+y+r+r+l+t+q+r+r+l+a+/+R.O.O.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.R.I.R.L.L.L.L.L.L.R.I.R.L.J.J.L.L.L.L.O.L.L.L.I.",
|
||||
"4 1 1 1 4 7 s e b b e s O 2.l.F.`.-+'+~+}+(+|+|+|+6+|+6+4+0+4+5+5+0+0+7+0+c+0+8+c+g+f+i+c+i+h+h+h+c+h+h+h+h+h+f+h+h+f+c+h+c+f+h+h+h+i+k+h+k+h+4+4+^+{+&+ +H.Q.Q. +^+8+f+y+y+x+v+x+s+x+y+y+x+y+y+y+y+x+B+y+B+x+B+y+y+y+y+B+y+y+y+y+y+y+t+y+v+x+x+t+s+q+p+h+k+c+|+^+)+c+k+s+y+v+B+r+t+y+t+v+v+t+r+t+t+t+q+t+t+q+w+l+w+r+r+d+/+U.O.L.L.L.L.L.I.R.L.L.L.L.I.L.I.I.L.L.R.L.I.R.L.L.L.L.L.O.L.L.L.J.J.L.L.R.L.L.L.L.L.",
|
||||
"4 ! ! 4 4 e s 7 7 q ` 2.n.K.;+-+,+'+^+(+^+}+|+|+|+5+6+6+4+0+4+0+5+8+0+8+8+0+f+0+0+0+0+f+8+c+k+k+h+c+e+h+h+i+h+i+h+h+f+h+h+h+f+i+f+k+h+h+h+k+c+h+4+4+3+{+{+&+Q.Q.W.=+[+0+m+y+y+t+y+y+s+y+y+y+y+x+x+y+B+x+B+y+y+B+B+x+B+y+y+y+y+y+y+y+y+t+y+s+s+x+y+m+t+p+m+m+k+e+4+)+4+e+r+v+s+t+y+v+s+r+r+v+v+v+q+t+t+q+t+r+r+v+r+l+l+l+a+/+R.L.L.L.J.L.L.J.L.L.L.L.L.L.L.L.I.R.L.R.L.L.L.L.L.L.L.L.R.O.L.O.L.I.L.L.L.L.L.L.L.L.",
|
||||
"| 4 4 4 | e e | I 2.n.F.`.,+~+<+)+^+(+^+[+|+|+6+5+6+6+4+0+6+8+8+8+8+8+8+0+c+c+c+i+i+i+c+i+i+f+0+i+h+h+i+i+i+i+i+i+f+h+c+h+k+p+i+h+m+m+h+h+p+k+h+e+h+4+6+{+)+$+ + +>+^+7+i+p+x+v+y+x+x+x+y+y+x+y+B+x+B+y+x+B+x+y+y+y+y+y+y+y+y+y+x+y+x+x+s+x+y+s+s+t+m+q+q+q+h+h+4+4+^+3+h+r+t+x+v+q+B+t+t+t+t+q+q+w+r+r+r+t+q+r+q+w+r+l+l+:+U.L.L.O.O.O.O.L.O.L.L.L.L.I.L.L.L.I.L.L.L.R.L.L.L.L.I.R.L.L.R.L.R.L.L.L.L.L.L.O.O.L.",
|
||||
"| ! 4 ! | | 7 s 2.H. +$+'+'+^+_+_+^+^+^+|+|+|+|+[+6+6+4+b+6+8+c+8+8+8+b+8+c+h+c+c+c+f+h+h+h+k+h+i+i+i+i+f+i+h+k+k+i+h+h+f+f+p+k+h+h+p+k+h+k+p+c+h+k+h+8+e+4+{+{+{+>+'+[+0+m+y+x+y+y+y+y+y+y+x+y+y+x+y+x+B+y+y+B+y+y+y+y+y+y+y+y+s+y+y+y+t+s+t+s+s+t+s+s+p+q+k+k+c+^+)+{+c+r+u+t+t+t+s+t+t+q+t+w+q+q+t+t+r+r+q+r+r+l+l+l+a+/+U.O.L.L.L.L.O.J.L.L.L.L.L.L.L.R.L.L.L.L.I.L.L.I.L.L.L.O.R.L.R.L.R.L.L.I..+I.R.O.O.L.",
|
||||
"4 1 | 4 4 7 q ` F.`. +,+>+)+^+^+|+}+}+|+4+4+|+4+6+6+6+8+6+b+b+8+0+0+c+0+0+f+c+i+c+h+c+h+c+k+h+h+k+h+o+i+m+f+n+h+h+k+h+o+m+m+h+m+f+k+p+m+m+f+p+h+p+h+k+e+c+e+4+3+^+^+)+^+|+c+m+t+y+x+y+y+y+y+y+y+B+y+x+y+x+B+x+y+y+y+y+y+y+x+x+y+y+x+t+y+v+x+x+t+y+s+s+o+p+p+p+h+e+e+4+)+4+c+t+s+v+t+q+w+q+t+q+q+q+r+r+r+q+w+r+l+w+l+l+l+l+/+U.R.O.R.L.O.G.L.J.L.L.I.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.I.R.I..+I.I.I.R.L.L.L.L.",
|
||||
"1 1 4 4 ! 7 I l.W. + +`.>+'+!+^+|+|+4+|+4+4+6+4+6+6+6+c+6+8+8+8+8+c+c+c+c+i+c+i+c+k+k+k+h+h+k+h+i+h+h+i+f+f+f+h+h+k+h+p+p+p+o+o+m+m+h+f+m+p+k+p+k+h+h+h+c+c+6+4+3+4+4+4+^+5+f+m+y+y+t+x+y+y+y+x+x+y+B+y+B+y+y+y+y+y+y+y+y+y+y+x+y+x+s+x+t+y+s+s+s+o+s+t+p+p+p+h+h+e+^+)+^+e+r+t+v+r+p+q+q+r+p+q+q+q+q+r+r+l+r+r+l+r+l+l+a+/+z.O.O.D.G.L.G.G.A.J.L.J.I.L.R.L.R.I.O.L.J.L.J.I.G.G.L.L.R.L.R.L.I.L.L..+I.L.L.I.L.L.",
|
||||
"4 ! 2 1 4 e _.H.W.W.`. +`.`.-+!+'+[+[+|+6+|+4+4+|+6+6+6+c+0+8+9+b+8+0+c+f+c+h+c+h+h+h+h+h+k+h+h+h+i+i+i+m+m+i+p+i+h+p+k+p+m+p+p+o+o+o+o+o+m+m+p+m+p+p+k+k+k+c+c+c+4+4+4+^+^+5+i+s+x+x+y+x+x+x+y+y+x+y+y+y+B+y+y+y+y+y+y+y+y+s+y+t+y+y+y+s+s+y+s+t+s+t+m+q+p+p+k+e+h+e+{+{+3+b+q+t+t+q+w+r+t+r+w+l+w+r+q+q+r+l+l+r+l+r+a+a+/+z.O.O.G.B.G.A.A.A.A.L.L.L.L.L.O.L.L.J.L.O.L.J.J.J.J.L.J.J.O.L.R.L.I.I.L.L.R.R.L.O.L.",
|
||||
"4 ! 2 4 1 s |.H.H.W.W.W.W. +W.=+,+_+}+|+4+4+6+4+6+6+6+6+6+4+8+8+c+c+8+8+c+f+i+i+f+h+h+i+h+k+i+i+f+m+h+i+h+m+f+k+i+i+m+h+k+m+m+m+m+q+m+m+p+p+p+p+p+m+p+h+h+k+k+c+c+4+c+{+4+^+|+5+f+y+x+y+y+y+x+x+y+x+x+y+y+x+y+x+B+y+y+y+y+y+y+x+y+s+s+y+s+s+t+x+t+s+t+m+s+p+m+p+k+c+c+4+)+^+e+l+t+t+p+w+p+q+r+q+q+l+l+l+l+r+r+l+l+l+l+a+a+Y.z.G.G.G.D.G.G.C.A.A.C.J.A.J.L.L.L.L.L.L.L.L.L.J.L.J.L.L.J.O.O.L.L.R.L.L.L.L.L.L.R.L.",
|
||||
"! 4 ! 4 4 q |.H.H.Q.H.W.V.F.V.W.Z.=+!+}+6+6+4+c+4+c+6+0+8+0+8+8+0+8+f+c+f+c+f+h+c+h+k+k+i+h+k+m+h+i+o+i+o+k+p+f+h+m+m+p+m+k+p+p+p+m+p+p+m+m+m+p+p+p+m+p+p+p+h+c+c+h+e+c+4+4+^+6+g+o+t+y+t+y+y+x+y+y+y+x+y+y+y+y+y+y+x+y+y+y+t+y+x+v+x+x+t+y+x+m+s+s+s+t+q+q+p+p+k+c+4+4+)+{+3+k+q+r+q+p+q+q+q+n+q+q+r+l+q+l+l+l+k+k+a+a+/+U.O.O.O.G.G.C.C.y.D.C.C.C.A.L.B.O.O.O.O.O.L.L.L.L.L.O.L.O.L.L.O.O.L.R.L.R.O.O.O.L.L.O.",
|
||||
"! 4 4 4 1 F l.H.H.H.H.H.H.Q.H.H.F.V.=+!+^+4+4+c+4+c+|+6+6+0+8+8+c+8+c+c+c+h+c+k+h+f+f+h+h+h+i+i+f+h+m+h+h+h+m+m+h+p+p+p+m+m+m+o+p+q+p+q+p+p+m+m+p+p+p+h+h+k+p+k+e+0+c+4+4+|+^+[+5+f+m+x+x+y+y+x+x+y+y+y+y+x+B+s+x+y+y+t+o+y+y+t+y+y+v+x+s+s+v+s+o+t+o+o+s+q+m+m+k+h+4+4+<+)+{+e+m+t+q+q+q+q+r+l+w+k+k+l+q+q+l+l+l+k+a+a+/+z.O.G.O.L.L.A.C.A.G.C.O.B.L.A.C.B.B.O.L.L.L.O.L.L.L.O.O.O.O.O.O.L.L.L.L.R.L.O.O.L.O.O.",
|
||||
"4 ! 4 2 9 I 2.n.t.H.H.t.H.H.n.H.H.F.V.Z.!+^+4+4+c+8+c+6+8+8+0+c+0+c+c+c+g+8+h+f+c+h+h+f+f+f+h+f+h+o+i+f+m+m+k+i+q+k+m+m+m+o+k+m+p+p+p+m+q+p+p+p+p+p+k+p+k+h+h+h+h+e+h+c+4+4+4+4+|+8+o+t+y+y+y+y+y+y+y+y+y+t+y+y+y+x+x+x+x+y+t+x+s+s+s+s+s+t+y+t+t+s+s+s+o+m+p+k+p+e+c+4+{+{+{+4+l+q+r+r+q+q+l+l+l+w+l+k+l+l+k+l+l+e+g+1+Y.R.O.O.O.O.L.L.L.L.J.L.J.G.C.L.C.A.G.C.C.C.D.O.O.D.O.O.O.O.D.O.G.L.J.L.L.O.O.L.L.L.L.O.",
|
||||
"4 4 ! 2 2 F 2.n.p.n.t.t.n.Q.n.n.n.p.p.V.Z.!+^+|+4+4+c+4+c+6+8+c+0+0+g+c+i+c+c+c+h+c+i+i+h+o+h+o+f+f+o+o+i+m+m+m+m+k+o+q+m+o+p+m+p+p+p+m+o+p+p+p+m+m+h+m+p+p+p+k+k+h+e+c+4+4+4+4+^+|+f+m+s+y+y+t+y+w+y+s+y+t+y+s+y+t+y+y+s+y+o+y+t+y+s+x+s+s+s+s+y+o+o+s+t+o+m+o+m+k+e+4+]+{+$+3+e+q+q+r+q+q+n+q+k+k+n+l+l+l+k+a+l+a+a+a+U.R.L.L.O.O.L.L.L.L.J.G.L.L.C.L.L.G.G.D.y.y.y.D.B.O.O.O.D.O.D.R.D.D.G.J.L.O.O.L.O.O.O.O.",
|
||||
"! 4 ! ! 9 I 2.t.p.t.p.t.t.n.t.t.H.p.p.l.E.V.!+^+6+8+4+c+b+6+c+b+8+8+0+f+g+c+h+h+c+f+h+k+k+f+o+i+h+o+f+f+o+f+o+f+m+m+p+m+p+m+o+p+m+p+p+q+p+p+p+p+p+m+q+p+p+h+p+p+m+k+4+c+c+c+4+6+6+|+5+8+o+n+y+y+s+x+s+x+s+t+s+y+t+y+s+t+y+m+t+y+x+s+s+s+y+s+t+y+m+t+t+o+p+p+p+h+k+k+h+b+4+{+>+{+3+l+q+k+r+k+r+l+k+l+l+l+e+e+e+k+a+a+a+/+U.G.O.G.G.L.O.L.L.L.J.J.L.L.G.A.L.O.O.B.C.C.G.O.D.B.O.O.G.O.O.R.L.L.O.O.O.O.G.L.L.O.O.O.",
|
||||
"! ! 1 ! 8 q 2.2.w.t.s.t.t.n.t.n.n.p.p.p.n.n.Z.=+^+6+4+0+e+8+0+c+b+8+8+0+f+f+c+i+h+h+h+h+h+c+f+i+f+m+m+f+m+f+o+k+p+m+k+h+o+o+o+p+o+o+m+m+s+p+p+p+p+p+o+p+p+p+m+p+p+p+e+c+c+c+c+4+6+6+5+8+f+y+s+y+y+y+t+x+s+B+t+y+s+y+x+x+y+y+s+o+x+t+t+s+s+s+m+t+s+s+t+q+q+q+q+m+h+k+c+4+3+{+$+{+3+e+q+k+k+k+k+k+k+l+k+k+k+l+e+e+e+a+a+Y.R.O.O.O.D.G.L.O.L.L.L.G.G.J.G.G.L.O.L.L.A.A.G.O.D.D.G.B.O.D.R.O.D.L.O.O.O.G.O.O.R.R.O.O.",
|
||||
"! ! ! 8 8 s 2.<.n.2.t.<.<.t.<.t.<.n.w.n.n.n.l.F.=+!+6+b+c+4+b+8+8+8+8+b+c+c+g+i+c+k+i+f+i+i+h+o+m+i+i+m+o+m+o+m+o+p+m+q+p+p+m+m+p+s+s+q+m+o+p+p+s+o+s+m+p+m+q+p+h+p+h+e+c+c+b+8+b+|+|+5+0+m+s+x+s+y+B+t+v+t+x+s+x+s+y+t+m+s+t+y+o+s+s+t+t+s+t+s+s+o+o+o+o+m+m+k+p+h+i+b+4+2+&+%+{+e+r+q+k+k+r+k+k+l+e+a+e+a+a+a+a+a+/+U.O.O.O.D.O.L.G.L.G.G.G.J.L.J.J.J.L.O.O.O.O.O.O.B.O.G.O.G.O.R.O.O.O.D.O.O.O.G.L.O.L.L.R.R.",
|
||||
"! < , 8 ! s +.<.<.2.t.t.<.p.<.n.<.n.<.p.2.n.l.p.S.;+(+|+c+c+b+8+8+g+8+b+0+0+f+i+c+k+h+f+f+i+h+i+o+o+i+i+i+f+f+f+f+m+m+m+m+p+q+m+m+m+m+p+p+s+p+p+p+o+q+s+p+m+o+q+o+p+m+k+i+c+c+c+c+4+4+|+6+f+o+y+t+y+v+y+x+x+x+t+x+s+s+v+s+s+m+t+y+o+s+s+s+s+q+s+s+s+t+t+q+k+m+i+k+k+e+b+e+^+%+*+*+d+e+r+k+k+e+d+k+b+e+a+e+e+3+e+d+a+Y.R.G.G.O.D.O.L.G.G.B.L.L.G.L.L.G.L.O.O.L.L.G.O.G.O.O.G.G.G.O.O.D.D.D.O.G.O.O.G.L.O.O.L.O.R.",
|
||||
"! , | ! ! 8 ` 2.n.<.<.<.p.2.p.<.2.<.n.2.2.2.2.l.l.S.=+(+6+0+c+0+c+8+8+8+g+c+c+c+h+0+c+c+h+h+k+i+f+h+i+m+f+o+o+o+q+q+p+p+p+o+m+p+p+p+p+p+p+p+m+m+s+o+o+p+p+p+m+m+p+p+r+h+h+k+e+c+e+c+4+|+6+0+f+o+y+t+y+s+y+t+t+x+t+s+t+y+s+s+s+y+o+t+t+s+r+t+s+s+r+q+m+m+p+m+q+q+i+i+i+c+b+3+{+X.*+3+k+k+k+k+k+k+e+e+e+e+3+a+3+3+a+/+U.O.O.O.G.D.G.D.J.G.G.O.O.L.L.L.L.G.O.G.L.O.O.L.L.G.G.L.L.L.G.O.R.D.O.G.O.O.O.L.L.O.O.O.O.R.",
|
||||
", , < ! ! 8 I +.<.<.t.<.<.<.2.t.m.<.<.t.t.<.m.2.n.k.S.=+}+6+b+8+c+c+0+8+8+g+f+0+h+f+f+c+i+f+h+h+f+o+i+o+m+f+m+m+i+o+m+m+p+p+p+p+q+o+o+s+s+p+q+o+q+o+o+o+s+p+p+o+p+m+p+p+h+h+c+c+e+c+c+|+}+6+0+o+x+x+y+s+x+v+t+x+t+x+s+t+y+t+m+s+t+o+t+t+s+s+q+s+s+t+q+o+q+m+i+p+k+k+k+c+e+3+{+*+*+:+e+g+l+l+l+l+e+a+3+a+e+a+3+/+a+Y.R.L.G.C.L.D.L.O.B.O.D.D.L.L.L.L.L.G.O.O.G.O.O.L.L.O.G.G.L.L.O.O.R.D.D.O.O.O.O.L.L.O.O.O.R.R.",
|
||||
", < , ! ! 8 I +.<.<.<.<.2.2.<.2.2.<.<.}.<.2.}.}.<.p.l.S.=+[+5+b+8+0+b+c+0+0+8+i+c+c+c+i+i+h+i+i+i+f+o+h+i+h+o+o+m+m+k+q+p+p+m+o+m+s+p+p+m+p+p+s+m+s+m+p+p+p+o+p+k+p+p+k+p+k+k+h+h+4+c+4+4+|+8+f+o+s+x+t+s+x+s+t+s+t+t+s+o+s+t+t+x+o+s+s+p+q+s+s+o+q+p+p+p+k+k+k+i+i+c+l+c+3+]+X.*+%+a+l+c+e+b+e+e+3+e+3+3+3+3+]+/+U.R.L.C.L.O.O.O.C.G.D.B.C.G.G.G.G.G.O.O.G.O.L.G.O.O.L.O.O.G.O.O.L.L.O.G.O.O.O.O.L.O.O.L.L.R.R.",
|
||||
"- , - , , , s ..<.}.}.<.<.2.<.<.2.<.<.}.}.}.}.<.<.2.p.k.V.!+[+8+j+f+b+b+8+0+8+8+f+i+c+f+i+i+h+k+h+f+f+f+o+f+i+k+o+m+m+m+m+p+p+t+m+p+p+p+p+p+p+p+p+s+m+m+p+p+o+m+q+k+m+m+m+k+k+c+h+c+c+6+4+4+|+0+i+p+x+y+t+x+s+y+s+s+t+s+t+s+s+o+s+t+m+t+s+o+m+t+o+t+q+o+o+o+o+k+k+k+c+b+b+3+{+*+*+*+a+l+b+l+b+2+e+a+3+3+/+a+/+/+Y.D.O.G.G.O.O.O.O.G.C.G.D.D.G.B.D.C.C.O.O.G.G.O.G.G.O.O.O.O.O.O.L.L.L.O.O.O.O.R.R.L.L.O.O.L.R.R.",
|
||||
"- - , - - < e +...<...<.<.<.<.<.}.2.<.<.}.}.}.}.}.}.2.2.l.S.!+[+6+b+b+8+0+b+8+8+0+c+i+c+i+h+h+f+h+h+o+o+f+o+m+o+k+p+m+p+p+m+m+m+p+m+m+o+s+m+o+p+m+p+s+p+p+s+p+p+p+m+p+k+p+m+h+k+k+c+b+c+4+4+4+|+c+o+o+s+x+t+y+s+t+t+s+y+o+t+o+m+s+m+t+s+o+s+s+s+q+o+o+q+l+o+l+k+k+i+k+b+b+b+]+%+*+*+d+e+e+a+a+e+2+3+a+3+3+/+/+Y.U.z.B.O.B.L.L.G.G.L.J.L.G.B.C.D.y.L.C.G.C.B.B.y.G.O.D.D.O.G.O.R.O.L.L.O.O.O.O.L.L.L.L.L.O.R.O.O.",
|
||||
"- - - - - < | O +.+.<.....<...<...<.+.<.<.}.}. .}.}.2.2.p.l.S.!+[+0+c+b+8+0+c+b+0+f+g+c+i+c+h+h+f+i+h+m+f+o+f+m+o+k+p+p+m+m+m+o+s+p+s+o+s+p+o+o+o+p+o+m+m+m+p+m+p+p+m+m+h+p+h+h+e+h+c+c+4+4+4+|+6+h+q+v+v+s+o+x+t+t+s+o+y+o+t+p+s+p+q+p+q+q+o+m+s+q+o+o+q+o+o+i+e+c+l+b+b+4+3+*+*+*+3+d+e+e+3+3+3+3+3+/+]+/+X.z.D.D.O.G.C.L.O.L.J.J.J.C.J.G.J.G.G.O.B.L.L.G.B.G.G.O.O.D.G.G.G.R.G.O.O.O.O.L.L.R.R.L.L.L.L.L.O.O.",
|
||||
"- - - - - , < s +.+.+.+.....<.....+.}. ...<. .<.}...<.<.<.l.p.Z.!+|+b+g+c+8+8+0+g+8+g+i+f+i+i+i+h+f+i+i+m+i+h+o+h+m+m+h+p+p+q+p+p+m+o+p+m+t+o+o+q+m+p+p+p+p+o+p+p+p+p+p+m+h+k+i+h+c+e+b+c+0+4+4+4+6+f+o+t+v+s+o+s+s+s+t+o+t+s+o+s+o+o+q+s+p+s+p+o+m+q+p+o+o+k+k+k+k+c+b+2+b+]+%+*+*+:+e+3+e+a+3+3+]+a+]+/+Y.U.z.R.O.G.L.C.G.L.R.O.G.G.L.L.O.O.C.L.O.O.O.O.O.A.G.L.J.D.O.G.O.D.O.O.O.O.R.O.L.L.L.L.L.O.O.O.O.O.L.",
|
||||
"- - - - @ - < e O -.+.f.+.+.....<.+.<. ...+.....2...<...}.2._.p.;+!+|+9+j+0+g+0+f+0+8+b+g+8+g+k+k+h+i+i+i+o+h+o+i+k+p+p+o+m+p+m+p+m+o+t+m+o+o+o+t+p+q+m+o+m+q+o+o+m+m+k+o+m+p+i+i+h+c+0+4+4+4+6+^+|+0+m+t+t+s+t+o+t+s+t+o+t+p+q+v+s+o+p+s+p+q+p+p+o+q+p+p+o+o+i+b+b+c+b+2+a+3+*+*+*+{+e+d+3+3+3+3+/+]+/+Y.U.z.z.D.G.G.L.C.O.L.O.G.G.J.G.C.L.L.O.O.O.D.O.O.O.D.L.L.O.O.D.D.O.D.O.D.D.G.O.O.R.O.L.O.O.O.O.O.O.R.R.",
|
||||
"- @ - = @ - , i s +.O -.........+.+. .<......... .......<...2.4.k.Z.!+[+0+g+c+c+b+8+g+0+0+i+c+c+h+k+h+h+f+i+o+h+p+m+o+h+p+p+m+m+o+s+m+m+m+m+m+m+o+o+m+q+p+q+m+o+m+k+p+m+m+f+i+f+k+k+c+b+c+0+4+4+|+4+4+f+m+s+t+s+t+s+t+o+s+m+q+s+p+q+p+q+q+q+m+p+q+p+m+k+k+k+k+i+f+l+e+b+b+4+]+%+N.*+:+3+3+3+a+]+]+]+/+X.U.z.D.D.O.C.L.O.O.L.O.G.O.O.O.O.O.L.O.O.O.O.O.O.O.G.L.L.O.O.D.O.G.G.O.O.O.O.O.O.O.O.O.L.L.O.O.O.O.O.R.O.",
|
||||
"- @ @ @ @ @ , < v S +.S S -.........S +... . . . . ... . .}...+.8.|.S.!+[+8+c+f+8+f+8+g+0+f+f+c+h+i+f+i+f+f+o+h+h+h+p+m+o+p+p+m+o+p+p+q+m+t+t+p+p+m+m+m+m+m+p+q+m+k+h+m+o+f+m+f+h+h+c+c+c+0+4+4+|+^+|+0+o+s+t+s+q+p+s+o+t+m+p+m+p+t+m+o+o+q+p+m+k+k+o+p+o+i+k+e+c+e+b+3+b+3+3+%+X.*+3+3+3+a+]+]+/+/+X.z.D.D.z.D.C.A.C.B.B.B.O.D.D.O.D.O.O.L.O.O.O.O.O.O.O.L.C.L.O.R.O.D.G.G.O.O.O.O.R.O.O.D.O.O.O.O.R.R.R.O.R.R.",
|
||||
"@ - - @ @ - - , i O S ..S ..O S -...S +... ...........+.....S G O F 8.S.(+6+c+c+c+8+f+8+8+0+c+h+f+f+i+f+f+f+f+h+h+m+h+i+h+h+p+p+p+m+p+m+p+m+m+m+o+q+p+p+p+k+o+m+q+m+p+o+h+o+i+m+h+k+h+c+c+4+c+4+4+|+}+|+0+o+s+q+s+t+q+t+s+v+s+s+q+p+q+p+q+q+k+q+m+o+k+o+k+k+k+h+k+b+a+4+2+3+]+%+*+*+:+]+3+]+a+]+/+X.U.U.D.D.D.B.C.C.G.B.O.D.D.B.B.D.B.B.B.B.B.L.O.O.L.R.O.O.O.O.O.L.O.J.O.G.O.O.O.O.O.O.O.O.O.G.O.O.O.O.O.R.R.O.",
|
||||
"@ @ @ @ . . @ - ( r S -.S -...S S S -.S S .. ...S ..+...S r G r i e F 8.S.(+0+b+b+9+0+8+f+0+0+c+c+f+i+i+i+h+i+k+m+p+i+o+q+h+o+i+q+o+m+o+m+p+p+m+m+p+p+m+m+m+o+m+h+o+h+o+o+o+k+k+h+k+k+c+e+c+4+e+3+4+_+^+6+f+m+t+s+s+p+q+q+q+r+p+q+q+q+p+o+o+k+q+k+m+k+n+o+i+k+c+b+c+j+3+2+3+]+%+*+*+:+]+3+]+/+%+X.U.D.z.D.C.D.D.D.D.D.y.B.B.B.B.B.D.D.O.B.C.B.B.B.D.O.O.D.D.O.O.O.R.O.O.O.O.O.O.R.R.O.R.R.O.R.O.R.R.D.O.O.D.R.R.",
|
||||
"@ - @ @ @ @ @ - ( k M M S S W S S S S ..S M .S S S -.M W r k : a a s I j.Z.[+8+f+i+b+0+8+0+f+0+f+i+h+f+f+i+i+h+k+h+h+m+h+q+p+p+m+m+q+m+p+h+o+p+q+o+m+p+p+m+o+f+m+f+m+f+f+h+m+o+k+h+h+c+0+b+c+6+4+4+4+^+|+8+q+p+q+s+t+p+p+p+m+p+m+o+p+p+k+q+o+i+m+k+o+i+k+k+c+l+b+j+3+b+3+3+]+*+*+:+:+3+/+]+/+Y.U.z.z.B.R.B.B.D.C.C.C.B.G.O.O.O.G.C.B.B.G.B.C.C.L.R.O.O.O.O.O.L.R.O.R.R.O.O.R.R.R.R.R.O..+R.R.R..+R.R.R.R.R.U.R.",
|
||||
"- - @ @ @ @ @ = - a B W M M .S S M O S S W K S S G r r 6 a } } 6 6 a s ` k.=+[+8+i+g+b+c+c+h+0+8+f+h+h+f+h+h+f+i+m+i+o+h+h+o+k+p+h+p+i+p+p+p+m+h+p+p+h+p+h+o+o+m+i+m+m+i+h+h+m+i+h+k+i+0+c+c+6+c+3+4+)+^+5+f+p+p+p+t+p+p+p+p+p+p+q+k+m+i+q+q+k+o+k+k+i+k+l+i+b+b+c+2+2+3+]+]+T.%+*+*+{+/+]+X.U.D.D.D.B.O.B.B.B.D.D.D.B.B.B.O.R.B.L.L.B.C.B.G.C.G.B.D.O.R.L.R.O.R.R.R.R.R.R.R.R..+.+.+.+.+/+.+.+/+.+.+/+.+.+U..+",
|
||||
"@ @ @ @ @ . @ = < r M K K M M W S M S K S M M M y k : ( } ( : } 5 a | s _.E.!+6+8+c+0+8+8+8+c+f+0+c+c+c+f+f+i+f+i+h+i+o+q+o+m+m+p+o+m+m+h+m+h+p+i+i+p+i+o+m+k+k+p+h+i+h+p+k+i+i+k+h+b+k+c+4+c+4+|+4+|+_+^+b+o+t+s+p+t+q+q+p+p+o+o+o+n+p+h+k+i+k+i+k+k+i+i+b+c+b+b+3+3+3+]+]+*+*+%+:+]+/+X.Y.z.B.R.R.z.D.B.B.y.c.D.D.O.O.D.O.D.G.L.O.L.O.B.O.C.R.O.R.O.O.R.R.R..+R.U..+/+.+/+.+.+z+.+z+/+z+/+z+/+z+/+d+/+/+/+/+",
|
||||
"@ @ . . @ @ . @ @ - 6 B K K M M M M M M M G G j j 5 } : : } ( : : 6 ( | 8 s 4.S.(+8+f+c+c+c+8+8+g+f+g+f+c+g+f+i+i+g+o+i+f+h+p+k+m+h+o+o+p+i+o+o+m+m+o+m+m+i+m+p+h+i+h+o+i+h+h+p+h+i+i+c+k+k+c+4+c+4+3+^+'+!+|+c+k+p+p+m+s+p+q+k+k+o+k+k+q+m+h+h+k+h+k+k+e+i+b+b+2+b+4+3+]+]+%+%+*+%+/+%+/+U.D.D.B.B.O.B.z.y.B.D.B.B.D.D.B.D.R.O.O.O.B.O.L.O.O.O.R.R..+R..+.+.+:+.+/+/+/+z+/+z+/+d+/+a+/+a+d+a+a+d+d+a+r+l+r+d+d+",
|
||||
". @ @ @ @ @ @ @ - , r B K B M B B W G B t t 5 5 [ } { : : } } } : } 6 a 7 F 8.Z.(+8+c+8+8+8+b+8+8+0+0+f+f+f+f+f+h+f+f+h+o+h+m+k+o+f+m+i+p+m+h+k+h+h+h+k+p+o+h+k+h+i+f+i+i+k+h+k+k+h+h+0+0+c+c+c+4+4+3+<+~+~+6+o+q+q+p+p+q+p+o+q+q+o+o+i+i+k+k+i+k+c+c+i+e+j+b+b+3+3+3+1+]+X.*+%+*+%+Y.U.U.D.R.B.D.B.B.D.B.C.y.C.B.c.C.B.B.D.O.R.z.O.O.R.R..+.+.+.+.+:+:+:+:+:+d+d+d+d+d+a+d+a+a+z+r+r+r+r+r+w+r+w+r+r+r+r+p+p+",
|
||||
"@ @ . @ @ @ . @ - 6 p K r M W v M y y 6 } } ) } } { - : { } } ( ( : a a s 8.j.=+5+c+g+g+8+b+g+f+c+8+0+c+i+i+i+h+h+f+f+h+h+m+m+m+i+p+i+k+p+m+k+m+q+m+h+k+h+h+k+o+i+f+f+i+i+i+h+k+i+k+h+c+c+4+4+4+0+^+^+)+'+(+h+m+q+o+h+o+q+m+h+k+k+q+k+o+h+k+k+k+k+c+8+b+7+3+b+3+2+{+]+%+X.*+*+*+Y.Y.z.B.O.B.O.B.R.R.B.c.B.y.B.B.B.y.B.B.B.O.O.R.R.R..+:+.+:+d+d+d+d+z+d+u+d+d+d+d+r+l+r+r+r+r+r+r+r+r+r+r+r+r+w+l+t+s+r+r+t+",
|
||||
"@ @ @ . @ @ . . - ( y r K r B p r 6 : } : ) { ) { = { { { : { } } : : 6 | s 8.j.!+7+8+8+0+0+0+c+b+c+i+f+f+i+i+k+i+f+f+f+h+h+h+h+o+h+p+h+i+o+f+i+i+i+k+f+i+h+m+h+h+h+h+i+i+f+i+h+k+h+e+c+0+c+c+6+4+{+3+)+{+)+6+k+p+q+q+k+o+k+p+h+o+k+k+k+l+i+c+c+b+b+b+8+e+b+2+2+1+a+]+%+X.Y.Y.Y.Y.z.D.G.L.O.B.R.O.B.O.B.C.R.O.B.y.D.D.C.D.O.R.R..+.+:+z+d+d+d+d+d+d+k+r+r+r+v+r+r+r+r+t+w+w+t+t+r+r+w+w+t+t+t+v+v+v+t+v+v+t+",
|
||||
"@ @ . . . @ @ . - - k p t W k 6 : } { = - - { { { { - : = { ( : } } : : ( 7 F 8.S.(+5+g+c+c+8+0+8+0+8+0+8+f+f+k+h+i+i+i+h+o+i+h+i+h+o+o+i+o+o+f+o+f+m+o+k+h+h+i+f+i+h+h+c+h+c+h+c+i+c+c+c+4+c+4+0+|+{+)+>+>+|+c+h+q+o+k+o+k+p+k+i+i+i+i+i+g+c+i+e+8+b+7+2+b+2+3+]+]+%+X.Y.Y..+U.z.z.L.L.O.O.C.O.R.R.R.C.C.B.O.B.B.O.B.C.B.B.R..+:+z+d+d+d+u+r+u+p+r+v+r+r+p+s+q+t+t+r+r+r+q+t+t+t+v+r+t+t+v+t+t+t+v+y+x+v+v+",
|
||||
". @ . @ . @ @ . . = 6 k j j } ) = = = = = - = { ) { { { { { : { } } } } 6 a s H j.Z.[+8+b+b+c+8+0+8+0+g+f+c+h+f+k+h+i+h+k+h+f+f+h+h+f+h+h+f+f+f+f+f+f+h+f+i+i+i+i+i+i+k+h+c+i+c+i+c+g+c+0+0+4+4+4+4+4+]+{+>+'+c+q+m+k+o+h+m+k+k+k+k+k+k+l+g+g+b+0+b+7+b+4+3+3+1+1+]+/+x.u.U.U.R.z.B.O.O.O.B.O.B.B.O.B.B.O.O.D.O.G.B.B.R.z.R..+:+:+d+d+k+k+k+k+q+q+k+q+p+s+r+p+s+r+r+t+s+s+t+v+s+t+t+x+t+v+y+v+t+y+y+v+t+x+y+",
|
||||
". @ @ @ @ @ @ = 6 } ) = { = { = { = = { { ) ) = { { } : { } } } [ } 6 i s 8.E.!+5+8+8+8+b+8+b+0+0+0+0+0+0+i+h+k+f+g+h+h+f+f+h+f+f+h+f+i+f+i+g+i+h+i+i+f+i+i+k+h+c+h+f+i+i+f+c+c+c+c+c+c+6+4+|+4+)+{+$+>+^+e+o+k+k+k+h+h+i+i+k+k+c+b+b+c+b+b+b+2+3+2+2+3+1+]+%+X.U.U.z.U.B.z.D.B.C.D.B.B.O.O.C.C.C.O.R.R.z.O.O.z.O.z..+.+r+e+k+k+k+k+n+g+o+o+q+t+p+t+t+r+y+t+t+v+v+s+t+t+v+x+v+x+y+t+y+v+v+B+w+y+B+s+y+",
|
||||
"@ @ . . . . @ = = = = = & = = { = = { = = ) = { { ~ : { { } : } : 5 a r i s 8.S.(+6+b+c+8+c+0+b+b+8+g+0+f+f+c+h+h+f+f+i+h+i+i+i+i+f+h+f+f+f+f+f+i+i+h+i+f+h+h+h+h+c+i+c+c+c+f+c+c+c+8+0+3+|+4+^+^+{+ + +)+0+k+p+k+o+k+k+k+k+i+i+k+8+b+j+2+9+2+b+2+2+4+1+/+1+X.x.z.z.z.z.z.D.z.D.B.O.B.B.B.B.L.C.R.O.R.U.R.D.O.O.z.R..+d+3+e+e+e+k+i+e+i+k+k+o+k+q+t+r+t+t+x+v+v+t+B+s+B+y+t+s+v+s+y+y+y+t+w+y+y+t+B+t+",
|
||||
" @ + . @ @ = @ @ @ = = = = = = ) ) { - ) ) ) ~ { { { } } [ 6 5 6 6 a s F l.Z.[+8+c+c+c+c+8+c+0+8+8+c+f+0+f+0+i+f+i+h+f+i+h+i+f+i+h+i+f+c+f+f+i+h+k+c+k+k+e+h+k+h+k+c+8+f+c+b+c+4+0+e+4+4+3+)+$+$+ + +|+k+p+k+k+k+i+i+k+e+c+e+b+c+b+b+b+4+4+b+2+2+1+]+%+X.z.z.z.D.z.z.O.z.B.C.C.O.O.O.B.R.B.O.R.R.z.z.z.z.R.R..+:+d+3+c+b+b+l+g+l+b+b+c+i+k+i+o+q+s+q+t+v+v+t+t+t+s+v+y+y+y+v+t+A+A+t+y+t+y+y+y+y+",
|
||||
". . @ @ % . . $ @ % = = { = & = = = = = - { ) ) } } } { } } 5 } 6 5 k k i s ` j.=+7+8+b+c+b+b+8+8+8+0+8+b+b+c+i+c+c+h+f+c+f+f+h+c+f+i+f+c+f+i+i+0+h+h+k+c+0+f+c+c+e+c+c+b+c+b+0+b+c+4+6+2+4+|+3+^+&+Q. +<+c+k+p+i+i+k+k+c+h+c+0+c+4+b+3+4+2+2+2+1+3+]+1+X.x.g.z.g.a.z.z.z.z.B.R.R.R.U.R.R.R.R.R.R.R.R.R.D.O.R.R..+:+3+e+3+l+b+j+e+b+b+b+j+b+j+b+l+k+k+q+s+t+y+y+y+w+B+y+t+t+t+x+y+y+t+w+w+A+A+t+y+y+",
|
||||
"@ . . . $ @ @ @ @ & @ = = = @ & & ) = = = - { ) ) = { } { } } 5 5 6 5 6 6 a i I 8.E.(+6+b+0+0+8+8+8+8+0+f+0+g+0+f+f+0+c+i+c+i+f+f+c+c+i+f+c+f+0+i+c+0+c+h+h+c+c+f+f+h+c+c+0+0+c+0+0+0+c+4+4+4+4+{+)+{+Q.Q.{+4+k+k+k+c+e+k+e+e+e+b+b+b+4+b+3+2+4+3+<+]+]+%+Y.U.U.U.U.x.U.U..+.+.+.+.+.+.+.+.+.+.+U..+U.R.R.R.R.R.R.#+:+2+b+2+j+3+j+2+2+b+3+e+4+b+4+b+e+e+k+o+k+s+r+x+t+t+B+w+B+t+t+y+A+y+y+y+y+w+y+t+y+",
|
||||
" @ @ @ @ @ @ @ . @ @ = @ @ = = = ) = = = - { { ) ) } } ~ { } { } [ g ( 6 5 k a a i I 4.Z.(+8+2+b+c+6+8+8+8+0+c+0+0+8+c+c+c+0+g+c+c+0+f+h+h+0+f+0+i+c+f+i+f+8+c+0+f+0+0+8+8+f+c+c+8+b+c+4+6+c+4+4+^+4+{+>+&+m.@+3+b+n+i+k+i+c+e+c+c+c+e+4+3+4+b+4+3+3+3+]+a+]+/+Y.*+/+*+/+*+*+:+#+*+#+:+:+:+:+/+:+.+/+.+.+.+.+.+R..+.+:+3+3+3+b+2+7+a+b+2+2+4+2+a+2+2+2+2+3+b+b+i+k+t+t+y+B+w+t+w+t+B+t+y+y+w+w+w+y+A+A+y+",
|
||||
" . % @ @ @ = = = @ @ = = = = = = = = = { } } { { [ } } } } } } 5 6 k a a s ` j.!+5+8+b+b+6+8+8+8+0+8+8+0+0+f+0+c+0+0+0+c+0+8+0+c+c+c+0+f+c+c+c+c+f+c+0+8+c+c+0+0+8+0+c+6+0+0+8+6+4+4+4+4+^+{+$+++q.K.1+b+g+c+c+b+c+b+b+3+8+4+b+3+2+3+2+3+3+3+3+3+:+d+:+:+d+:+d+:+d+d+3+d+e+e+e+d+d+d+d+d+:+d+:+/+/+/+.+*+.+:+{+3+3+4+2+7+2+a+2+a+2+7+2+a+3+3+4+3+2+4+a+e+r+r+w+v+B+t+A+w+A+s+y+y+y+y+y+w+y+w+y+",
|
||||
"@ @ @ @ @ = @ @ @ % = = & ) = = { = { { { { { : : ) } [ { 5 } 6 5 6 j 6 k a a s |.S.!+6+8+6+c+4+6+b+4+0+0+0+0+8+0+0+g+c+0+g+8+g+8+f+0+f+g+0+0+0+8+8+0+0+c+0+0+f+b+8+c+0+8+c+4+8+4+0+c+4+3+^+3+{+{+%+q.T.]+b+e+k+b+c+c+c+b+0+3+b+4+b+b+b+e+h+e+e+e+e+e+e+e+h+d+k+k+e+e+k+k+k+d+e+k+k+e+a+d+k+d+d+d+3+d+d+3+:+:+3+3+3+4+a+3+3+4+1+3+2+2+1+2+4+2+3+3+2+3+1+4+4+b+g+o+q+t+y+t+y+t+B+t+y+w+w+w+y+A+B+A+",
|
||||
"@ @ @ @ @ % $ @ @ @ & = @ @ = % & & { { ) { ) ) { { : } } { } 0 ~ 5 5 6 5 g 6 j a r I l.Z.^+b+b+6+0+6+8+b+6+6+7+c+c+8+0+8+0+8+0+0+0+0+c+c+0+c+c+c+0+g+8+c+0+c+c+8+0+b+8+8+c+4+b+b+b+4+6+8+6+4+4+)+{+$+*+q.q.%+6+b+i+b+b+e+4+e+b+b+l+e+e+b+e+e+k+k+k+k+k+k+k+r+k+k+k+r+k+k+k+k+h+p+r+k+p+k+o+k+p+r+r+k+e+e+e+a+e+3+e+4+e+c+c+c+3+3+3+<+]+1+1+]+]+2+]+1+1+3+]+1+]+3+4+g+q+t+y+t+B+w+A+y+y+y+A+A+B+w+t+y+",
|
||||
"@ . @ @ $ @ $ @ & @ & @ = % = & ) ) { = ) { { { } } { } } { ( } } 5 5 } 5 j 5 g 5 0 a r ` F.!+[+6+c+b+6+6+6+9+9+0+6+6+0+8+8+8+0+8+5+8+8+0+8+0+8+0+0+c+0+c+0+c+c+8+0+8+0+0+8+8+8+8+8+6+8+4+4+4+4+4+4+{+{+$+N.N.@+1+c+b+b+b+b+b+b+b+e+c+k+k+k+h+k+k+h+k+k+h+h+k+h+h+k+k+h+k+k+k+m+k+k+k+r+r+m+k+k+i+h+o+k+k+k+k+k+e+e+b+e+b+e+e+e+b+3+e+3+2+]+3+]+3+]+3+]+]+1+3+]+]+1+1+3+j+l+q+B+t+y+y+A+w+w+A+A+w+y+A+A+",
|
||||
"@ @ % @ % $ = = @ = @ = & = = ) % { : { ) { { { { { } } ( } 5 [ } } 5 5 5 5 j j 5 6 i I 4.Z.(+|+6+8+6+7+5+5+6+8+5+8+6+0+8+9+8+0+8+9+9+8+b+0+8+8+0+0+0+c+0+8+0+b+8+8+8+8+6+b+8+6+0+b+8+6+6+4+^+4+^+{+{+T.N.i.N.3+b+b+e+c+e+e+i+c+k+i+k+k+e+i+h+k+h+k+k+k+h+k+k+p+k+p+k+p+m+k+q+k+h+h+h+k+o+o+p+q+k+q+o+q+k+k+p+h+o+i+k+c+k+k+i+i+e+e+e+b+3+3+]+1+]+]+1+]+]+]+1+]+]+1+]+2+j+n+o+y+t+y+y+y+y+y+A+A+B+A+y+",
|
||||
" @ % % & @ & @ = = & = % ) ) = = ) { ) } } { { { { a { g } } } { g } 5 5 6 6 6 5 0 } a s I k.Z.[+8+4+4+6+|+6+6+6+6+6+0+6+9+5+6+b+0+0+5+8+8+8+8+0+b+8+c+0+8+0+8+0+0+c+c+8+b+8+b+b+b+6+6+4+4+4+4+4+^+)+{+$+N.N.$+{+b+e+b+l+i+k+e+k+i+k+h+h+i+h+k+k+k+h+k+h+k+q+k+k+k+k+m+i+k+k+o+m+q+k+p+p+q+q+k+p+p+o+q+i+m+o+k+q+k+k+i+q+i+k+p+k+m+k+l+e+b+3+3+]+3+]+]+]+]+]+]+3+]+]+]+1+3+a+l+q+B+w+A+w+A+y+y+y+w+A+B+",
|
||||
"@ . @ @ & & @ @ & $ & & = ) = = { = ) - ) { [ { { { } } } 5 { g 5 5 [ ~ } } 6 } : 6 5 } 5 k v ` F.!+6+6+7+7+6+6+6+6+6+6+6+6+5+0+6+6+5+8+5+8+8+8+8+0+c+8+c+c+b+b+8+8+6+8+4+8+6+8+6+0+0+4+6+6+|+|+4+^+{+)+{+$+$+*+{+3+c+c+c+e+c+k+i+e+h+e+k+k+k+k+h+k+k+h+k+k+i+o+i+m+k+k+p+q+o+k+k+o+p+k+k+k+o+q+o+p+p+o+q+q+p+o+k+o+o+q+k+q+m+k+m+k+p+p+k+k+c+i+e+3+3+3+]+]+]+]+]+]+:+]+]+]+]+3+b+g+s+y+y+y+A+y+A+y+y+A+y+",
|
||||
"@ @ @ % @ @ % @ & @ @ @ = & = ) = = { = : - ~ } } { } ~ { } 6 5 5 0 5 5 0 0 5 : a { 5 } } } 5 : 6 i O 4.V.^+4+6+6+7+|+6+6+0+6+6+0+6+5+6+8+0+0+0+6+0+6+6+8+5+6+8+6+0+5+0+6+0+6+0+8+8+6+c+4+6+0+6+|+4+1+2+4+|+)+{+{+{+3+3+e+e+e+e+k+e+c+e+h+e+i+c+k+i+h+k+i+o+k+k+o+k+k+k+k+p+k+k+i+k+o+p+k+k+p+q+o+q+o+p+k+q+q+p+o+o+p+m+q+q+k+m+q+q+q+q+q+k+q+o+o+k+e+k+l+e+a+3+3+3+]+/+{+]+{+/+]+]+]+4+e+k+s+x+y+B+A+y+y+y+A+A+",
|
||||
" @ @ @ % @ & $ & = & = = = ) ~ = : { { { : { { { ( { a { } 5 5 0 5 j 5 0 0 [ 5 } 5 [ g } 0 6 6 a i F l.;+[+6+|+6+6+|+6+|+6+5+6+6+5+5+6+5+|+6+6+6+6+6+0+0+6+0+6+c+6+8+8+c+4+6+8+8+7+6+9+6+4+4+|+|+|+4+^+<+)+]+3+3+e+e+e+b+i+c+k+k+c+e+i+c+l+c+e+b+c+k+e+k+o+k+i+i+k+k+i+m+m+p+o+k+i+o+m+o+h+p+o+q+k+m+m+p+q+p+p+q+q+m+o+o+q+o+o+m+q+o+o+o+q+k+m+q+k+p+r+k+e+a+3+3+{+]+/+]+:+{+:+{+{+4+4+c+o+t+t+y+A+A+B+y+B+y+",
|
||||
"@ @ = @ @ @ & & & & $ & = = = = = } { : ) : ~ { ) { { : } } a 6 6 6 p k j 6 } 5 ~ } [ [ } } ( ~ } : | r 8.S.;+4+4+4+4+6+|+6+[+|+6+|+5+|+5+5+6+6+|+6+8+6+7+6+c+6+6+6+8+6+6+6+8+8+6+6+6+b+6+7+6+4+4+|+}+^+4+{+{+4+e+4+4+6+8+c+b+e+e+c+e+b+e+e+c+c+i+i+k+c+i+i+i+i+k+k+o+o+k+k+k+k+k+m+l+o+k+p+q+o+k+o+o+q+q+k+m+p+q+m+p+r+t+q+o+q+q+q+m+p+q+q+o+m+q+p+p+q+m+m+h+k+e+3+d+3+{+{+]+]+]+]+3+{+2+2+b+o+t+t+y+A+w+A+w+A+",
|
||||
"@ = & $ % @ = = = = & = = : { { - { { : } 6 [ : } ( } 5 6 [ 5 5 k j p k j k j 5 0 } 0 [ } } : { } } ( i s 4.Z.^+4+4+4+|+|+6+6+|+|+5+6+|+|+6+6+6+5+6+6+6+7+7+6+6+6+6+5+8+8+6+6+9+8+b+6+4+6+6+4+4+|+^+}+_+^+^+3+^+3+4+e+4+2+b+c+c+k+c+e+b+b+e+e+c+e+c+i+k+i+k+k+k+h+h+i+p+k+i+n+o+k+m+k+o+p+k+p+m+p+q+o+o+m+q+q+p+q+q+m+p+m+t+o+t+t+q+o+o+m+p+q+p+q+o+p+q+p+t+p+p+k+b+e+3+3+{+{+{+^+^+1+^+4+|+4+f+p+t+y+y+B+A+A+A+",
|
||||
"@ @ $ @ = = = & = { = { = ~ { { { { } { } [ } { 6 5 } 5 j k j j t p p k k k j 0 } } } } { { } { } } : a e ` l.=+^+4+|+4+|+^+|+6+|+|+|+6+6+|+|+6+6+6+6+6+5+5+7+6+6+6+0+6+6+0+6+6+6+6+4+6+6+|+6+|+4+4+^+^+3+{+^+3+6+4+|+b+3+4+4+e+e+k+c+c+c+g+i+e+c+e+c+h+e+i+i+h+k+k+k+i+o+q+i+i+o+k+p+p+k+h+k+q+o+o+q+q+q+p+h+o+q+m+q+m+p+q+t+q+q+t+t+p+q+q+t+q+p+q+q+t+t+q+p+r+s+q+k+d+d+e+3+4+3+]+^+^+^+4+4+b+g+q+s+y+A+A+A+A+",
|
||||
"& = & & = & = = & { { ( = { = ) : ( } } } } [ : k 6 6 k k p r r t M M p k p j 0 5 [ } ~ { { { { { [ } { 6 s 8.S.!+4+|+|+|+^+|+|+|+[+[+}+5+6+|+6+|+6+6+6+6+6+6+|+4+4+|+6+6+4+6+7+6+6+4+4+6+6+|+|+_+<+<+)+<+{+2+)+^+4+}+4+4+4+6+4+c+c+e+l+e+a+g+b+c+e+b+f+c+k+k+k+h+h+k+k+k+k+q+k+o+g+k+o+q+o+h+k+q+o+i+m+q+q+q+o+q+p+q+q+p+p+o+o+o+t+t+p+m+m+p+s+s+o+p+o+s+t+s+p+p+p+p+p+k+k+3+4+4+3+4+3+^+4+4+4+0+i+q+s+x+y+A+y+",
|
||||
"= = = @ ) = = = = ) ~ ) { ~ ) { { } : } } } } 6 r k j a r p K t G M M B t j 5 j 5 : } } ~ ~ } ~ [ { { } : a I l.`.^+4+4+4+[+(+[+[+}+}+5+|+|+6+|+5+|+6+6+7+6+7+6+|+6+6+4+4+6+6+|+|+4+6+6+4+4+|+}+|+^+3+{+{+4+^+^+{+<+<+2+2+4+3+4+2+2+b+c+c+c+b+g+g+g+c+e+k+i+i+i+k+k+k+h+k+q+i+o+k+q+l+k+n+i+k+m+m+k+p+p+m+q+o+q+q+q+p+s+o+o+t+t+q+q+p+o+q+t+o+q+q+t+t+s+q+p+p+s+o+s+p+r+r+p+i+b+3+4+^+4+4+^+4+4+4+b+h+p+t+y+y+A+",
|
||||
"@ = = - { ) { = { { : { } { { { { } : } : 5 0 6 p r p r r B K K S M K K K j j 5 5 { { } { { { { } { { { : a e ` F.=+^+^+^+}+_+}+[+|+|+|+|+|+5+|+|+|+|+6+5+6+4+|+6+6+6+6+6+4+4+4+6+4+4+4+4+4+4+_+^+)+^+{+<+]+<+^+{+3+)+^+]+^+3+3+7+6+7+j+e+l+e+l+e+l+c+c+e+k+i+k+k+h+k+h+i+k+k+o+i+o+o+i+o+i+o+o+m+o+q+q+m+p+o+o+o+s+m+q+s+m+p+o+o+w+s+s+t+t+o+o+s+q+q+m+t+t+q+s+q+t+p+p+r+q+p+i+e+e+4+4+4+4+^+4+|+4+b+h+t+y+y+A+",
|
||||
"= = = ) ) ) & { = { { = : : : ( ( } 5 5 5 5 j p B K t p B M S S S S S .K t j 6 g ( { { { ~ ) ~ { = = { { : | s 4.Z.'+4+4+}+[+(+}+(+[+|+[+[+|+[+7+[+5+[+|+4+|+4+|+6+5+7+7+6+6+7+7+|+|+^+|+}+_+|+4+)+{+_+{+^+{+{+{+^+^+3+1+^+<+_+{+1+}+2+9+b+g+c+k+c+b+c+k+c+l+i+h+e+p+k+k+o+o+k+k+p+k+p+i+o+n+i+q+q+o+o+q+q+o+q+p+o+q+o+q+t+o+t+q+m+q+o+o+p+s+s+q+o+t+t+n+t+m+q+p+q+t+t+m+p+q+q+h+e+e+4+4+|+4+|+2+6+4+b+i+o+y+y+",
|
||||
"& = = { { ) = ) ) = : ( ( 6 : : 6 6 k 6 p t u t S M K r B G S S S S S G G t p 5 } = ( ~ = ~ & ) = ) ) ~ { { < e I F.=+^+^+_+}+^+}+_+[+[+[+[+|+[+[+[+5+}+[+|+|+|+|+|+[+[+|+6+|+4+|+|+[+[+^+|+_+_+^+^+)+)+]+^+)+4+{+3+{+{+]+{+^+<+)+1+4+<+4+e+e+k+e+i+k+c+l+c+e+l+i+i+k+k+k+k+o+o+k+h+k+p+i+p+k+m+m+o+p+q+o+q+o+q+o+o+o+o+o+s+o+m+t+o+t+s+t+q+o+o+s+o+t+t+o+t+o+t+o+t+o+s+t+q+p+r+o+i+e+b+3+4+4+|+7+6+4+c+c+k+s+t+",
|
||||
"{ { - { { ) } ) [ } : ( 6 ( 6 6 a p 6 p B K K M S ..G B O ......S .G G B M t j ~ { = ~ = ) ) ) ) ) ) = % { ( 8 s _.V.~+}+<+^+(+(+(+(+(+(+_+}+^+|+}+}+|+|+[+5+7+7+|+|+7+|+4+4+|+4+}+}+}+}+_+<+_+)+<+]+_+>+]+{+{+{+{+)+]+^+)+]+{+{+{+<+{+2+4+e+e+k+l+c+e+e+k+h+c+k+k+i+i+i+i+k+k+h+k+o+k+p+k+m+o+k+q+o+m+q+q+q+o+s+s+t+t+s+p+s+t+t+s+o+q+o+o+t+s+o+s+o+o+t+t+o+y+t+o+s+t+s+o+t+m+p+p+k+e+c+4+4+4+4+4+6+4+4+h+k+t+",
|
||||
"= ) { - : : } ) [ [ 5 6 a a ( a p v k t S S K G +...O K S ........ .S G G K p 5 ~ { { ) = % ) ) ~ = ) { $ ~ { < | F l.;+(+}+}+_+(+^+(+}+[+[+[+^+|+^+|+|+}+|+[+[+[+}+[+|+|+^+4+^+|+}+_+^+^+^+_+)+)+)+]+]+>+>+{+{+)+]+)+{+{+)+{+{+$+{+{+)+<+3+6+b+b+a+h+h+e+e+k+e+c+i+i+k+k+k+i+k+q+k+o+i+m+k+p+o+o+k+k+o+o+o+p+q+q+o+q+q+v+q+q+m+q+t+m+t+t+t+t+t+o+s+s+t+t+o+o+t+o+t+s+q+s+m+t+t+q+p+p+k+e+b+4+4+4+{+6+4+4+c+c+o+",
|
||||
") { { : { { : : } : 5 6 k a 6 k p p B G .S G O ....G G +.+.+.+. . .M B B p j } } ~ ) ) ) = ~ ) & ) & = { ~ = ( < i ` E.)+_+_+^+^+(+(+[+^+^+^+}+^+|+^+_+|+}+^+|+|+[+(+[+^+[+|+4+4+^+[+_+_+^+)+<+]+>+>+>+$+$+$+)+{+<+)+{+{+{+>+{+{+$+]+]+{+)+{+4+8+b+l+e+i+i+c+i+l+b+g+h+k+i+k+h+h+h+i+k+k+p+i+h+p+o+o+q+q+p+o+o+o+p+m+p+o+s+m+t+s+s+t+o+t+m+q+s+s+t+o+s+t+y+o+t+t+o+r+s+o+t+s+o+t+t+q+p+h+c+c+e+e+4+3+|+4+4+6+b+",
|
||||
"} { } { } } } : } } 5 k k k r p B B G G S G G O <.f.O G O O +.+...G B p k k a { } { = = ) & & ) & ) % % = = = = ( | I p.Z.'+}+)+^+^+_+_+_+(+(+^+^+|+[+}+|+|+^+}+}+}+}+[+|+^+_+_+^+^+^+^+)+<+>+)+]+ +&+&+&+>+$+>+$+]+&+>+$+&+]+$+{+>+&+{+{+)+{+]+6+2+l+e+l+l+b+c+g+g+l+h+k+k+k+k+k+k+o+i+i+p+p+i+q+o+o+o+o+q+p+p+t+q+q+p+o+t+p+q+q+t+t+o+t+s+o+q+o+t+o+o+o+t+y+o+t+s+s+t+t+q+s+o+t+o+s+r+k+k+c+4+4+4+4+|+4+4+6+8+",
|
||||
"} } } } { } } [ 5 6 j p t p i B G G O O G G G +.+.+.M G S S G G G v v p j ( } { = ) { & & % % & & & % & & = = & = < 8 ` F.~+)+^+<+_+~+!+[+_+(+_+^+^+^+(+^+^+}+^+|+(+(+(+_+_+}+|+_+^+^+)+<+'+>+>+>+>+>+ +$+$+&+]+,+&+{+$+{+$+>+&+&+&+]+@+&+]+)+)+<+7+2+b+b+e+g+l+e+e+c+l+c+h+k+k+o+i+i+k+k+k+k+p+m+q+p+m+q+m+q+o+o+s+m+q+s+p+t+o+t+n+s+o+t+o+s+s+t+o+y+t+t+o+s+o+t+o+t+t+o+t+t+t+t+s+q+s+q+q+k+h+0+|+4+4+4+4+6+4+",
|
||||
": : 6 : : } 5 j 6 6 6 p p p v O G G S G v B B S +. ...S S S S G p a a k } ~ ) = { = = = & & & % % & $ $ $ & & @ & = , s p.Z.^+)+^+^+^+)+^+^+(+^+_+_+^+}+(+(+(+_+}+}+^+^+}+^+_+^+<+)+{+)+{+~+{+>+$+&+&+@+ +$+ +&+ +&+&+ +>+&+&+>+$+$+$+&+$+&+@+]+)+<+4+2+g+e+c+k+e+e+c+c+g+i+i+e+k+i+i+o+i+o+k+k+h+o+k+m+q+o+q+p+q+q+o+q+t+m+t+t+s+t+s+t+t+t+t+o+s+o+t+o+t+o+s+s+t+o+o+t+t+o+t+t+q+t+q+s+q+p+k+e+c+6+|+|+4+4+}+|+",
|
||||
"6 6 6 : } 5 5 k k r k p K B v G G S S G B B O O S ..S S K ..G B p k 6 : { { = ) = = = & $ & & % % % $ $ % $ & $ $ = { i F F.,+^+<+)+<+^+^+_+^+^+^+(+_+(+_+^+}+^+^+^+_+_+^+~+^+_+^+)+)+{+,+&+ +$+&+ +W. +Q.&+$+&+&+ +$+&+$+$+>+&+&+&+%+>+&+@+&+ +&+{+<+4+3+e+k+i+i+h+c+l+c+e+k+i+h+k+k+k+k+i+h+p+p+k+m+o+o+o+o+o+m+p+s+o+o+t+s+m+t+s+t+o+y+o+t+t+t+s+s+s+t+t+s+o+t+t+s+o+t+t+o+p+t+o+o+q+s+q+o+m+c+c+c+4+^+4+4+|+",
|
||||
": a 6 : } 0 6 k j p i v M B G S S S S M G G O S S S O S S S B r 6 : } { = [ = = @ = @ & $ $ @ $ & $ $ % & & ) $ & = ( s 4.Z.)+^+)+)+)+'+)+~+^+)+^+^+_+!+_+_+^+^+^+(+_+^+<+_+!+~+_+)+{+>+>+ + + + +Q.%+W.Q.W.&+&+&+$+&+&+&+$+&+&+$+&+&+&+&+@+&+&+>+&+<+2+2+e+e+l+e+c+e+i+c+k+e+c+g+i+i+k+k+i+k+m+k+k+h+m+o+q+q+q+q+p+t+o+o+t+t+o+s+t+o+y+t+o+x+o+s+t+s+m+t+s+o+t+t+s+t+s+t+o+t+t+o+y+r+q+t+r+r+c+b+c+4+4+4+4+^+",
|
||||
"6 : : : 6 j p t B p p B M S G S S ...... .S S +. .S v G G G r k ( : : : { { { @ @ $ $ % @ $ $ . & & @ % % ) ~ { | ` p.,+)+{+)+'+)+~+^+~+^+^+~+(+_+^+^+^+'+(+)+^+)+)+~+)+'+>+)+$+>+$+@+ +Q.%+W.Q.T.%+++Q.W.Q.Q.&+Q.Q.&+Q.Q.&+Q.$+T.@+$+Q.&+&+&+>+_+3+b+b+e+g+k+e+l+b+c+i+i+i+k+k+i+k+k+h+k+p+m+p+k+p+o+o+m+m+q+o+t+t+t+s+t+t+t+s+o+y+x+o+s+t+s+t+t+o+t+t+s+s+q+t+o+o+t+t+o+t+o+o+t+p+q+o+n+c+c+4+|+|+}+}+",
|
||||
": } : 6 6 k B K K p B G G G S ..S S ........S S G B v B B p : 6 } { { : { ) & $ @ @ $ + % + & $ % $ & $ & < s 8.`._+{+{+)+^+'+'+~+~+^+)+~+~+_+)+_+)+_+<+)+^+{+~+)+)+>+>+>+ + +@+W.W.T.Q.Q.M.Q.M.%+%+T.$+Q.&+Q.T.$+Q.%+Q.&+T.%+Q.$+Q.&+&+&+>+<+1+4+e+c+k+c+l+e+b+b+c+c+i+k+i+h+k+h+i+k+k+m+i+o+o+q+k+o+q+o+o+o+o+t+t+t+t+s+o+o+y+t+o+t+o+y+o+t+o+o+t+o+s+t+t+o+t+t+t+o+t+s+t+p+p+p+o+k+c+c+4+|+|+|+",
|
||||
"5 6 5 a i B G M M B M M B G G ..S S +.+.+.S S G G k 6 k p 6 : [ { { = { - = $ @ $ @ % $ + $ @ % % @ % $ % @ @ - | +.l.>+)+)+)+)+~+)+)+'+~+^+)+^+'+_+)+^+)+)+)+{+~+)+>+;+>+>+ +@+ +Q.@+T.Q.Q.T.T.T.Q.M.M.%+T.T.M.%+W.T.%+Q.T.&+K.%+T.T.%+&+T.@+@+>+)+2+2+e+c+l+c+b+g+c+c+h+c+i+i+k+i+k+k+i+o+i+n+o+o+o+m+p+o+t+o+s+t+m+y+o+y+t+s+x+o+t+y+t+t+t+o+y+t+t+t+t+o+o+o+t+o+o+t+t+s+p+p+s+q+q+p+i+c+b+7+2+2+_+",
|
||||
"6 k p p p v S M M G S S B G G ..S S S S S G G G p p 6 6 k } : ~ & = = = = @ $ $ @ @ & $ @ @ ; $ . - ( s p.`.{+{+~+>+~+_+]+-+~+^+)+)+'+_+)+)+)+<+~+)+)+)+>+ +&+ + +&+&+Q.W.K.T.H.T.T.T.T.Q.M.Q.Q.T.Q.T.&+K.T.M.T.T.Q.%+T.%+Q.T.Q.%+&+%+]+<+1+4+b+e+g+e+g+l+e+k+e+k+i+k+k+n+k+i+k+p+i+i+p+q+o+o+o+o+o+m+s+m+m+o+y+o+t+t+t+o+y+o+y+s+o+y+o+t+o+t+t+t+t+m+t+o+o+o+t+q+q+s+t+q+q+q+c+b+8+6+2+|+",
|
||||
"k p t t B O S S G +.S B O G +.S ..G G O G B p p p B p 5 : : = = @ @ @ & @ & $ @ % + % + ; & . - r ` F.`.~+)+>+{+>+>+_+>+)+'+'+~+>+<+~+)+>+{+>+]+>+>+ +>+$+Q.W.Q.M.Q.Q.t.m.m.q.T.T.T.T.T.T.Q.T.Q.T.T.T.%+M.T.X.M.M.T.%+T.%+Q.Q.W. +&+]+4+4+j+e+l+e+c+b+c+i+e+k+h+i+i+i+k+i+i+k+k+i+o+o+o+o+o+t+t+t+t+y+o+s+s+s+s+y+t+t+o+t+o+y+o+t+x+o+y+o+t+m+t+y+o+o+t+o+t+o+q+p+q+m+o+q+c+j+b+4+2+",
|
||||
"p B G B B O O +.S S S S O O O S +.G v p p p i p B p 6 } { { = ~ $ $ $ $ + + + + . + ; + ; + % @ $ @ a s n.V.@+~+>+>+-+>+)+>+)+)+~+'+>+{+~+~+,+>+>+&+>+ + + +W.@+@+K.%+T.w.T.q.T.q.T.X.T.Q.Q.N.T.T.T.Q.T.T.T.T.T.T.T.T.Q.T.T.X.T.%+T.Q. +@+]+^+2+6+k+e+k+l+e+h+c+c+i+l+n+h+k+i+o+m+q+i+k+o+o+q+o+q+o+p+o+t+y+t+t+y+o+y+t+t+s+s+o+t+y+o+s+m+s+t+t+o+o+t+s+o+t+o+s+s+q+m+r+q+q+k+k+b+b+4+4+",
|
||||
"B G M M G O O G +.S G S S S O S G G B p B p v p p 6 : : ~ = = = @ $ $ + + % + % + % + % & @ - i ` F.;+)+>+>+>+-+>+)+)+'+>+>+{+>+>+>+>+>+>+>+$+ + +W.W.Q.Q.Q.Q.s.T.q.q.h.f.h.N.w.N.T.T.M.N.M.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T. +@+<+_+4+4+k+k+e+c+e+e+e+e+h+k+k+h+k+g+k+h+q+o+q+o+m+p+m+p+q+s+t+o+s+x+o+y+o+y+s+t+t+s+t+m+t+t+t+o+o+t+o+t+m+n+t+o+t+q+q+o+t+m+o+o+o+p+k+k+b+4+",
|
||||
"M M M B M G G O S S G G O G G S B v i p i i i 6 6 6 { = & @ & & & @ $ @ & @ + + + % % + + % + + + + $ & < O p.@+>+>+,+>+-+>+$+ +,+,+-+>+>+,+>+;+`. + + +Q. +Q.@+Q.Q.Q.T.q.q.q.i.6.h.q.q.T.q.T.q.T.q.N.s.T.q.Q.T.X.T.T.X.T.T.T.T.T.T.T.T.w.K.K.V.;+^+4+c+c+e+k+c+b+c+e+c+i+i+i+i+g+i+h+h+h+p+p+p+p+o+o+q+o+s+t+t+s+o+y+o+w+y+s+t+t+t+s+t+t+o+y+o+t+s+t+m+o+t+o+n+o+s+q+q+q+q+p+o+o+i+k+e+b+",
|
||||
"S K K B v B G S ..S O v O G G G G p i i 6 6 6 : { { { = & $ @ @ @ & . + . + + . + + + + + . & . $ = i 2.H.>+>+>+&+ +>+>+>+ +>+ +-+;+>+;+ + + + +&+Q.@+K.Q.Q.Q.q.Q.s.s.i.x.V 6.h.X.q.N.N.M.N.N.q.X.N.T.q.T.q.T.q.T.X.q.T.T.T.T.Q.w.w.m.2.p.F. +^+|+b+c+k+k+c+e+i+b+b+g+i+l+i+p+k+k+o+i+o+h+k+q+t+o+t+t+o+s+t+y+s+y+s+o+t+s+s+y+o+t+t+t+o+t+y+o+m+t+p+o+q+s+q+q+p+q+o+o+k+p+p+p+h+c+b+",
|
||||
"S S K B B G G S ..S G p v B G v i k i 6 : : } { { = = & $ $ @ $ + + + $ . & @ % ) 6 O H. +>+>+ + + + +>+ +>+ +>+ +>+ +&+ + +W.W.W.Q.K.Q.T.Q.o.w.q.q.i.9.R (.h.q.q.N.q.q.m.T.q.q.X.X.q.T.N.N.T.q.X.T.q.T.m.m.m.<.2.......2.F.`.~+4+4+e+e+i+e+c+g+i+g+i+k+e+h+m+k+k+h+p+m+m+o+p+o+q+t+o+y+o+o+s+y+s+y+t+t+o+y+y+o+y+o+t+o+t+t+p+q+q+o+q+o+m+o+o+q+p+o+q+k+q+k+k+c+b+",
|
||||
"S S G M K G G S . .B p k v B B v k k : : : { { = ) ) % $ $ . + . + + + + + + + + $ @ $ $ $ { G m.W. +$+ + + + + + + + + + + + +W.W.W.W.@+K.Q.Q.T.M.q.T.o.q.f.6.V Y ).u.u.N.q.q.q.q.q.N.o.q.T.w.N.q.X.q.T.m.X.q.m.s.m.<...S ..S ..+.2.F.`.!+4+c+e+e+e+l+c+b+i+c+h+h+k+e+h+m+k+i+k+q+p+o+o+o+o+t+o+s+t+t+t+t+s+y+x+t+t+m+x+o+t+o+t+m+o+o+o+o+q+o+p+q+q+q+m+o+p+o+o+m+m+o+i+c+",
|
||||
"S S G M M G G S +. .M p k i v k i 6 6 : - = ) ) = & & @ % @ . @ @ + + + + . + + + + + + + # . $ ^ g r <.H. +$+$+ + + + + + + + +W. + +@+W.Q.Q.W.W.T.t.s.M.s.q.q.i.e.g.Y Y ).1.u.i.q.q.q.q.q.N.q.N.q.q.N.q.q.T.q.s.w.s.f.....S S M M K S G S 2.F.`.'+6+c+c+c+g+c+l+c+e+k+h+h+k+h+h+p+m+i+o+q+q+q+s+o+t+o+s+t+s+s+t+s+t+y+o+y+o+y+o+y+o+t+t+t+t+t+o+q+q+q+m+m+q+q+o+p+q+q+k+n+n+i+c+",
|
||||
"S S S M M S G G S S B p 6 i i k | 6 : ) ) = ) ) = ) % + + . + + + + + + + + + + + + . ; ] ~ y y ..w.Q.$+ + + + +W.W. +Q. + +W.@+Q.W.K.Q.Q.K.K.H.w.m.q.q.i.i.0.R Z @./.g.u.X.h.X.q.q.N.q.N.q.N.q.T.q.T.q.q.m.m.....S S M K G K M B B O +.2.F.`.'+}+b+l+e+l+c+e+c+h+c+k+h+k+k+i+i+k+h+i+m+m+m+s+o+t+o+s+t+y+s+t+x+o+y+t+y+o+t+o+t+t+o+o+o+o+o+o+o+o+q+p+o+o+q+q+o+o+q+o+k+k+l+",
|
||||
"G O G G M G B G O v r 6 6 k i { : : - ) = & @ & = & @ + + + @ @ $ + + + + + + + + + + $ + # . # ] h g y r S m.Q.$+Q. +Q. + +W.W.W.Q.W.Q.W.Q.W.Q.Q.T.t.w.Q.m.m.s.o.3.>.9.Y X %./.[.0.i.h.h.N.h.i.q.N.q.N.i.N.q.q.m.f...+.S S M M M K B B B r B B B +.2.n.Z._+|+c+e+e+c+k+c+e+h+e+h+h+k+k+i+q+o+k+q+q+q+p+o+s+y+s+s+y+s+t+t+t+s+s+t+y+t+t+t+o+t+t+t+t+o+o+o+o+k+q+q+o+o+q+q+o+p+p+q+o+i+",
|
||||
"G G O B B v k v r k 6 6 6 : : - - = & = @ & = = = @ + @ + . . $ $ . . + + + + + + + + + + + $ ~ ^ h c y y y W ..t.W.$+W. +Q.Q.W. +W.W.W.W.K.K.Q.Q.Q.H.T.w.m.w.m.q.f.e.6.Y Z @.%.@.(.x.h.q.i.i.N.i.q.q.i.q.q.q.f.m.......S G M B B B B t t B p p t B B +.|.F.`.~+4+c+k+k+c+b+f+b+h+e+k+i+f+f+g+o+o+i+p+m+o+s+t+m+o+t+o+t+t+s+y+t+t+y+o+t+o+w+t+t+o+o+o+o+q+o+o+o+o+i+i+n+o+o+q+k+q+o+k+k+",
|
||||
"G G G B B p k i | ( 6 6 : : = & = = = = = @ @ = @ . + + . % . + + ; ; + > ^ g y 0 j y y B f.p.H.&+Q.W.W.W.Q.Q.W.Q.K.W.Q.Q.H.M.q.t.w.T.q.q.m.f.f.1.(.Z @.@.*.*.).x.x.i.q.i.q.u.q.q.q.o.f.f.+...S W M W G r B p B B B t p p p p B v G +.2.F.`.^+|+4+b+g+e+c+c+h+c+k+k+k+f+f+i+p+i+q+q+q+o+t+s+y+o+y+y+o+s+s+s+s+y+t+o+s+o+t+o+t+s+s+n+o+o+n+o+o+q+q+k+k+h+o+o+k+o+k+k+",
|
||||
"G G B p p k 6 6 6 6 6 } : = & = & = = = = @ @ % + + + + + + + + + + . + . + + . + + $ ; h c c g g y y y y M m.K.W.W.H.Q.Q.Q.W.K.K.Q.Q.H.Q.T.s.Q.w.q.s.s.q.f.h.e.:.Z X @.*.%.%.).g.i.x.h.q.i.q.h.m.f.f.f.S -.r G B B B B B B p p p p p p t t p p p t B +.2.F.-+^+4+b+e+e+l+l+e+g+h+i+h+k+i+h+i+q+o+o+o+t+m+o+m+t+y+o+y+t+o+y+t+m+y+y+o+t+t+t+o+o+o+o+o+p+o+i+k+o+i+o+o+q+o+q+o+l+o+o+",
|
||||
"v v v i k k : ( ( 6 5 { - & % $ % @ @ @ @ @ @ @ + . + + + + + + + . + + + + + + ; ; ] ^ g h g y g g g y y G ..m.Q.Q.W.Q.Q.H.H.W.H.H.s.Q.s.s.m.T.s.q.q.3.o.f.e.^.Y Z @.].=.].].a.9.e.h.x.q.i.q.f.f...S G O G M B W p r p t k p p t p k p t k k k p p p M S 2.F.-+_+7+b+c+c+c+e+c+c+k+i+k+k+o+i+h+q+q+m+p+p+y+o+t+o+y+t+t+t+t+w+o+t+m+s+o+o+s+o+o+m+q+o+m+o+m+k+q+o+k+i+l+g+o+o+k+k+k+",
|
||||
"v i i 6 i : : : : { : = & & @ @ % & @ % @ . . . + @ + + + + + + + . + + + + ; > ^ h h h 0 c g g y h y y y +.w.K.T.Q.H.H.Q.H.t.Q.s.Q.q.H.m.s.m.m.s.s.f.i.f.^.(.Y @.].%.%.*.*.,.).x.u.i.f.f.3.-.-.O W S y B B p r r r p p p k a k k k 6 k p k i k p j p O +.2.F.-+^+4+b+b+g+i+l+g+g+i+i+i+k+i+k+h+i+q+q+t+o+t+t+y+o+o+y+y+o+s+t+y+o+y+t+t+o+s+o+o+m+k+k+o+n+m+h+i+h+o+o+o+l+k+n+o+o+",
|
||||
"i : : : : : = = = = { = & $ + + . . + @ + . . + + + + + + + * # # ] ] c g g h g g g j c C y y S m.w.T.t.s.K.w.s.w.Q.o.t.s.m.m.m.q.f.m.m.f.e.6.!.,.$.@.].%.%.].]./.).6.e.i.#.-. .S W G B B W B B t p p k k j j j j j k k r 6 k k r 6 k 5 j r O +.2.W.-+^+b+b+e+c+e+c+i+i+h+h+k+m+o+m+o+m+o+o+t+o+t+t+y+s+s+y+t+s+o+t+o+t+o+t+o+o+w+o+m+o+n+i+g+o+p+i+g+g+g+o+o+p+i+g+i+",
|
||||
": } { : { { { ) & & @ @ % + + + + + + + + + . + + + + + + . . . . + + $ # ~ h g ~ g g g h g g y h u C y W ..p.H.Q.H.s.H.w.t.s.s.s.s.t.m.o.q.3.f.f.-.i.^.!.U Z @.%.%.*.%.*.a.).:.i. . .M M K M W r B p t t p k p k p p k k t k 6 6 k a j k k j j k 6 p p O +.|.V.,+^+4+c+e+i+g+i+c+l+i+k+k+o+i+h+q+p+o+y+o+s+x+o+t+t+t+t+y+y+o+y+o+y+o+o+o+o+o+o+o+i+o+o+k+i+k+k+n+n+i+i+k+q+k+l+",
|
||||
": : { { { ) ~ & & & $ @ $ + + + + + + + . @ + + + + + + + + + . . + + + + + + . + # ~ ^ g ~ g g ~ n g h g g g g g c y N f.m.s.m.H.s.t.t.t.s.s.s.s.s.m.}.f.3.i.3.e.:.R Y U @.%.%.@.*.].].).(.>.W W M M M t t t r r B p k k k j k k k k k j j j 5 j k 5 5 6 j 0 j 0 j p B S +.p.V.;+}+8+b+i+c+i+h+k+h+k+h+o+i+o+q+q+o+o+s+o+y+y+t+s+o+t+m+t+o+t+o+o+t+s+o+o+o+n+q+n+g+i+k+o+h+h+g+g+n+g+i+o+i+k+",
|
||||
": { = { ~ { ) $ @ @ & $ % % + . . + + + + + + + + + + + + . + . > # g ] g / g h g c h h g y h y y C W M m.m.s.m.m.w.m.s.s.m.m.f.f.3.f.s.f.f.e.>.R Z X *.X %.@.X /.Z ).~.T K M M K t p B B t p k k k j k j k k 6 j k k k k k 6 6 5 6 6 j 5 0 0 j j j k p O +.|.V.,+}+b+b+k+k+e+k+k+i+k+i+k+h+m+m+p+t+o+t+o+o+m+t+s+o+t+t+t+m+t+o+o+o+o+k+q+o+o+i+i+n+o+k+o+k+i+k+i+i+l+g+k+o+",
|
||||
"{ { ) : ~ = & $ . & @ @ ; . . . . . + + + + + + + + + + + # # ^ ^ ^ ^ h ^ g ^ g g g g h g g g y c y K }.m.m.s.}.m.m.3.m.}.m.}.s.3.f.3.i.-.^.:.R U X Q Z @.Z Y ).~.C A N t t t t t B p p t j k k a k k 0 5 k a j j k 6 5 j k 6 5 5 5 0 j 0 j j p p k r v G +.|.W.,+2+8+b+i+h+c+k+i+k+o+q+i+q+o+o+t+o+t+t+y+y+o+s+t+t+o+t+m+s+s+o+o+n+o+q+g+o+k+i+i+f+i+i+k+g+g+i+i+k+i+k+k+",
|
||||
"- ) { & = = & @ $ . + . + + + + + . + + + + . + . . + + + + . > + + $ # ~ ~ ^ ] n ^ g g g g g g g y g y C y M -.m.m.m.q.}.3.s.}.f.}.f.f.f.i.#.i.-.:.Y U X X Z @.Z R ).A T W K t t B t B t k p k j k j 5 k 5 5 j 6 k k k 5 6 j k 6 5 g 6 a a 5 0 k j j k k k r r B O +.p.`.'+4+e+k+k+k+h+k+m+k+i+p+i+q+t+o+p+s+o+o+m+s+o+t+s+m+s+o+q+o+o+o+o+o+h+o+q+n+n+g+n+k+k+i+i+i+k+k+i+k+i+i+",
|
||||
"- & & & @ @ . @ @ . . + + + + + + + + + . + . . + + + + + + + > > * # # ] [ g ~ h ] g ~ g g h g h c C g y y M ..f.}.f.f.s.f.f.3.i.}.f.3.f.i.-.>.>.R Z X X X Y R R A T W u t t t t t t p p k j k 6 5 j 0 k 5 6 j 5 5 j j j 6 5 5 5 5 0 0 6 6 6 0 5 j 0 j k k a r r B O 2.n.`.^+4+e+i+k+i+k+h+k+i+m+m+m+p+o+o+q+o+t+t+m+t+o+o+o+s+m+t+o+o+q+p+o+i+g+o+i+n+i+h+h+c+i+i+i+g+k+i+k+k+k+",
|
||||
"& & & @ $ $ + + + + . + + + + . + + + . . + + . + + + + . + + + + > + > + $ ; ^ ^ ^ ^ / n h ~ h h c h C h h y y y -.}.q.3.3.f.}.3.3.3.f.f.-.3.-.>.>.R Z X Z Z Z R R A u u u B r t t t p k r k 5 6 5 5 5 0 5 5 6 5 0 j j j p 0 j j g 0 5 5 5 g 6 j 5 j k 6 6 k k k a r k B O 2.H.`.^+4+e+k+k+k+o+o+k+i+o+k+o+p+t+o+t+o+s+o+s+o+s+p+o+o+o+o+o+o+i+h+o+o+i+k+k+i+g+g+g+g+g+g+i+c+k+c+i+g+",
|
||||
"& & $ . @ @ @ + + + @ + + + . + + + + . . . + + + + + # > + > > + ; # ~ n ~ h ^ n g g h h h C c C y y y -. .f.f.f.f.f.f.f.-.f.-.f.-.-.T R R Z Z ~.w ~.A u u y t t t r B t p k 6 5 6 j 6 6 6 6 j 5 5 5 5 5 j p 0 p 0 5 j 0 0 0 0 5 5 5 5 5 5 5 k j 6 j t k k y r B +.<.F.-+^+8+b+g+k+o+o+q+k+m+q+q+o+o+o+s+m+o+s+s+p+o+t+q+o+q+o+p+q+l+i+g+i+i+i+l+k+c+i+i+c+b+g+g+g+g+g+b+g+",
|
||||
" @ @ & $ + + + . + + + + . . + + . + + + + + + + # + > * + > > + > > > ; * ~ / ~ n ^ ^ g g h h C h C C C W W #.3.3.#.f. .-.f. .f.-.-.-.T R R d Z d R A A t t B B t B B B k p 6 k 5 5 5 6 5 5 j j 6 6 5 p 5 k k j p j j j 5 5 j 5 5 j 0 0 0 5 5 6 5 6 k p 6 k j p p r G +.2.V.)+^+8+k+g+k+i+i+m+k+o+o+o+o+q+o+t+s+o+p+q+q+m+o+o+m+o+o+o+f+o+i+n+i+i+f+i+i+g+b+g+f+g+b+b+b+j+g+g+",
|
||||
"$ @ ; + . . @ + + + + + . + . + + + . . . + + + + + + * + + > # > ' > > + > + * # / ~ n g n ^ g g h h h C n A T W -.f.f.#.f. .f.-. .-.#.-.V C w R R A A A A u t B t p k k r k k k 6 k 6 } } 5 5 6 j k 6 6 6 5 p j p p p p 5 0 5 5 5 5 0 5 5 0 0 5 j 6 5 5 6 j j k j j p k p G +.p.V.~+}+c+i+k+q+k+q+k+q+q+o+m+q+q+q+m+s+m+o+q+m+p+o+i+n+g+o+i+o+h+i+i+g+i+l+i+g+g+g+c+f+g+j+g+j+j+g+",
|
||||
"@ @ + + . + . + . + + + + + + + . + + + + + + . * * + + + # ; # + + + + ' + > > # # # / # ^ g n g h h g y y C A y T -.3.-.f.-.-. .f.-.-.^.n A d A A A A A u t t k k p p j k k 6 5 5 6 6 } j 0 5 5 j 6 k 5 j 5 p t B p p k j k 6 6 6 k 0 5 6 0 5 j 5 0 0 5 5 6 6 k k 5 t j j p k G +.n.V.^+4+e+k+k+q+o+o+o+o+o+q+o+o+o+t+o+n+o+q+q+o+p+o+i+f+n+n+f+i+k+i+i+g+f+g+g+b+b+b+b+c+8+9+8+8+8+",
|
||||
" . + + + . + + + + + + + + + + + * + + + + * + ' > * # * * * > > > + # # # # # ^ / ^ ^ n g g h y n y y T T N -.f.-.-.-.-.-.-.W W y n C C A A A u p t t t p k k r j j 5 k 5 5 6 6 5 : 5 5 } 5 5 k 6 6 k p t B p k j j 0 6 j 5 6 0 j j 5 5 j k j 0 j 5 6 0 0 k 6 j j j t k t M 2.n. +|+0+k+l+k+q+k+q+k+o+q+n+o+o+q+q+o+o+o+h+o+k+o+i+i+k+g+g+i+i+k+c+g+i+g+g+8+g+f+g+g+c+g+g+b+g+",
|
||||
" . + . + + . + . + + + + . + + + + + + * + + + * + > > > ; # + * > > > * * * * # . / ~ ~ ~ n g g n y y V C T T #.-.-...-...W W y y n h l h y u t p p p k k k k k 6 6 6 6 6 5 } 5 j 5 5 } 0 0 5 0 j 5 j p p p p j k k j 0 j 5 j 0 j j 5 j j k 6 6 j 0 5 j k j 5 k k j j j j j B M 2.F.>+^+8+o+l+k+o+o+o+k+o+o+n+k+o+o+n+o+i+q+i+h+i+o+i+i+i+i+i+g+g+i+c+b+f+g+8+8+b+b+8+b+c+b+b+c+",
|
||||
" @ . + + . + + + . . + + + + + + + + # + + > + + # # # # # > * + + > + + ; # > * # # # # ~ g h n n h n y y V W V -.-.-.-.W W r y n n n j 0 u j j k k k t k k a 6 6 5 } 5 6 a 6 6 6 } 5 5 5 5 0 k 6 k k j p p v 6 6 6 5 5 p j k k j j j k k k j j 5 j j 5 0 k j 0 j j j j k r k p M S 2.V.)+}+c+o+o+o+o+o+i+n+o+f+o+o+o+o+p+i+o+n+i+g+i+i+l+g+i+i+i+g+g+i+b+8+g+g+j+9+j+8+b+8+j+9+8+",
|
||||
". @ . + + + + . + + + + + + + . + + . + + . . + + + # . + + * * + + # # # # * # # ; * * * * # # # * * # . / # # # ~ g g n y y y C W W -.-.-.W W y y y g c u j j r k k k r k r k a k j 5 6 6 } 6 : a } 5 k 6 6 6 5 j j k p k p k i 6 i 6 6 j 6 j k k j k k p j j k a j j j j g j 0 5 5 j 0 j j j k k k r G +.n.`.)+4+c+k+k+o+i+q+n+o+n+g+g+n+i+i+o+g+i+k+k+g+g+i+i+i+c+b+g+i+8+g+b+8+8+8+8+e+j+9+b+8+b+j+",
|
||||
". . + + + + + . + + + + + . + + + + + # . # * + + * * + # * * ; * * / # # # * * * * # * * * # . # # # ~ n g n n n W V T W -.W W y y n ^ g 0 0 j j j 6 k k 6 a 6 k 6 6 6 a a 5 6 5 6 5 0 5 a 6 k j j 6 6 k k k k k j 6 6 6 6 5 t p j j p p k j p t t t j j j j 0 j a 5 j 0 5 j j j 5 a j k k p B +.p.,+<+8+i+k+o+i+k+g+i+k+i+i+n+g+f+i+i+i+f+i+i+i+c+c+i+f+8+j+b+8+j+j+b+8+j+8+b+8+9+8+9+b+b+",
|
||||
" + + . . . + + + + + . + * + # + * + # + * * + * * * + * * ; ; > * * # ; # + + > * * * * * * # * ~ # g h y C N P W W y a g ~ g g 0 g j j j 5 j 5 6 k k a a 6 5 5 5 } } : 6 5 5 j 5 j j j 6 j j k a k p k t j j 5 5 5 p p t p p p t t t t p t j u t t y k k 5 j 5 j 5 5 6 6 g j 5 j 6 k r O 2.F.-+^+e+o+k+l+o+k+k+i+n+g+i+i+i+f+k+i+h+i+g+c+i+g+b+b+b+8+g+j+8+5+j+b+b+9+8+9+8+9+8+9+9+",
|
||||
" . . + + + + . + + + . + . + . + + + * * * + * + + + + * + + > > ' > ' ' * * ; * * * * > > + * * * * # . # * # # ~ n g y y y y y g ~ g ) } } 5 g j j k j 5 5 5 k 5 6 6 6 6 6 6 5 5 } 6 j 0 j 6 6 k t p 5 k k k k p p p p 5 5 j t t t t B t M B B B t p p t u j t j j k j 5 g 5 5 0 5 k 5 5 5 j j j k r G 2.V.)+4+b+o+n+m+g+i+c+i+i+i+k+i+f+i+i+i+0+c+c+c+f+0+g+8+9+8+j+b+8+9+8+b+9+8+9+j+2+j+2+b+",
|
||||
" + . + + . + + . + . + + + + . * + + + + + + + + + + > > ' ' * * > > * * > > ' > * > > * > > > * * # * * # # * # # / ~ g g y a ~ ~ ^ ~ { ~ } 5 6 5 6 k 6 5 j 6 5 6 a 5 } 5 } 5 5 6 6 6 0 p j j k 6 k j j k k p p p t t t j 5 p p t M B B M B B B K B t t t p t t u j j j 0 5 5 5 5 5 [ [ j 5 5 j j j p r ..p.V._+8+b+k+k+k+g+g+g+g+i+i+c+i+8+g+0+i+g+8+g+8+b+0+8+j+9+8+9+8+b+j+9+b+j+b+b+9+8+8+b+",
|
||||
"+ + + + . + + . + . + + + + + * + + > + > * * > * > > * * * * * ' / ' / / * * > * * ' * * * + * * * # * # # # # # / * ~ ~ ~ ~ ^ % ] ~ [ { } [ 5 6 5 5 : 6 5 6 5 0 } 6 6 5 [ 5 0 j 6 j j p p j p k k p 6 k k p p p B K t t t t B B M K B M t K M K t K B t t K t j u 5 k j } 5 } [ 0 j 5 5 6 : 6 j y p r M ..H.`.}+4+b+i+k+i+c+c+b+g+g+c+i+8+g+c+0+b+g+b+c+e+e+0+9+9+8+b+8+b+6+7+b+4+8+b+b+2+9+b+",
|
||||
" . . + + + + + + . + + + . + + + + # + + + + * > * ' + * > * * ' * ' ' ' ' > / ' > / > * * > + * * # > > * * * + * * * # * # # # ~ . & & % ) ) } { [ } 5 } 6 6 5 } 6 } } 5 5 0 } } 6 5 5 j j j p p p p 5 j k k p k p p p M K K K K B B M B t M K M M M K K K K K K K t t t k k j 5 0 [ 0 5 [ [ [ [ } 6 j k k j 6 p O 2.W.'+7+j+i+i+b+8+j+8+8+9+8+b+8+c+c+b+8+5+8+b+8+f+8+8+8+9+8+b+8+b+8+6+9+b+9+9+b+2+4+",
|
||||
" + + + + + . + . . + + . + + + > * + > * + ' > + * * ' > ' > ' ' ' ' ] _ ' ' / ' / * > ' ' ' ' ' * * * * + * * * * * # * * * # & . & # = { ~ } } [ [ 0 } } 6 6 } 6 5 } 6 6 5 6 5 6 6 j p p p p p k p p j k i k p B t B B S K M K K M M B M B K M G M K M K B M M M M t t t k j 6 0 } } } } 5 5 g [ [ j j k j 6 6 v O p.V.'+2+b+g+g+0+b+b+8+8+9+b+9+9+8+8+b+8+8+b+b+b+b+9+8+9+7+7+9+b+9+b+4+4+b+b+b+j+4+",
|
||||
". . + . + + + + + + + # + + * + + + + * + > * > ' ' ' ' ' _ _ ] _ _ _ _ ' _ ' _ ' ' ' ' ' ' ' * * * > > > + * + # # # ; $ . & & % = ) ) } ~ { 5 [ 5 5 } } } } 0 } 6 5 } 0 5 5 6 5 p u B t p p k j p p p p t B B B M M K M K M G G G M M .M M .S K S M M S M K B t t j j k 0 5 5 5 } } [ [ } [ 0 [ 5 0 5 5 5 6 v +.H. +4+4+b+b+b+8+9+8+j+8+9+8+8+8+9+j+9+c+c+6+8+7+6+b+4+c+b+7+7+b+7+b+j+3+2+4+b+b+",
|
||||
"+ + + + + . + . + + + + * * + > + ' > + * * * * ' ' _ ' ' _ _ 3 _ 3 _ ] 3 _ _ ' ' ' ' > _ ' ' ' ' ' ' ' > * + * + + + $ $ $ $ $ & ) { [ } } } : } } } 5 } 5 5 } 5 5 : 6 } 5 6 j k p t K K B p p k p p k k p K K B B G .K S .M K S S K .#. . .K . . .S S S O W G p t t t k 0 0 [ } [ [ { [ } [ } 5 } [ [ 5 [ 6 k O 2.F.~+|+b+b+j+8+9+8+9+8+9+8+9+8+6+8+8+9+8+6+9+b+7+8+6+8+b+9+7+b+2+b+6+b+2+2+2+b+",
|
||||
". . + + + + + . . + + + + # + + * * * > + > * * ' ' ' ] ' 3 3 _ d _ ] d d _ 3 _ _ _ 3 ] _ ' ' _ ' _ ' _ ' > ' ' + * + + % @ & $ % ) { [ ) [ : } } } } } } 6 } } 6 6 [ 0 0 5 j k k B p B K t t p r v p t p B t M B K K K S ...S . .S G . . .}. . . . . . .O S S G B p p t j k 6 0 0 ~ 0 } [ { } { } [ } } } [ 0 [ 5 k +.p.`.)+7+b+b+j+2+b+6+9+8+2+8+7+8+4+7+6+9+7+8+7+8+9+2+4+6+6+9+2+b+7+j+2+9+b+b+2+",
|
||||
". . + + . + + + + + . + # + + + + + # + + * > > ' ' ' ' _ _ 3 ] d _ d d 3 d 3 _ _ d ' 3 3 3 _ ] ' _ 3 ] _ ' ' > + > + # . & ; ; & = ) % ) { } } [ : : } [ [ 5 [ : : 6 } 6 6 } j 6 j p p t B K p K p p p p p B t K K G M K M .....+.+. .......}.}.}.}.}..... . . .+.O G B r p k p j j 6 [ 5 [ [ } } : : { { ~ } ~ } { } } } 6 r +.F. +_+6+b+8+9+j+6+7+8+7+8+7+b+4+9+6+9+7+8+4+b+8+9+9+2+b+8+2+3+b+7+2+2+4+b+4+",
|
||||
"+ . + + . + + + * + # * + * > + + * * > ' ' ' > 3 ] d d 3 d d d 3 d 3 d _ d d d 3 _ 3 3 3 3 _ _ ' _ ' _ ' > ' * + + % % $ % % & ) ) ~ ) } } } : : } } } 5 } 5 5 : g 6 6 5 j 6 p t B v B B B t p p k p p B t B K K K S M ...........+.....}.<.}.<.}.<.<.........S O G t p k k j p 6 [ 5 [ } } { } ~ { } { { ~ ) ) } [ } } ( r O 2.V.>+2+4+b+4+b+2+2+7+6+7+6+6+b+b+2+7+6+6+b+6+4+4+4+8+7+2+b+8+2+4+b+b+2+4+2+",
|
||||
"+ . . . + + + + + + + > > > + + > + ' > ' ' d _ _ d d d ] d 3 d d d d d d d d d d 3 3 d 3 3 3 3 3 _ ' ' > ; + . $ + % @ & ) = { } } } { : { { { } } } 5 6 g } 5 0 } k k k r p p B v v B B t K p B p p t B K K G M ... ...+.......<...<.<.<.n.2.<.<.+.<. .S S S O G y p k k 5 5 6 } } [ : { { } ~ { { { } } ~ ~ { { { ~ [ 5 r S p. +<+4+b+4+8+8+8+2+8+4+4+7+7+b+6+7+2+6+4+9+8+6+2+b+4+4+2+8+b+2+4+2+j+4+4+",
|
||||
" + + + + + + # * # + > > > + > > > ' ' ' 3 ' _ 3 d d d d f f f d d d d d d d f 3 d d d d d 3 3 _ ' ' ^ ; + ; $ $ @ & % & ) { = : ) { } } } { ( : : } 6 } 6 5 } 5 0 5 j k p p t p p k p p B t B B B t B p K B K K K S ........+.<.}.<.....<.<.<.2.+.2.+.....S +.S M G G r r k j 5 6 } ( ( { } ~ } ~ } { ~ ) ) ) } } ~ { } [ ~ } 5 M ..K.>+<+4+b+3+b+2+6+7+9+7+4+4+6+7+9+7+7+7+|+4+7+6+7+4+7+b+2+2+j+2+3+2+2+2+",
|
||||
"+ + + + + * + + # # # * + > * * * ' ' ' _ d d d ] d d d d f o o m f f d d d d m f m m d m d 3 _ / / * * $ ; % $ & = & ) { { : : ) [ } [ { 6 : } : } 5 5 0 j k k t t p B r r p v v p v p v B B M p B B B G S S ......}.....}.}.<.<.+.2.+.<.+.<.+.+.+.+.S G O B r r r k 6 6 } a { } { ~ { ~ { ) ~ { ~ ( = { ) ) ~ { { ~ } g : k S 2.W.>+1+b+3+4+2+4+4+b+4+4+2+4+4+7+6+4+b+7+2+7+6+7+4+7+2+6+2+2+7+b+2+e+4+",
|
||||
"+ + + + + + + + # # * * + + * > * ' > ' 3 3 ] d d d d m d m w m m m w m m m m m f m m d d m d _ / ' > ; % $ & $ % $ = & - { } ) { { } } } } } } } } 6 [ } } k 6 k j t t p B r r k k k p p k p t K M K B K G G S K ...}.+.<.....}.<.<...<.+.+.+...+.....+.O S B B M r B y j 5 } } { : { ~ ~ ~ { { = ) % ~ ) - ~ { { } ~ ) [ ~ { [ 0 t .p. +<+2+j+2+b+2+7+6+2+2+4+2+2+6+7+6+7+4+6+7+}+4+7+2+b+1+4+7+4+7+2+2+3+",
|
||||
" . + + + + # * * # + * * > ' ' ' _ _ _ d d d d d w m d m m m z z m w m m d m m m m m d 3 3 / / * # ; $ % $ & $ & & & = & = { ) : = ) : ) } } } { } } 6 5 0 0 k j p p k r r v i r v t t p B p B B K K B K B M K S ....}...<.}...}.2.2.}.+.}.....+.+.+...+.S O G M p B r B r 6 6 ( } ) { { ) [ ) ) ) = ) ) { ~ = ) = { ) ) ) [ [ ) } [ k M <.Q.-+^+3+7+4+4+1+6+4+b+6+4+4+4+7+4+7+7+2+2+2+4+2+7+4+2+3+a+2+4+2+2+4+",
|
||||
"+ + + # # > > ; + > # * + ' * * ' ' 3 _ d l d d z m m m z z z m m m z z m m o z z m w d _ _ ] ' # . $ & & & % & & = - = { - { { : } } } } } } 5 : 5 5 5 0 j j p r p k r i r v i p t p v p B B M M M M K .S S ..S ..}.}.2.<.}.}.}.2.<.2.....+.S +.2.+...S G O v v r r p k a { } { : ~ ~ ) % ] ) ) % = = & ) ) = ~ ~ ~ ) ) ) % ) ) [ } k +.n.@+]+}+4+2+3+4+2+}+}+2+4+4+2+4+7+2+2+6+4+6+a+4+4+2+7+|+4+2+3+4+2+3+",
|
||||
"+ + # . # * * # * > ' * ' _ _ 3 3 d d d m w m m d z z m z z z z z m z m o o m w d l / ] ' ; % $ @ $ % ) = ) & % $ ) = - { : { ) { ) } } } g } } : 6 k p p p p p k p k k k r p p p t t B B M S M S S M S S S .... .}.}.2.<.2.<.2.<.<.2...2.+.G S S ....+.+.B r r k p r k 6 a ( { = { = = ) & % ] ) ) ) & ~ & ~ ~ ~ ) % ) ) { ) ) ) ) } 6 B ..W.]+<+4+2+3+3+4+7+}+7+2+|+}+4+4+4+2+2+4+4+2+2+2+2+a+}+4+2+a+2+2+2+",
|
||||
"+ # * # * * > # * * * ' ' _ _ 3 d d d w m m m z z w z z z z m z D z z z z z w f l n / ^ > % % $ & ; ) % { ) ) % % ) & = = - { : { } } } } } } : 5 0 5 j t p k k k k k k k k p p B B M M B M G S S G .S ......+...}.}.<.}.2.<.<.2.<...+.....S +.G G +.S G O v r i k j a i a : { { ~ = { = & = & & & & & & & ~ & = = & ~ ) ~ ) { { ~ ~ ~ { r O p.W.{+2+4+2+4+<+2+2+}+}+4+4+2+3+2+7+7+2+|+4+2+|+4+4+3+3+2+2+2+4+3+",
|
||||
"+ + # # + # > > > ' ' _ _ 3 3 d f f f m w m z m z m z z w z z z D z z m w m l l ' ] > $ $ @ & % & % ) % [ ) [ ) % ~ & = { = { { } { : ) } 5 0 5 5 5 p p p p i k 5 j j k p k p p B B M K B .S +...S S S +...}.+.<.}.<.2.2.2.2.2.}.<.2.......S S S O +.G O v k | a a k : ( ( : { ~ = = = = ) & & & & & ) & $ % % % { & $ = { % ) ) ) ~ ~ } a B <.H.&+<+4+1+3+}+}+1+^+2+2+^+4+4+4+1+2+2+}+4+1+2+2+4+2+2+2+4+3+1+3+",
|
||||
"> > # * * * * ' ' _ _ d 3 f d o f f o w z z w z z m z z Z z z z z m w w f l ] ] ; ; $ @ $ & ) { ) } } [ } [ ) ) ) { ) } ) [ [ } : 6 5 5 6 p 5 p i p v k k 6 p 5 p p r B t t M G S G K S .S +.......+.+.}.....<.}.2.2.+.2.|.+.<...2.+.S G M G G v v i 6 6 6 a 6 } { } = ~ & ) & = & % $ $ & % % & $ @ ~ % % $ ) = ) ~ ~ % ) ) ~ ~ ~ } j S n. +{+]+3+}+1+}+^+4+2+2+2+}+1+2+|+^+2+2+2+3+2+4+2+}+4+2+1+1+2+1+",
|
||||
"* * + > ' ' ' 3 _ d d m f m f o o o x z m z m z z D z z z z z z z w l l _ ' ^ % & % @ % % @ = = = { ) [ [ } } [ ) ) = % [ } [ } j 6 6 6 5 j p k i i p k p 6 6 k p p p p B B M M S ..S S ....S +.....+.....+.....2.}.2.2...<.+.2.......+.G G B M B p i i | } } { : } } ) = { = & & & % % % & & & $ $ & ; % % ~ & & % & % ) ~ = ~ ) ) ~ ~ { g t .Q.{+{+3+^+1+2+<+^+|+2+1+|+^+2+2+}+}+1+}+2+3+1+2+1+2+1+1+1+^+3+",
|
||||
"+ + * * ' > d _ d d m z z z z z o z z z z z o z D X z z m z m w d l / ] ] ; & = @ = @ & % & = & = { = : [ } } 5 } [ { ) [ } } } } 6 j k k k p p p 6 i k k j 6 k k t p B p p M M S ..S +.+...+.+.....<.<.+...+...2...<.<.+.....+.+...2.+.O G G B B p 6 6 : } 5 } } ~ : { = { @ & & $ % @ @ % % ; $ & & ) $ $ % $ & % ; % $ & ~ & ~ ~ ) ~ ~ [ t -.w.Q.{+{+3+{+<+<+2+<+1+}+1+1+}+}+}+2+}+}+2+<+2+1+3+^+3+^+1+1+1+",
|
||||
"* * * * ' ' d d w m z E E E z z U U z U z z m z z X z w w w d l _ ] ' ] % ; @ = = @ = & ) - ~ { { { { ) 5 [ } } [ ) [ ) } [ 5 6 k p k k k k 6 i 6 i p j p p k p t t M t B G S S ......+.+.+.+.<.<...<.......+...+.<.+.+...+.+.+...+.G O B v v p p 6 6 5 0 5 } { & = = & $ & @ & $ $ $ & $ . $ $ ; @ @ & & @ & $ ~ ) $ % ~ ~ ) ~ ~ ~ ) [ [ [ 0 K m.K.]+<+4+3+^+<+^+<+^+_+}+1+1+2+1+2+1+}+}+}+2+2+1+2+3+<+1+]+2+",
|
||||
"* * ' ' _ 3 3 d m m Z E X X X z X D U z z z z z z z m f d d c ] ^ > ; % + $ & = - = & & & = ) ) { ) } } : } } } } ) } 5 : 5 j t t k r a i i 5 k 6 p p j t p B B B B M M M S ..<.<.+...<. . .<.}.<.<.<.......+.+.+.+.+.+.+.O G I G G v v i i 6 i : } } 5 : } = = & ) @ @ & . & + $ & & @ $ $ $ $ # & $ & & = & $ & ~ ~ $ % & ] % ) ) ) ) h c W f.T.W.{+]+]+3+1+1+_+2+<+1+^+^+^+^+1+1+1+}+]+^+1+3+]+<+3+]+2+]+",
|
||||
"' ' / _ 3 3 m d z m z E X E Z Z X D X X D X D Y w w w l ] / ] > $ % % & @ & @ $ @ = - = ) = - = = } { { [ : } } { } } : 6 : 5 k p p r k 6 k k 6 k k i k p p G G M B B M M .+.+...}.}...<.<.<.<.<.2.}.......+.S +.+.+...+.O O G v v v e i k 6 : : ( : 5 } : - = = $ $ $ . & . & + + + $ @ @ $ @ & . $ # & @ & @ & $ & ~ $ % % % ) ~ ~ ~ ) ~ 0 N -.q.@+$+{+1+{+{+2+<+_+<+1+3+3+1+^+<+_+2+4+3+^+1+<+3+<+1+1+<+3+",
|
||||
"/ _ f 3 f m z m f w z Z z Y Z Z Z D X Q D Z z z f d _ / / ; % & & $ @ & % & & & & = & { { } [ { } = } : : } } } } } } } } 6 6 6 p a 6 a 5 j k k i p B p p B B B M K M M .S ..+... .<.<...+...2.}.2.}...........O +.S G G G v v v v i k | : : ( : - : ) { = ~ = ) $ & . $ $ + % $ $ ; + $ ; ; $ $ & & ; $ $ # & $ & $ ~ % ~ $ & ~ ~ ~ 0 h T e.f.T.&+{+{+2+1+{+^+]+^+{+<+<+<+1+1+1+<+<+<+3+{+3+<+<+<+<+{+<+",
|
||||
"3 f f o m z z x o z z z z Z z Y Y Z E X X z w d l _ ] % $ $ & @ @ $ @ & % & % & & & ~ = - { } ) ) } { { ( : : : 5 5 } [ } } } 6 6 5 k k k k j k k r r B B p M G S G K G S .....+.<.+.<.+.+.<.+.+.}.+.}... .+.S S S S S O G v B v k k i 6 6 { - - { - = = ) = & & & $ & & @ & # + $ % $ $ # + ; + $ ; + ; % % $ ~ ; ; ; ; ; ] ~ ~ ~ ~ / g 0 T -.3.s.W.]+]+{+3+]+^+]+4+{+^+]+_+<+<+<+3+^+<+1+<+{+]+2+]+1+]+]+",
|
||||
"f f o z D z U x x D D D z Z z Z z X Z E Z w l / ; % ; $ & & & & & $ & = = & % % ) ) ) { } { } { } } { } [ a } 5 [ 5 5 5 5 : : } 0 6 6 6 6 5 k p p p B B B B G K S G S M ... .....+.+.<.+.+...2.+.<.+.+.<...+.+.S O S O G v p i p p p k 6 { - - = = = = = & % $ & . . . + $ $ $ & $ ; % $ $ % ; ; % $ > ; ~ ; ~ ] $ ^ ~ ~ ~ h g C T e.-.q.T.&+{+]+)+3+3+{+]+<+<+4+]+^+^+]+^+1+]+<+]+4+^+<+<+<+3+]+",
|
||||
"m m z z X D D E x D D X z Z z X z z z Y w d ^ ^ . & @ = = = & & = = = ) & = { ) { } } } } ) } } 5 [ 6 5 a 0 5 5 6 6 6 : } } : 6 6 j p k p B t M M M B G S S S S S .S ....+.+...+.+...+.+.+.+.+.+.+.S S O S G O G B p i k p i k 5 : } & & = & = @ & & $ @ $ . & & @ + + ; ; + ; > ; ; ] % $ $ $ ; ; ; ; ; ; ; # ; ; $ ^ ~ ^ ^ ^ ~ h C P ^.-.i.f.m.T.)+]+<+]+]+^+{+]+<+<+]+<+<+]+{+^+]+}+]+3+]+<+]+<+<+]+",
|
||||
"o z z z E Q E D E D D X X Z D Z z z Y w w l # . @ % & @ & @ - = = & % & = = { { { { } } } } } [ { } } k 6 k j 6 5 6 6 : } [ } } 5 5 6 5 k B p t M M M M S S .S S S S S +.+... .....+...+...I +.+.S S O O O G O G G B v k i 6 6 k k 6 : & & & @ & $ @ . @ . . . + @ + + + % + % ; ~ ) ] ] ] ; + ; ; ; ; ; $ # ~ ~ ] ; % $ ] ] ^ h A A T T ^.-.f.q.T.%+{+{+{+<+]+]+^+<+)+_+]+{+^+2+]+<+1+<+<+1+{+<+]+]+<+",
|
||||
"x x D U Q Q Q Q D D X X X Z z Z z z z w ] ^ $ . $ . @ @ @ = = = = % % = = ) { { : : { [ } } } [ : 5 5 6 k k 5 6 6 } 5 6 } } { } : 5 k p p B B B M K K . . . .S S S ..S ..+.+.+...S ..S .. .+.G I O O G O I B G B v e 6 6 6 6 | 6 : } { & & % & % $ $ $ $ . $ $ $ & + $ + % > % + ; # ^ ~ ] ; ~ $ > > % > ; $ ~ $ # ~ ^ ^ ~ ~ ^ h h c A ~.:.>.^.-.i.f.T.++$+]+{+<+{+]+]+<+]+1+<+]+]+1+]+{+]+]+]+]+3+{+]+]+]+",
|
||||
"U x U D D U Q Q E D E z Z z z X Z z w d / + @ @ . . @ @ & & = & ) ) ) } = } ) } : : : } : } : { } k a 6 6 a ( a 6 5 } } [ } 5 5 j p p B B B K B S S . ... . .S O S S +.+.+...+.+.S +.S S S +.G G v v p v v v i e | | : : : } : { { = & % @ & @ $ $ . $ . . + > > ^ ^ ~ ^ ; ^ ^ ; ; ; ; + ; $ $ ~ # ~ # ^ ] ] ] h c R ~.T -.^.^.^.-.h.q.T.&+{+]+{+]+]+_+<+)+<+]+<+3+)+1+]+3+{+<+<+{+3+]+]+]+",
|
||||
"z x &.D Q z X Q U X X D U X Z z R w l _ ^ + + + . & = = = { { } } } } } } : } 6 6 : 5 6 a 5 6 a a : : ( : } 0 5 } 0 [ 5 j k B B t B M G S . . ...+... .S S ..S +...+.+.+.+.S +.S S S G v v i i i p e i 6 | ( : 6 : { { - = ) & = @ % $ $ . @ . . $ . . $ . # + + + ; ; > ; ; ] ~ ~ ; ; > % $ $ ~ ; ; ~ ; ] ~ ] h h C A T T ^.-.-.>.^.-.-.q.T.%+]+]+]+]+]+{+]+]+<+]+<+]+]+<+<+<+]+]+]+]+]+]+]+]+",
|
||||
"x D x U x x Q Q E Q Q U D Z z z w h h # . $ + . . $ % = { { { { { } } } } : : 5 5 0 } } a 5 } a 6 5 : 6 [ } ( : 5 } 0 5 0 p k p M M M G G G +...+.<.<.........+.S +...+.+.+...S +.+.S G G v p i 6 6 i 6 i 6 ( ( - ( ( { ~ ( = = = @ @ = & @ @ $ . $ $ + + $ + $ # > + + + + > ^ ^ > > > ^ ^ # ; $ # $ $ ; % ; ^ ^ ] ^ g h A P T T ^.-.-.^.-.>.-.i.i.q.Q.&+{+{+{+]+]+)+{+]+)+]+<+<+]+]+]+]+{+]+<+]+]+]+]+",
|
||||
"Q Q x Q x x Q Q Q Q D x z w l h l ; $ . . @ @ & ) = ) ) { { : } } 0 5 5 0 5 6 6 } 5 a g a : 5 } 6 } } : : 6 5 5 j u p p M M M M M S S ..+.+.<.+.<.S ......+.S ....S S ..+.G O G G v v 6 p 6 | 6 : | ( = & { = { ( & ~ & @ & @ . & $ $ $ + . + + + $ + + # + . + $ $ $ # ; ] ] ] > ^ / ] ] ; $ ~ # ~ ; ] ^ ^ ^ h h C C R T :.>.V -.-.^.>.>.-.#.e.q.T.%+]+]+]+]+]+]+{+]+]+]+]+)+<+)+<+]+]+]+]+]+]+]+]+",
|
||||
"Q Q &.x Q x X X Q Q x z w d l ] $ # . $ . + @ . = = ) { { } : } } 0 5 6 6 5 6 : 6 6 } : : } } : } [ : : } 6 6 p p p t t B M G S S S .. .+.+.+.+.<...+.+.+.+.S +.S +.+.+...S O G p v 6 e 6 6 : : : : { - = = = - ~ & & & $ . . & . $ ; + + + ; + + # + ; $ $ + . . & # ; ] ] ; ] ] ] ^ ~ # # # ; ^ $ ^ ^ h h n V V T ^.T ^.-.^.>.-.e.-.>.^.e.i.q.&+$+]+{+{+]+]+>+]+]+{+{+]+]+]+]+]+]+{+]+]+]+]+&+",
|
||||
"Q Q x Q U x U Z U U x o l ^ # $ $ $ @ @ + . $ @ = ) { } { [ } 5 5 [ 5 k 6 6 6 a 5 a } a } 5 0 6 a : } a } j j p p t K K K M S K S +.S ..+.+.+.+.+.<.+.+.S +.S G S O S G G O I v v 6 i 6 | : : : { - { ) = = & = = & @ & & & $ @ $ $ $ $ % % + + + $ + # ; > # # $ + # . ] ; ] ] ] > > ] * ~ ~ ; ^ ; ^ ] h h C A T T >.T -.^.T -.-.>.-.-.-.-.-.e.f.q.T.$+%+{+$+{+]+@+)+@+]+]+]+]+]+<+]+&+]+{+]+&+]+]+",
|
||||
"Q Q &.x x w '.z U x w l _ * . . + + @ @ @ & ) ) ) ) } : } 6 j 5 6 k 6 a } { ( a } a : } 5 : 5 6 } k k p t B B K S K S S M G S +.+.+.+.+.+.+.+.+...+.S S G O O O G G O p e 6 i 6 : : } { - ( - @ & & = = & & . @ % . . + . + # $ $ . # . + > ^ ; ; # $ # + ; ] > ^ ; ; ; > ^ * # ; ; ] ] h c c R T ^.T W -.T >.-.-.^.-.-.-.-.e.>.-.e.i.T.%+$+]+]+{+]+]+<+]+]+>+]+@+]+]+]+]+$+]+%+]+]+&+",
|
||||
"Q U Q x '.w !.w Y x w l / $ + $ % @ $ % & & ) ) [ { ) : : : k k 6 6 5 6 5 6 6 : [ } 6 5 6 6 6 a 6 k p p t B M S . .S S S ..S ..+.+.+.+.+...+.+...S O G B v B v v B v i i : | 5 : : = ) & ~ = = & $ $ = = @ & . @ $ @ # $ . # . . # # + ; ; + ; ^ ^ ; ; $ . ; ; ] $ ^ ^ ; > > ^ ; ^ ^ ^ ^ h c R A P T T >.W -.T >.^.W -.-.^.-.-.-.^.^.i.f.q.%+%+$+]+]+]+&+@+<+]+<+]+]+]+]+]+]+]+{+%+%+%+]+",
|
||||
"U U w '.n V n V w w l / + # @ @ $ + $ % = = { { ~ ( } 5 6 6 6 6 5 5 5 } a 5 6 5 5 } 5 6 a 6 6 k t B B M M S S S ...S S S S +...I +.+.S +.S O S +.G G v p v s v p i 6 6 : : : } { { = = & . @ @ @ $ @ . & @ @ . . + @ $ + # @ . # # + ; ; > > ; > # # # # # # ^ # ; > > ] > ^ ; ] h h c A P T T W -.W ^.T -.T -.-.T -.>.^.-.-.e.-.e.e.i.T.&+%+%+&+]+]+]+]+&+&+]+@+]+%+]+%+]+%+{+{+%+%+",
|
||||
"U R V y -.W W y n n / # . + + . . + @ @ @ & $ % @ % = = = = { { : } 5 6 } : } [ 5 5 6 5 6 5 5 k 6 6 a 6 k p B M B M G S .....S . .S S S ..+.I O S G S O S G G B r e a e i i i 6 : } : ( { - - & & & $ $ % $ $ @ & . . $ & $ + . . $ . # . + . . + + > ; ] > ; > ; $ # $ ^ ; ^ # ; ; > ; > ] ^ c c C C R T W T W -.W V ^.T >.T -.>.-.>.>.^.>.>.-.e.i.q.N.&+&+{+%+]+$+$+]+]+]+]+]+]+]+:+$+]+]+/+%+%+]+",
|
||||
"n V r O s I O G W h ^ # # . . . . . % $ $ % $ % % = ~ ) & { = = } [ } } : } 5 j 5 k 6 k j 5 a k k r k k p B K M M G S S +.........S S S +.S G S O O G G G G G B k k : i 6 i 6 : : ( { = ~ { = & & $ @ & @ $ $ . + ; . $ . + . $ + + + + + > + > > ] ; ^ > # # ; ; > ; ; * > ] > c _ c A C A T P T T W W W W -.W -.-.-.^.^.>.>.1.>.6.-.>.^.h.f.q.T.*+]+]+$+]+]+$+&+]+@+]+&+]+&+/+:+&+]+%+/+%+",
|
||||
"r q 8.q 8.I I s r g ; @ . . . . + . @ @ @ & ~ % & = = ) = ) - ~ : { } { ( } } 5 5 j 6 k k k k p j p r p B B G M S S S O S S S ....+...O O O G G r v v B B B B v k 6 : : : : : : : ( { { { = = & $ $ $ $ % + + # . @ $ + $ @ . $ ; # + ; ; + + ; ; + $ ; > ; ^ > # * ; > > > ; ; > ] ] c c w A T W W T -.T >.W -.T ^.V W -.W -.W -.>.>.>.^.^.e.^.e.h.q.%+%+%+%+%+%+]+]+&+]+&+]+&+]+$+&+&+&+]+%+%+%+",
|
||||
"s s H H H H H I v : } . . . + . @ & = ~ % ~ = = & = & = & = ) { - ( { : 6 6 k 6 6 k j k p j B p t t B M .S S S S G +...+.....S S S S M G B B i v i v i i k 6 ( { ( { ( ( : { { = = $ & = @ & ; $ $ # + + $ + + ; $ + + > ; + + + ; ; > ; # > > ] > ^ ; ; > ; ; ; ; > ] 3 c l A A P A T W P T P W T T W T -.-.V -.-.-.-.-.-.-.>.-.-.e.-.i.q.q.%+]+]+%+]+&+&+]+&+]+@+]+&+]+]+]+%+%+%+%+%+",
|
||||
"H H H J 8.J F F s : { $ + . + + . . . @ = = ) ) = & & = = = = & ) = { { } 5 a 6 6 6 p t p B B B G M G G S .S S S .G S G S ......S S G M B r p i i i i i i a 5 } { { ) = { - = = & = $ $ & $ . + + ; + + + & $ @ . > > + ; > ; # ; > > + + + # ; ; ; > > ^ / + ; > > > > ; ] ] c A c C A P P T T P T T W W >.W T T -.T -.^.^.^.-.-.-.e.^.e.0.h.6.q.q.N.*+$+%+]+%+]+%+%+&+%+]+%+%+%+%+]+]+%+%+X.",
|
||||
"H J J L L J J q s i { & . . . . . + + % & & ~ = = ~ = ~ = = = { = = = ( ( : : a a p j B t K t M B G M S G S S S S G G G +.S S S S S O G G M r r 6 i 6 6 e ( 6 6 : ~ { - { = & & = = & & & . $ @ % . ; + + + @ . @ # ; + ; ; ; ^ # $ > ; + + > # / # ^ > ^ > # ; > > ; ; > ] ] ] l h C R T C A C W T T W -.W W -.T ^.-.T -.P W >.-.^.>.^.-.-.-.^.e.e.i.X.T.%+%+/+%+$+%+]+&+]+&+%+]+%+%+%+%+%+%+%+X.",
|
||||
"J L L J L J J F s i { = & . . + @ @ & & & ) & & = = ~ = = = ~ = = = ( : } : 6 p t K M M M M M S G .S I S +.S S S G G G S S S G G r r B v r 6 6 a ( : : { } : ~ { = { - = @ @ @ & @ & $ $ $ + + + . $ + + + $ > > > + ; ] ; ] ; ; . ^ ; # ^ ; ; ; ^ # $ + > > > ] _ l c c C C A A C W y W W T T T T T W W T -.^.-.>.-.T -.^.-.>.e.e.e.^.^.e.i.q.N.%+&+%+%+{+*+@+%+%+]+%+&+]+%+%+%+%+%+X.X.",
|
||||
"J L L L J J J q F i : { & @ . + + . $ @ % % & & & = ~ . = = = - ~ { = { { 6 6 6 p M M M M M M G S O S S G +.G +.+.G S G M G G G G B r v v a k a a ( : : : : : { { ~ { & & = & $ . $ $ . # + + ; + + . . . + ; + > > % ; ; > > ] ^ ^ > > . ; ] # > > > $ # # # # > ] ] c h C C h A C C y C T y W W T T W T T >.W W W >.T >.-.>.-.>.^.>.^.5.0.5.0.e.i.T.T.%+&+%+%+&+%+@+&+%+%+%+%+%+%+%+%+X.X.x.",
|
||||
"L L L L L J J F F e i : = & @ @ . . + . . @ @ $ % $ & = = ~ = = . - & & ~ { { 6 6 k B M M M G S G G S S S .G S O G S O S G M G S G O B r i e r k | : ( ( { = = = - - & = @ @ & @ $ $ . . @ # + + + + . $ + ; ; + + ] > > ; ^ ; ^ ^ ^ ; > # # ] ; ; # ; $ . . # > > / h l l l A C C A n y y T C T y W V T >.W >.T -.W -.W ^.^.>.^.-.-.e.^.5.e.0.e.i.i.X.T.%+%+%+&+]+%+%+%+&+%+@+%+%+%+%+%+X.X.x.",
|
||||
"L L L J L J H H F s e ( - @ . . $ @ $ & & & & & & & { { ) ~ & & = = : 6 6 p B G S S M M S S S G G K G G S +.S S G G G G G v p p a i 6 6 | 6 ( ( - = = = = = - = & $ . . $ $ . + + % ; + + + + $ + + $ > > > ; ^ ; / ^ ^ # # ; ; $ ; > * ; # * # # # # ] d c h c C h C c C V y y y u W V W W W W T T -.W -.-.V >.-.>.>.0.>.-.e.^.0.5.e.u.u.N.X.%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+%+X.x.x.",
|
||||
"L L L L J L J H q q e e , - @ @ @ + . & $ # = = = ~ & $ ) ~ ) ~ = = ~ { } k j B G S S G G G G G G G G G G G M G G S G G B v v v i k 6 | < ( < ( = ) = = = @ = & = . = & $ . $ + $ $ + + + $ + + + ; + ; + + + + ; ; ] / > > ^ ^ ^ ] ^ / > > ; # ; * > ; # * * * * ; ^ h h n y g C u C y y V V C V V W V T W -.W T W V -.^.T -.#.>.1.~.e.^.e.e.i.h.e.u.q.X.T.*+%+&+%+%+%+%+%+%+%+%+%+X.X.X.h.x.z.",
|
||||
"L L L J L J H H H q q 7 4 , - . . . @ . + . & # ~ { = ~ & & & { = } { { { = = { 6 k t M S S O S S M G M .G B B B B M G G G v B r i a k a 6 : } - - - - = = ~ = ~ & @ @ @ @ . . @ $ $ . . . . + + + + + $ + ; ; ; + > > $ ; ; ] > ] * ^ ; ; > ^ ^ ; # ; > ; > + # * * ' * * # / ^ h / g n C h C y C C y y y T y V W W P T W -.^.-.>.>.>.>.^.^.>.>.0.e.e.e.6.0.i.h.i.N.X.%+%+%+%+%+%+%+%+%+%+%+X.@+@+X.x.x.a.",
|
||||
"L L L L L L J J H H q b 1 ! , - @ @ . @ . & & % [ ~ ~ ~ & & { { ) { ~ ~ = { : k B B G G S O G G G K M M K M G B B B B B v p p e i 6 | 6 ( : { = = = = @ = = @ . # @ . . $ @ $ @ $ + ; > + + + + ; > > ; ; + * # + + ; ^ ] # # ^ ^ > > ] ; > + # + ; * # > * ^ * / # * * ^ g g g h y n C C A V C W C T T T T -.P T T T V ^.W -.^.>.^.^.e.^.^.e.u.e.x.x.h.X.N.X.X.%+%+%+%+%+%+%+X.X.%+X.X.X.x.x.z.'.",
|
||||
"L L L L L L J J L q H q b ! ! , @ @ @ . @ ) [ c 0 [ ) ~ & ) } } } ( { { = 5 p B M S G S O S G .M K G K B B B B B p v p i 6 6 i : : : : { { = = = & # @ # . @ @ & @ @ @ $ . + + + + + ; + + + + + * ^ ] ^ + $ + ; ; ; ] # ~ ^ $ # ; # ^ ; > # * > * * / * / / ' ' * ' / * / / / n C h C C A C y y C T T T T W T -.W -.-.>.>.>.>.-.^.^.^.e.e.e.0.e.x.x.i.x.u.X.N.%+X.%+X.%+X.%+%+%+%+%+X.@+x.x.z.z.c.",
|
||||
"L L L L L L L L J J 9 q 9 1 ! , - @ . @ . @ & } 0 0 6 { = = ) } 5 5 : { { ( 6 p B S G G S G G G S M G K B K B B v i i i 6 6 | : ( : { : - ~ = { & & & % ) & . # . # # # . $ @ . + $ + > + ; > ; ; ; > > ] > # $ + + > + ^ ; ^ ~ ; ; # # * ^ ; # / > / * / * * _ _ ' ' ' / * / / h ^ n h C C C y y W y C T W T T T T W W -.W ^.>.>.>.>.^.-.e.>.e.e.i.i.h.u.u.u.X.X.T.X.%+%+%+X.%+X.X.X.X.X.x.x.g.z.D.c.",
|
||||
"L L L L L J L L L L J J q b ! ! , . @ . - { 6 6 5 } ~ ) { 6 } 5 0 g ~ { 6 p G M G K M G G G G B B B B B B p e v k k k : : : : { - & ) = = & ~ & ) ) % ; $ $ . + $ # . + + % % > + + ; % ; ] ^ > + ; $ $ > ; * ^ # # ^ ; ; ; ^ * * * * > / / / / ' ' 3 _ / / / * / / ^ h c l n y y C C C u C A W V W W -.T T >.W ^.>.>.-.^.>.e.e.e.i.h.i.u.i.x.i.N.N.X.%+X.T.X.%+X.X.%+X.X.X.x.x.'.D.c.C.",
|
||||
"L L L L L L L L J J 9 J 9 q 9 2 , , @ @ . . @ = : : a : { & ) { 6 j t 0 0 5 ( 6 i B G G G B M B B B B O B B B v i i k 6 6 : { { & { ) ) = & = = & & % ) ) [ ] ; ; + + . . . . @ . + > > > > ] % > + ; > ; $ ~ * ; # + $ > > ; > ^ # * / # ; > > * / / ' ' _ _ _ 3 _ d 3 _ / / / ' / ' / c h h C C C T C T W V C V T T V ^.^.>.T ^.>.>.>.-.e.>.e.6.e.6.h.h.u.h.x.X.X.X.X.%+X.@+X.%+X.X.X.X.x.z.g.D.z.{.y.",
|
||||
"L L L L L L L L L L J L J 9 9 2 ! - - @ @ - : : { = { = { 5 j t t t 5 5 6 i v B B B B B B v v v v p v k i k 6 6 6 : { { { = & & @ @ & & & = ~ & ) ] [ ) ) ; $ + . . & & . $ # + > % + ] % > > + + > ; ; ; / ; * > > ; $ ; ; ^ # # ; ; ^ * > > / * / ' _ _ _ 3 ] d _ _ 3 3 3 3 _ _ ] / ^ l h C A C C C V C T T T T -.T V >.T ^.>.^.0.^.e.^.e.e.i.h.u.u.x.q.u.i.i.N.N.X.X.X.X.X.%+X.X.X.x.x.U.'.D.&.y.c.",
|
||||
"L L L L L L L J J J J q q J 9 q 2 , - @ @ . . . @ - - { = = { : a k B t t j k 6 6 i k v B v v v i p i i i i i 6 6 6 : : : { = = = % % $ @ @ @ @ @ & & { [ h ) ) % + + + + . + ; + > + ; ; % > % + % + ; # $ ^ ; ; # > ; ; ^ ; $ / ^ # # * / / * / * * / / _ _ _ 3 3 3 d _ _ _ _ _ 3 3 _ ^ l h h C C C V V y V P R T V ^.V ^.>.-.^.-.-.^.i.^.e.6.i.i.e.u.u.x.u.u.X.X.X.X.%+X.X.X.X.X.X.x.x.g.z.'.D.c.y.c.",
|
||||
"L L L L L L L L L J L J J q J 9 9 ! , - @ @ @ . - @ - & & ) { i v r K M t j 6 6 6 6 i i i i 6 p 6 i i i | i : : : : : - = = = & & . @ @ @ @ = = ) [ ~ ) . + $ # + ; + ; % ; ; # ; ] ; > + ; $ ; # ~ # * / ; ; > ; ; # # ; # * / * * * / / / / / _ _ _ 3 _ ' 3 ] d 3 3 f _ _ _ _ _ / / l h C C C y V T T ^.T T V T ^.V ^.-.-.e.>.e.e.6.h.h.h.u.u.h.x.X.i.u.u.X.X.X.X.X.X.X.X.x.x.g.z.z.c.D.&.y.7.",
|
||||
"L L L L L L L J L L J J H J 9 9 9 2 ! , - . . . . @ @ @ @ & = : 6 p B M M K j 5 6 : : i | i i 6 6 5 6 | 6 : | : { : - = - = @ & ; $ % . . . @ . . @ @ % ] ~ & + + ; + + . + ; > > % ; $ ; ; ; ; ; > + . $ ; # ^ ; * / # # > > / * / * # * ' / ' _ _ ' / _ _ _ 3 3 3 _ d 3 3 d 3 d 3 _ l _ _ _ / l l l C C C C R A T T T ^.W V ^.^.^.-.6.6.i.e.6.x.e.e.u.u.i.x.x.N.u.N.X.X.X.X.X.X.X.x.x.U.z.&.c.c.c.c.c.c.",
|
||||
"J J L L J L L J J L L J L J J J 9 b ! , - @ @ . . @ . @ @ = { a r v B M M t p 6 : : : | 6 6 i 6 6 6 | | : { - - = & = . @ @ $ % . & @ $ @ @ $ . = & $ $ + + + # + ; % ; $ + ; . ; ; > > > + ; # # # ; ; ^ > ; / # ^ # ; / * / / ' ' _ ' _ _ _ _ _ _ 3 ' d 3 _ _ _ _ 3 3 _ 3 _ 3 h d _ 3 / ] l n n C V A T :.T V -.V -.^.^.-.0.-.e.e.h.h.h.x.u.e.i.x.u.N.x.Y.N.u.X.X.X.X.X.x.x.g.z.z.c.B.c.D.y.y.7.",
|
||||
"J J L L L L L L L J L J 9 J H 9 L 1 b ! , - . @ . @ . @ @ = - < e v G B G t p 5 } - = : : 6 6 | 6 : : - - { = = = & = = # & . . . . . . . . . @ @ @ . @ + . + > ; ; $ . $ # ; ; ; ; ; # ; # # # # # ^ ^ ; ; # # # / # / > / / / _ _ 3 3 _ _ f 3 3 3 3 3 _ l 3 _ d d l _ 3 3 3 d _ d _ ] l l n C C V R T R V V -.V ^.^.>.e.e.e.e.6.6.e.x.x.u.u.i.u.u.u.u.Y.N.X.X.x.x.x.x.x.z.z.z.&.C.c.c.c.c.A.",
|
||||
"H H J L J L L J L L L L J L L q J q b 1 ! , @ . . . - - < i i B G M p p : } ) - - : : 6 | : : = { = = = & = . @ @ @ @ . $ @ @ @ @ $ . . . # . + + ; ; + ; $ + + ; $ # $ ; ; > ; # . # ; ^ # ^ ~ $ * > / # / / > / ' / / _ 3 3 3 3 3 f f _ 3 f d d 3 d d 3 3 3 _ f l 3 _ _ _ _ _ d _ _ / h l C n C T V V -.V ^.^.^.6.^.>.0.0.i.e.u.e.e.x.x.u.u.u.u.X.u.X.X.X.x.Y.x.g.z.z.c.D.B.c.B.c.C.7.C.",
|
||||
"J J J J L L L L L L L J J J J H 9 J 9 9 1 , = @ . . . @ - - | i i v p i k } { = - = - { : : ( : = = = & % & . $ . $ + + . + + # . . . # + # + # + $ . . # $ # # > # # ~ > ; * > > > > ^ ; ^ ; # ^ * ' ' _ _ _ _ _ 3 3 d f f 3 f f f d d m d f f 3 f f f 3 _ 3 3 3 3 d 3 3 _ d _ ] l h n V V V V -.-.V ^.^.^.6.e.e.0.x.h.u.u.e.x.x.u.u.u.u.Y.x.X.x.X.x.U.z.z.z.c.c.c.c.D.c.B.B.C.C.",
|
||||
"L J J L J L J L J L L L L L L L J J q q b | , - @ @ . . @ . - < < i e i i 6 : { ) = = - { - { - = = = = & $ + + $ . $ % . . . + + + + # . + . . + + + + + # # . $ + ; ; ; ~ # * ; / $ $ / > ^ ' ^ # / ' ' / ' _ _ _ 3 d d d d d d m m d f f d m f f f f f 3 f 3 f f f l _ l _ 3 3 d _ _ l / l n n C V V V V ^.^.^.^.6.6.0.6.e.e.6.x.x.e.u.x.u.Y.u.u.x.x.x.U.U.g.z.z.D.B.B.c.B.c.B.c.C.C.C.",
|
||||
"J J J J L L L L L J L J L 9 L H q H J 9 q 7 , - @ @ . . . . @ - - , | | 6 : : : = & ) % & & - = = = = = & @ & @ . . + . + + + . . + + + > + + + $ ; # # > > + > ~ ^ # ; * # ~ # > ^ > / * * * / / _ _ d _ d d d d d m d m d d f m m d m m m f f f f f f 3 f f f _ f l 3 _ d _ _ / l l n n C V V V V ^.-.e.^.0.0.6.x.6.e.e.x.x.u.u.u.u.u.N.Y.x.Y.g.z.z.z.B.c.B.B.c.C.B.B.B.B.B.B.",
|
||||
"J J J J L L L L L L L L L J L L L J H H q q e , - . @ @ . @ - - ( < ( 6 } { { & % @ @ & @ & & & & @ @ $ . . $ + + + + . + # + + + # + + ; ; + + # # + + $ ; ; ^ # / / ~ ^ * # ] ' * ; * / / _ _ _ d _ d d d m d m m m m m d d m m f m f m m m f f f f 3 f _ f f 3 f _ 3 _ f 3 3 / / l h n n V W W ^.^.^.0.5.0.0.h.e.x.x.u.0.x.x.x.x.x.x.x.x.U.z.z.z.z.B.B.B.B.B.B.c.B.c.C.C.B.",
|
||||
"L J L J L L L L L L L L L L L J J H J q q q q | - = @ . @ @ . = - - , - { { ) = = % & = @ & @ @ & . . . . + + + + + + + + + + + . . + + + # + + + # # ; ; + # / ; ; ; # * # ^ # / > ' ' ' ' ' / _ _ _ d d d d d m d m z z m z m d m m m m m m m f o f f f f f f f 3 f f l 3 d 3 3 3 _ _ _ l l n n n V V W -.^.0.0.0.0.e.0.1.u.u.6.h.x.x.x.x.g.g.z.g.B.B.c.B.B.B.c.B.B.B.B.B.c.B.B.",
|
||||
"L L L L J L L L L L J L L L L L L L J J H q q e | : = @ + @ . @ @ - - { = = = = @ @ . . @ . @ . . + + + + + + + + + + . . . . # + ; + + > . $ $ ; + # # ; > > ; / # ] ] ^ # ^ * > * / / ' / / _ _ 3 l 3 d f m m f o m m w z m z z m m m m m o o o o o o o f f f f f f 3 f f f f f f f d 3 3 _ l n n y y V ^.V ^.e.6.u.0.u.e.x.6.x.x.9.U.g.g.g.x.a.z.B.c.C.B.B.B.B.B.c.B.B.B.L.C.B.",
|
||||
"L L J L L L L L L L L L L L J L J J H H H q F q v : : - = + . @ = - = { = & & . @ . & + # . + + + + + + + + + + + . + . + + + ; > + + $ . $ # ; > ; ; ] ; ^ # > > / ; / * ^ ' ' ' _ _ _ 3 _ 3 l f d m m m m w o z z z z D z m z o o m m o o o m m m m f o f f o f f f l f f 3 _ l l 3 l _ n n n n V C V V ^.^.6.6.6.6.6.9.9.x.g.9.g.z.z.z.z.a.c.c.B.c.z.B.c.B.B.B.c.B.B.B.B.",
|
||||
"L L L L J L L L L L L L J L L J L L J J J H H q F s i : = @ + . . $ @ & & @ & = % @ $ @ + + . + + + + + + . + . . # . # # + + + > + + ; # # ; * ; ; ; > > > ] $ / ^ > > ' * * ' ' _ _ _ 3 f f f d d d f m m z z x x w z D D z D D o o f o m m m o o m m o o f o o m m f o o f o f f f f l f l / / n n n y n n V V -.^.6.9.9.9.[.g.g.z.z.'.z.'.z.B.c.C.c.z.c.c.B.c.B.B.B.C.B.R.z.",
|
||||
"L L L L L L L L L L L L L J L L L L L J J H H H F q e i { = @ . . @ & & & % & & % @ @ . . . . + + + + + + + + . # + + . + # + + $ $ + + + > + + # ; > > > ] ; ^ * ^ ; # # * * / / / ' _ 3 3 _ 3 3 o m m m w f z m m o m x w m z z z z z z x z x m z z m x o m f o m o f o z o o o o o o m f f f f f f f / _ l n n n V n V V !.6.!.(.(.a.a.a.a.B.c.z.z.c.B.c.C.B.B.B.B.B.B.B.B.c.B.R.B.",
|
||||
"L J L L L L L L L L L L L L L L J L J J J J H H F F F s 6 { & . @ @ & @ $ $ + + + + + + + + + . + . + + + + + + # # ; + $ + > ; ; ; > ; ; ; ^ # # > ^ / ' > / / / ' _ _ _ 3 3 f m d m m w m z z w x z o m x o m z z z D x D D x x m D z m z o x m m x x o o w o o o x o o o o f f f f f f f l l n o l n !.w R !.!.,.,.a.a.a.c.c.c.B.c.B.B.B.c.B.c.B.c.B.B.a.B.z.B.z.z.",
|
||||
"L L J J L L L L L L L L L L J L J L L J J J J H _.H F I v 6 = @ + + . $ & @ & & $ $ + + + + + + + + + + + + . + . . . . . + + + # # + + ; ; > ; ; ^ ^ * / # / ^ * > + ; / ' ' ' _ _ _ f 3 f f f f o o z z w z x x w o w x x x z z m z z z z D D z m D z z z D m D D x x x o x x w z z o x o w o o f f f l f l f f w o o w U U Y ,./.=.c.c.c.B.B.a.L.B.L.B.R.B.B.B.B.B.B.B.R.B.B.B.B.B.",
|
||||
"L L L J L L L L 9 L L L J L L J J J J J J J J H H H F I s p { & . . + + @ ; @ & + . + + . . . * + + + + + + + + + + + + + + + + + + > + ; ; $ + ; ; # $ ^ ; $ ^ # # # * * / ' ' ' _ 3 3 d f f f f f o o o o z z o w x x x x z x o x m D m D m D z z z z z D x x x x m z x o x x z z x z x w x o x o x o o f f f f f o w w x U w Y U *.].c.].a.a.c.R.c.B.a.R.L.B.B.C.L.C.L.B.B.R.R.B.B.B.B.",
|
||||
"L L L L L L L L L L L L L J L J L J L J L J J J j.J _.F F e : % + + $ $ @ + + + + + + + + + + + + + + + + + > + > + > > + ; ; * # ; > > > ^ # ~ ^ # ; * / / * ' / _ _ _ _ 3 f f m m z o o o m x x x x x w x x o x z x x x o z m z z E D D z D z E D E D D D D D x x x D D D D z U x w z z z o x o o f o w z z U Y U X X %.*.].].c.c.c.C.a.B.R.B.c.R.c.R.B.C.L.L.B.R.R.R.B.B.B.B.",
|
||||
"L L L L L 9 L L L L 9 L L L L L L J L j.L J L L J J H H F s 6 ) % + + # @ & $ . # + + . + + + . + + + + + + + + + + + + + + + + + # + ; > * ; ; ^ ; ; ^ ~ / # # / * # * * / / _ ' _ 3 f f o o o m o z o x x x x o x x x w x o o x o x x x o D x D z z z x o D x D x Q D D D D U U z x E D z D U U x x U z z z w x o z z z z U E X U *.*.&.*.c.c.c.c.c.c.R.].R.R.R.B.R.c.L.c.R.R.R.R.R.R.O.O.R.",
|
||||
"L L L L L L L L L L L L L J L L L J J L L j.L J J J J _.F q e : @ + + + . . @ . + + + + . . + + + . + + + + + . + ; + . + > ; ; # > ; > > > / # # ^ # # / * * / _ _ _ _ _ 3 3 f f o o o z m z z D o x o x o x x x o o x x x E o o o x o D z z z x x x x D D x E E E D D D D E E X D X z U z E D z z z z z U U D U X X ;.X ;.;.;.c.c.c.c.c.B.B.c.R.c.L.].L.B.L.c.R.L.c.R.R.R.R.R.L.R.",
|
||||
"L L 9 L L L L L L L J L L J J L L L j.L J J J J J J J H F q e : = ; + + . . . . . + + + + . + + + + + + # . . # + ; + > ; # $ + + > ] > ] ] ^ ^ # ^ * * * / * / / * / _ _ f f 3 f o o o o z o o o o o x o x o o x x x x x o x o x x D x x x z D D x x x x x x E Q Q D X X X X Q X D X Q Q D U Q D X D X X D D D U X X X X %.;.;.7.;.c.c.c.c.c.].R.a.R.a.L.R.c.L.R.c.R.R.R.a.R.R.R.L.R.O.",
|
||||
"L L L L J L L L 9 L J L J L J L L J L J L j.L J j.J J H H q 1 e = % + . + + + . . . # + + + + + + + + . . + + + + + + + + + + + ; ; $ # ^ # ] > > > # ^ * * > * * / / * _ _ f _ _ _ f f f o m o o o o o x o x o o x x x x o x x x x E x x o o o x z z D x x x x x x Q Q E Q D X X Z z Q X Q X E X X D U U E X D X U D X X X X ;.;.;.%.;.c.c.c.c.c.c.C.c.R.c.L.a.L.R.R.a.L.R.c.R.R.R.R.R.R.R.R.R.",
|
||||
"L J L L L L L L L L J L L J L J L j.L J L L J L J H J H L q b | - @ + + . + . . . + + + + . + + + + . + + + + + + + * # + > ; ; > > > ~ # # ^ ; ] ^ ^ ^ # * / * * / * _ _ _ _ f f f f f f o f o o o o x o x x x o o o x x x x x x D x x x x x x x D D x D x x x x x x x D D E X D z Z X X X U X X Q Z X X Z X X X X X X E %.;.%.%.%.;.c.%.c.7.c.c.B.c.c.a.R.L.a.L.].L.R.R.R.R.a.R.R.L.R.R.R.R.R.R."};
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* Module: rbutil
|
||||
* File: wx_pch.h
|
||||
*
|
||||
* Copyright (C) 2005 wxWidgets team
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef WX_PCH_H_INCLUDED
|
||||
#define WX_PCH_H_INCLUDED
|
||||
|
||||
#if ( defined(USE_PCH) && !defined(WX_PRECOMP) )
|
||||
#define WX_PRECOMP
|
||||
#endif // USE_PCH
|
||||
|
||||
// basic wxWidgets headers
|
||||
#include <wx/wxprec.h>
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include <wx/wx.h>
|
||||
#endif
|
||||
|
||||
#ifdef USE_PCH
|
||||
// put here all your rarely-changing header files
|
||||
#endif // USE_PCH
|
||||
|
||||
#endif // WX_PCH_H_INCLUDED
|
||||